《电大【面向对象程序设计】期末复习题及答案(可编辑).doc》由会员分享,可在线阅读,更多相关《电大【面向对象程序设计】期末复习题及答案(可编辑).doc(8页珍藏版)》请在三一办公上搜索。
1、 面向对象程序设计期末复习题一、单项选题1.设x和y均为bool量,则x & y为真的条件是 。A. 它们均为真B. 其中一个为真C. 它们均为假D. 其中一个为假2. 在下面循环语句中循环体执行的次数为( )。 int i0,s0; whiles20 i+; s+i; A. 4 B. 5C. 6 D. 73. 假定p是具有int*类型的指针变量,则给p赋值的正确语句为( )。 A. pnew int;B. pnew int*; C. pnew int*; D. pnew int10;4. 以下关于函数模板叙述正确的是( )。 A. 函数模板也是一个具体类型的函数 B. 函数模板的类型参数与函
2、数的参数是同一个概念 C. 通过使用不同的类型参数,函数模板可以生成不同类型的函数 D. 用函数模板定义的函数没有类型5. 在多文件结构的程序中,通常把类的声明单独存放于( )中。 A. 主文件B. 实现文件C. 库文件D. 头文件6. 假定有定义“int b10; int *pb;”,则不正确的赋值语句为( )。 A. pbb; B. pb&b0; C. pbnew int; D. pbb5; 7. 假定一个类的构造函数为“Aint aa1, int bb0 aaa; bbb;”,则执行“A x0;”语句后,x.a和x.b的值分别为 。A. 0和0 B. 0和1 C. 1和0 D. 1和18
3、. 假定AA为一个类,a为该类私有的数据成员,GetValue为该类公有函数成员,它返回a的值,x为该类的一个对象,则访问x对象中数据成员a的格式为( )。 A. x.a B. x.aC. x-GetValueD. x.GetValue9. C+的继承性允许派生类继承基类的()。 A. 部分特性,并允许增加新的特性或重定义基类的特性 B. 部分特性,但不允许增加新的特性或重定义基类的特性 C. 所有特性,并允许增加新的特性或重定义基类的特性 D. 所有特性,但不允许增加新的特性或重定义基类的特性10. 假定AB为一个类,则执行“AB x;”语句时将自动调用该类的 。 A. 带参构造函数B. 无
4、参构造函数 C. 拷贝构造函数D. 赋值重载函数11. 定义p并使p指向动态空间中的包含30个整数的数组所使用的定义语句为()。A. int *pnew int30; B. int *pnew int30; C. int *pnew 30; D. *pnew int30; 12. 假定有“struct BOOKchar title40; float price; BOOK *booknew BOOK;”,则正确的语句为()。A. strcpybook-title,”Wang Tao”; B. strcpybook.title,”Wang Tao”; C. strcpy*book.title,”
5、Wang Tao”; D. strcpy*book-title,”Wang Tao”; 13. 假定有定义“int b10; int *pb;”,则不正确的赋值语句为( )。A. pbb; B. pb&b0; C. pbnew int; D. pbb5; 14. 假定指针变量p定义为“int *pnew int100;”,要释放p所指向的动态内存,应使用语句( )。 A. delete p; B. delete *p; C. delete &p; D. delete p; 15. 软件产品在需求发生变化、运行环境发生变化或发现软件产品本身的错误或不足时进行相应的软件更新的难易程度叫做软件的(
6、)。A. 可维护性 B. 可复用性 C. 兼容性 D. 正确性 16. 若需要把一个类外定义的成员函数指明为内联函数,则必须把关键字()放在函数原型或函数头的前面。A. inB. inline C. inLineD. InLiner 17. 在关键字public后面定义的成员为类的()成员。A. 私有B. 公用C. 保护D. 任何 18. 假定AA为一个类,a为该类公有的函数成员,x为该类的一个对象,则访问x对象中函数成员a的格式为()。A. x.aB. x.aC. x-aD. x-a 19. 假定AA为一个类,int a为该类的一个成员函数,若该成员函数在类定义体外定义,则函数头为()。A.
7、 int AA:aB. int AA:a C. AA:a D. AA:int a 20. 在多文件结构的程序中,通常把类的定义单独存放于()中。A. 主文件B. 实现文件C. 库文件D. 头文件 二、填空题1. 假定x5,y6,则执行表达式y+x-计算后,x和y的值分别为_和_。2. 执行char *pnew chara操作后,p所指向的数据对象的值为_。3. 变量v定义为“double v23.4;”,要使指针pv指向v,则定义pv的语句为_。4. 若在类的定义体中只给出了一个成员函数的原型,则在类外给出完整定义时,其函数名前必须加上_和两个冒号分隔符。5. 假定用户只为类AB定义了一个构造
8、函数ABint aa, int bb0 aaa; bbb;,则定义该类的对象时,其实参表中至少带有_个实参。 6.假定用户没有给一个名为AB的类定义析构函数,则系统为其定义的析构函数为_。7. 一个二维字符数组a1020能够存储_个字符串,每个字符串的长度至多为_。8. 重载一个函数的条件是:该函数必须在参数的个数或参数对应的_上与其它同名函数不相同。9. 一个指针类型的对象占用内存的_个字节的存储空间。 10. 假定一个数据对象为int*类型,则指向该对象的指针类型为_。 11.假定p所指对象的值为25,p+1所指对象的值为42,则*+p的值为_。 12.假定p所指对象的值为25,p+1所指
9、对象的值为42,则执行*p+或*p+运算后,p所指对象的值为_。 13. 一个数组的数组名实际上是指向该数组_元素的指针,并且在任何时候都不允许_它。 14. 重载一个函数的条件是:该函数必须在参数的_或参数对应的_上与其它同名函数不相同。 15. 指针变量pv和pc定义为“void *pv ”Hello, word!”; char *pc;”,要将pv值赋给pc,则正确的赋值语句是pc_pv。 16. 若p指向x,则_与x的表示是等价的。 17. 假定p为指向二维数组int d46的指针,则p的类型为_。 18. 若y是x的引用,则对y的操作就是对_的操作。 19. 执行char *pnew
10、 chara操作后,p所指向的数据对象的值为_。 20. 执行_操作将释放由p所指向的动态分配的数据空间。三、程序填充题,根据题意在横线上填写合适的内容。2、已知一维数组类ARRAY的定义如下,ARRAY与普通一维数组区别是:其重载的运算符 要对下标是否越界进行检查。class ARRAYint *v; /指向存放数组数据的空间int s; /数组大小public:ARRAYint a, int n; ARRAYdelete v; int size return s;int& operatorint n; ;_1_ operatorint n / 的运算符成员函数定义ifn0 | _2_ ce
11、rr下标越界!; exit1; return _3_;12 33.类A的定义 class A char *a; public: A aNULL; Achar *aa a_(1)_ charstrlenaa+1; strcpya,aa; _(2)_ /定义析构函数,删除a所指向的动态存储空间;1 2 4. 已知一个类的定义如下:#includeclass AA int a10;int n;public:void SetAint aa, int nn; /用数组aa初始化数据成员a, /用nn初始化数据成员nint A; /从数组a中前n个元素中查找最大值 void SortA; /采用选择排序的
12、方法对数组a中前n个元素 /进行从小到大排序 void InsertA;/采用插入排序的方法对数组a中前n个元素进行从小到大排序void PrintA; /依次输出数组a中的前n个元素; 该类中A函数的实现如下,请在标号位置补充适当的内容。int _1_ int xa0;forint i1; in; i+ ifaix _2_;_3_;1 2 3四、理解问答题,写出程序运行结果或程序(或函数)所能实现的功能。 1. #includevoid main int i,s0; fori2;i30;i+2 s+i*i; coutssendl; 函数功能: 2. #include double f1int
13、 n double sign1,s1;forint i2;in; i+ s+sign/i*i; sign*-1;return s; void main int a;cina;coutf1aendl; 函数功能:3.#include class A int a,b; public:A ab0;Aint aa, int bb aaa; bbb;int Sum return a+b;int* Mult int *pnew inta*b; return p; ; void main A x4,5, *p; pnew A2,3;coutx.Sum *x.Multendl;coutp-Sum *p-Mul
14、tendl; 运行结果:4. #includevoid main int a1076,83,54,62,40,75,90,92,77,84; int b460,70,90,101; int c40; forint i0;i10;i+ int j0;whileaibj j+;cj+; fori0;i4;i+ coutci ; coutendl;运行结果:五、编程题 根据下面类中拷贝构造函数的原型写出它的类外定义。 class Array int *a;/指向动态分配的整型数组空间int n; /记录数组长度public: Arrayint aa, int nn; /构造函数,利用aa数组长度nn
15、初始化n, /利用aa数组初始化a所指向的数组空间 ArrayArray& aa;/拷贝构造函数 ;参考答案一、单选题 1. A 2. C3. B4. C 5. D 6. D7. A8. D 9. C 10. B11. A 12. A13. D14. A15. B16. B17. B 18. B19. A 20. D二、填空题1. 4112. a3. double *pv&v; 4. 类名 5. 16. AB 7.10 19 8类型 9. 410. int*11. 12 32. 4213. 第一个、 修改 14. 个数或数目 类型15. char *16. *p 17. int*6 18. x
16、 19. a 20. delete p三、程序填充题,根据题意在横线上填写合适的内容。 1. 1 itemp 2 break 2. 1 int& ARRAY:2 ns 3 vn 或*v+n 3. 1new2A delete a; 4. 1 AA:A 2 xai 3 return x四、理解问答题,写出程序运行结果或程序(或函数)所能实现的功能。1. 计算并输出22+42+62+302的值。2计算并输出1+的值,其中a的值由键盘输入。 3. 9 20 5 64. 2 1 5 2五、编程题 1、 Array:ArrayArray& aa naa.n;anew intn;forint i0; in; i+ aiaa.ai;