1、OOP技术:面向对象程序设计期末复习指导 面向对象程序设计课程系中央电大开放教育本科计算机科学与技术专业统设必修课程,本课程的期末复习以中央电大下发的资料和网上复习指导为准。为了加强期末复习,下面市电大给出一套综合练习题,仅作参考。 综合练习题 一、单选题 1、 C++源程序文件的默认扩展名为( )。 A:cpp B:exe C:obj D:lik 2、 用new运算符创建一个含10个元素的一维整型数组的正确语句是( )。 A: int *p=new a[10]; B: int *p=new float[10];
2、 C: int *p=new int[10]; D: int *p=new int[10]={1,2,3,4,5} 3、 假定有“struct BOOK{char title[40]; float price;}; BOOK *book=new BOOK;”,则正确的语句为( )。 A: strcpy((*book)->title,”Wang Tao”); B: strcpy(*book.title,”Wang Tao”); C: strcpy(book->title,”Wang Tao”); D: strcpy(book.title,”Wang Tao”); 4
3、 假定指针变量p定义为“int *p=new int[30];”,要释放p所指向的动态内存,应使用语句( )。 A: delete p; B: delete *p; C: delete &p; D: delete []p; 5、 关于消息,下列说法中不正确的是( )。 A: 发送消息的对象请求服务,接受消息的对象提供服务 B: 消息的发送者必须了解消息的接收者如何相应消息 C: 在C++中,消息的发送具体体现为对接收消息的对象的某个函数的调用 D: 每个对象只能接收某些特定格式的消息 6、 对于任一个类,用户所能定义的析构函数的个数至多为(
4、 )。 A: 0 B: 1 C: 2 D: 任意个 7、 do语句能够改写为( )语句。 A: 复合 B: if C: switch D: while 8、 假定AA为一个类,a为该类公有的数据成员,x为该类的一个对象,则访问x对象中数据成员a的格式为( )。 A: x(a) B: x[a] C: x->a D: x.a 9、 假定AA为一个类,a为该类私有的数据成员,GetValue()为该类公有函数成员,它返回a的值,x为该类的一个对象,则访问x对象中数据成员a的格式为( )。 A: x.a B: x.a(
5、) C: x->GetValue() D: x.GetValue() 10、 假定AB为一个类,则( )为该类的拷贝构造函数的原型说明。 A: AB(AB x); B: AB(AB& x); C: void AB(AB& x); D: AB(int x); 11、 关于运算符重载,下列说法正确的是( )。 A: 重载时,运算符的优先级可以改变。 B: 重载时,运算符的结合性可以改变。 C: 重载时,运算符的功能可以改变。 D: 重载时,运算符的操作数个数可以改变。 12、 下列对派生类的描述中错误的说法是:( )。 A: 派生类至少
6、有一个基类 B: 派生类可作为另一个派生类的基类 C: 派生类除了包含它直接定义的成员外,还包含其基类的成员 D: 派生类所继承的基类成员的访问权限保持不变 13、 C++程序的基本模块为( )。 A: 语句 B: 函数 C: 表达式 D: 标识符 14、 以下叙述中不正确的是( )。 A: 在一个函数中,可以有多条return语句 B: 函数的定义不能嵌套,但函数的调用可以嵌套 C: 函数必须有返回值 D: 不同的函数中可以使用相同名字的变量 15、 文件包含命令中被包含的文件的扩展名( )。 A: 必须是.h B:
7、不能是.h C: 可以是.h或.cpp D: 必须是.cpp 16、 软件产品可被全部或部分地再用于新的应用的能力叫做软件的( )。 A: 可维护性 B: 可复用性 C: 兼容性 D: 正确性 17、 假定一个类的构造函数为 “A(int aa, int bb) {a=aa; b=aa*bb;}”,则执行 “A x(4,5);”语句后,x.a和x.b的值分别为( )。 A: 4和5 B: 5和4 C: 4和20 D: 20和5 18、 派生类的对象对其基类中( )可直接访问。 A: 公有继承的公有成员 B: 公有继承的私有成
8、员 C: 公有继承的保护成员 D: 私有继承的公有成员 19、 程序运行中需要从键盘上输入多于一个数据时,各数据之间应使用( )符号作为分隔符。 A: 空格或逗号 B: 逗号或回车 C: 逗号或分号 D: 空格或回车 20、 假定有定义“int b[10]; int *pb;”,则不正确的赋值语句为( )。 A: pb=b[5]; B: *pb=new int; C: pb=&b[0]; D: pb=b; 21、 假定变量a和pa定义为“double a[10], *pa=a;”,要将12.35赋值给a中的
9、下标为5的元素,不正确的语句是( )。 A: pa[5]=12.35; B: a[5]=12.35; C: *(pa+5)=12.35; D: *(a[0]+5)=12.35; 22、 关于面向对象系统分析,下列说法中不正确的是( )。 A: 术语“面向对象分析”可以用缩写OOA表示 B: 面向对象分析阶段对问题域的描述比实现阶段更详细 C: 面向对象分析包括问题域分析和应用分析两个步骤 D: 面向对象分析需要识别对象的内部和外部特征 23、 在C++程序中使用的cin标识符是系统类库中定义的( )类中的一个对象。 A: is
10、tream B: ostream C: iostream D: fstream 24、 假定AB为一个类,则执行 “AB *px=new AB[n];”语句时将( )。 A: 动态分配一个数组 B: 动态分配一个对象 C: 静态分配一个数组 D: 静态分配一个对象 25、在下面循环语句中循环体执行的次数为( )。 int i=0,s=0; while(s<20) {i++; s+=i;} A: 4 B: 5 C: 6 D: 7 26、 以下叙述不正确的是( )。 A: 宏替换不占用运行时间 B:
11、 宏名无类型 C: 宏替换只是字符替换 D: 宏名必须用大写字母表示 27、 假定一条定义语句为“int a[10], x, *pa=a;”,若要把数组a中下标为3的元素值赋给x,则不正确的语句为( )。 A: x=a[3]; B: x=*(a+3); C: x=pa[3]; D: x=*pa+3; 28、 如果表达式++a中的“++”是作为成员函数重载的运算符,若采用运算符函数调用格式,则可表示为( )。 A: a.operator++(1) B: operator++(a) C: operator++(a,1) D: a.operato
12、r++() 29、 设”int a=12;”,则执行完语句”a+=a*a;”后,a的值是( )。 A: 144 B: 156 C: 288 D: 12 30、 在一个用链表实现的队列类中,假定每个结点包含的值域用elem表示,包含的指针域用next表示,链队的队首指针用elemHead表示,队尾指针用elemTail表示,若链队为空,则进行插入时必须把新结点的地址赋给( )。 A: elemHead B: elemTail C: elemHead和elemTail D: elemHead或elemTail 31、 类的析构函数可以带有( )个参数。
13、A: 0 B: 1 C: 2 D: 任意 32、 下面是重载双目运算符-的成员函数原形,其中最符合-原来含义的是( )。 A: Value Value::operator-(Value); B: Value Value::operator-(int); C: Value& Value::operator-(Value); D: Value& Value::operator-(Value&); 33、 在重载一运算符时,若运算符函数的形参表中没有参数,则不可能的情况是( )。 A: 该运算符是一个单目运算符。 B: 该运算符函数有一个隐含的参数this。 C
14、 该运算符函数是类的成员函数。
D: 该运算符函数是类的友元函数。
二、编程综合题
1.
#include 15、 cout< 16、i++) {
int j=0;
while(a[i]>=b[j]) j++;
c[j]++;
}
for(i=0;i<4;i++) cout< 17、) {return *a;}
void setA(int x) {*a=x;}
};
void main() {
A x1,x2(3);
A *p=&x2;
p->setA(x2.getA()+5);
x1.setA(15+x1.getA());
cout< 18、t y1=0) :x(x1), y(y1) {
cout<<"Point:"< 19、 public Point,public Text {
public:
CircleWithText(int cx,int cy, char *msg):
Point(cx,cy),Text(msg) {
cout<<"Point with Text con! ";
}
~CircleWithText() {cout<<"Point with Text des ";}
};
void main()
{
CircleWithText cm(3,4,"hello");
}
5、 #include






