一、单项选择(共20分,每小题2分)1、面向对象的软件开发过程的正确顺序是:()。
A.设计、分析、编程、维护、测试 B.分析、设计、编程、测试、维护C.分析、设计、测试、编程、维护 D.设计、分析、测试、维护、编程2、以下选项中不属于面向对象三大特征的是:()。
A.继承 B.多态 C.重载 D.封装3、()是C++的合法标识符。
A._Student B.namespace C.ip@address D.2016C++4、int a=20; int b=a++; int c=++b;上述语句全部执行后a、b、c的值分别是()。
A.20、21、22 B.21、21、21 C.21、20、22 D.20、20、215、关于类的友元,下列说法错误的是()。
A.友元关系不可传递B.友元关系是单向的C.如果类A是类B的友元,那么B的全部成员函数都是A的友元函数D.类外部访问本类成员不一定要通过定义友元函数的方式6、类的静态成员具有下列()所述的性质。
A.静态数据成员不属于任何一个对象B.静态成员函数只能通过类名访问C.静态成员函数只能访问静态数据成员D.静态数据成员在类中初始化7、把乘法运算符*重载为某个类的成员函数与非成员函数时,分别需要()个形参。
A.1,2 B.0,1 C.2,1 D.1,08、所谓抽象类是()的类。
A.用virtual关键字继承 B.带有虚函数C.带有纯虚函数 D.在程序代码中用关键字abstract说明9、下面哪一个不是预定义的ostream类对象?()A.cout B.cerr C.clog D.cin10、有如下程序段try{…throw “exception”;…}catch(int){…} //①catch(char){…} //②catch(…){…} //③catch(char[]){…} //④则try块中抛出的异常将会被()捕获并处理。
A.① B.② C.③ D.④二、填空(共15分,每空1分)1、面向对象方法中的对象,是系统中用来描述客观事物的一个实体,它是用来构成系统的一个基本单位。
对象由一组和一组组成。
2、引用是一种特殊类型的变量,可以被认为是另一个变量的。
3、面向对象方法中的,是指对具体问题(对象)进行概括,抽出一类对象的公共性质并加以描述的过程。
4、C++程序中对象的初始化和清理工作,分别由对象所属类的两个特殊的成员函数来完成,它们就是和。
5、C++中标识符的作用域分为函数原型作用域、、局部作用域(块作用域)和。
6、在类的继承关系中,父类又称为,子类又称为。
7、在C++中,当类的继承方式为公有继承时,基类的公有成员和成员的访问属性在派生类中不变,而基类的成员不可直接访问。
8、类型兼容规则是指在需要基类对象的任何地方,都可以使用类的对象来替代。
9、多态从实现的角度来讲可以划分为两类:的多态和的多态。
三、程序阅读(共25分)1、在答题区给出下面程序的运行结果(4分)--函数调用(传值、传地址、引用)#include<iostream.h>void swap(int x,int &y){int temp;temp=x;x=y;y=temp;}void main(){int a=40,b=10;cout<<"a="<<a<<" b="<<b<<"\n";swap(a,b);cout<<"a="<<a<<" b="<<b<<"\n";}#include<iostream.h>void swap(int x,int *y){int temp;temp=x;x=*y;*y=temp;}void main(){int a=40,b=10;cout<<"a="<<a<<" b="<<b<<"\n";swap(a,&b);cout<<"a="<<a<<" b="<<b<<"\n";}2、在答题区给出下面程序的运行结果(5分)#include "iostream.h"class test{private:int num;float fl;public:test();int getint(){return num;}int getfloat(){return fl;}~test();};test::test(){cout<<"lnitalizing default"<<endl;num=0;fl=0.0;}test::~test(){cout<<"Desdtructor is active"<<endl;}int main( ){test array[2];cout<<array[1].getint()<<" "<<array[1].getfloat()<<endl; }3、在答题区给出下面程序的运行结果(4分)#include<iostream.h>class A{ int a1,a2;public:A(int i,int j) {a1=i;a2=j;}void print() {cout<<a1<<","<<a2<<endl;}};class B:public A{A a;int b;public:B(int i,int j,int k,int m,int n):A(i,j),a(k,m) { b=n;} void print();};void B::print(){A::print();a.print();cout<<"b="<<b<<endl;}void main(){B b(4,5,6,7,8);b.print();}4、在答题区给出下面程序的运行结果(6分)#include<iostream.h>class Pet{static int m_No;public:Pet() {cout<<"NO"<<++m_No<<"Pet() is called"<<endl;} };class GrandParent{public:GrandParent() { cout<<"GrandParent() is called"<<endl;} };class Mother:virtual public GrandParent{public:Mother(){cout<<"Mother() is called"<<endl;}};class Father:virtual public GrandParent{public:Father(){cout<<"Father() is called"<<endl;}};class Baby:public Mother,public Father{Pet mPet1,mPet2;public:Baby() {cout<<"Baby() is called"<<endl;}};int Pet::m_No=0;void main(void){ Baby zBaby;}5、在答题区给出下面程序的运行结果(6分)#include<iostream.h>class fruit{int Qlevel;public:fruit() {Qlevel=3; cout<<"请尝水果"<<endl; }virtual void taste1(){cout<<"这水果味道好极了"<<endl;} void taste2(){cout<<"我是美国"<<Qlevel<<"号苹果"<<endl;}int & QualityLevel (int & zQL ) {zQL=Qlevel; return Qlevel;}};class Orange: public fruit{public:Orange() {cout<<"请尝橙子"<<endl;}void taste1() {cout<<"这橙子味道美极了"<<endl;}void taste2() { cout<<"我是美国特大号橙子"<<endl;}};void main(){Orange zOrange;fruit *ptr=&zOrange;int zQL=8;ptr->taste1();ptr->QualityLevel(zQL)=1;cout<<"我是中国第"<<zQL<<"号大橙子"<<endl;zOrange.taste1();ptr->taste2();}四、程序填空(共10分,每空2分)1、请将以下程序中不完整的地方补全,使程序执行后输出:Width:10 Height:20(本小题4分,每空2分)--封装、继承、包含多态#include <iostream>using namespace std;class Rectangle{public:(1) {Rectangle(int w,int h)width=w;height=h;}friend ostream &operator<<(ostream & out,const Rectangle &rec);private:int width,height;};ostream & operator<<(ostream & out,const Rectangle & rec){out<<"Width:"<<rec.width<<" "<<"Height:"<<rec.height<<endl;return out;}int main(){Rectangle rec(10,20);(2) cout<<rec;return 0;}2、请将以下程序中不完整的地方补全,使得执行后的输出和代码后提示的输出一致。