C++期末考试题及答案_第1页
C++期末考试题及答案_第2页
C++期末考试题及答案_第3页
C++期末考试题及答案_第4页
C++期末考试题及答案_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、一、选择填空题(共20小题,每小题2分,共40分)。1. 关于C+与C语言关系的描述中,(D )是错误的。a. C语言是C+语言的一个子集b. C语言与C+语言是兼容的c. C+语言对C语言进行了一些改进d. C+语言和C语言都是面向对象的2 按照标识符的要求,(A )符号不能组成标识符。a. 连接符b. 下划线c. 大小写字母d. 数字字符)组成配对关系。3. 为了避免嵌套的if-else语句的二义性,C语言规定else总是与(Ca. 缩排位置相同的ifb. 在其之前未配对的ifc. 在其之前未配对的最近的ifd. 同一行上的if4. 在int a3=1,3,2,4,5,6,0; 中,a22

2、的值是(C )。a. 1b. 0c. 6d. 25. 设char *s ;,以下正确的表达式是(B)。a. s=computer;b. *s=computer;c. *s=computer;d. *s=c;6. 对于int *pa5;的描述中,(D )是正确的。a. pa是一个指向数组的指针,所指向的数组是5个int型元素b. pa是一个指向某数组中第5个元素的指针,该元素是int型变量c. pa表示某个元素的第5个元素的值d. pa是一个具有5个元素的指针数组,每个元素是一个 int型指针7. 在下列表示引用的方法中,(A )是正确的。已知:int m=10;a. int &x=m;b. i

3、nt &y=10;c. int &z;d. float &t=&m;8. 下列for循环的次数为(B)。for (i=0, x=0; !x&i=5; i+ )a. 5b. 6c. 1d. 无限9. 对于C/C+语言的函数,下列叙述中正确的是( A )。a. 函数的定义不能嵌套,但函数调用可以嵌套b. 函数的定义可以嵌套,但函数调用不能嵌套c函数的定义和调用都不能嵌套d函数的定义和调用都可以嵌套10. 在一个被调用函数中,关于return语句使用的描述,(D )是错误的。a. 被调用函数中可以不用return语句b. 被调用函数中可以使用多个return语句c. 被调用函数中,如果有返回值,就一

4、定要有return语句d. 被调用函数中,一个return语句可以返回多个值给调用函数11. 在一个函数中,要求通过函数来实现一种不太复杂的功能,并且要求加快执行速度, 选用(A )。a. 内联函数b. 重载函数c. 递归调用d. 嵌套调用12. 使用fseek函数可以实现的操作是(A )。a. 改变文件指针的当前位置b. 文件的顺序读写c. 文件的随机读写d. 以上都不对13. 下列存储标识符中,(C )的可见性与存在性不一致。a. 外部类b. 自动类c. 内部静态类d. 寄存器类14. 在如下结构定义中,不正确的是( B )。a. struct stude ntint no;char n

5、ame10;float score;b. struct stud20int no;char n ame10;float score;c. struct studentint no;char n ame10;float score; stud20;d. struct int no;char n ame10;float score;stud100;15. 将两个字符串连接起来组成一个字符串时,选用( C )函数。a. strlen()b. strcpy()c. strcat()d. strcmp()16. (D )不是构造函数的特征a. 构造函数的函数名与类名相同b. 构造函数可以重载c. 构造函

6、数可以设置缺省参数d. 构造函数必须指定类型说明17. 已知:类A中一个成员函数说明如下:void Set(A&a);其中,A&的含义是(C)。a. 指向类A的指针为ab. 将a的地址值赋给变量 Setc. a是类A对象的引用,用来作函数Set ()的参数d. 变量A与a按位与作为函数 Set()的参数18. 已知:print()函数是一个类的常成员函数,它无返回值,下列表示中,(A )是正确的。a. void print( ) con st;b. c on st void print();c. void const print();d. void prin t(c on st);19. 关于

7、虚函数的描述中,(C )是正确的。a. 虚函数是一个static类型的成员函数b. 虚函数是一个非成员函数c. 基类中说明了虚函数后,派生类中将其对应的函数可不必说明为虚函数d. 派生类的虚函数与基类的虚函数具有不同的参数个数和类型20. 关于new运算符的下列描述中,(D )是错的。a. 它可以用来动态创建对象和对象数组b. 使用它创建的对象和对象数组可以使用运算符delete删除c. 使用它创建对象时要调用构造函数d. 使用它创建对象数组时必须指定初始值二、问答题(15分)1、( 3分)虚析构函数有什么作用?对象销毁时要调用析构函数,如果不是定义的虚析 构函数,基类指针只能访问基类析构,不

8、能访问派生类析构,若定义的虚析构则可以解决 这问题2、(3分)拷贝构造函数在哪几种情况下调用?用一个对象初始化另一个对象;当函数返回对象;当对象作为函数参数传递。3、(4分)函数重载与函数覆盖有什么不同,它们与多态有什么关系?函数重载函数名 相同,而函数参数个数,函数类型不同;覆盖是指函数名,函数个数,函数类型都相同。 C+是通过虚函数的覆盖,实现多态的功能。4、( 3分)C+继承是如何工作的?5、( 2分)类与对象有什么区别?三、(6分)分析下面程序的运行结果#inelude class Bpublic:B()B(int i)b=i;virtual void vifun() coutB:vi

9、fu n() called.n;private:int b;class D:public Bpublic:D()D(int i,int j):B(i)d=j;private: int d;void virfun() coutvirfu n();void main()D *pd=new D;fun (pd);四、(9分)下面的程序可以统计命令行第一个参数中出现的字母个数,请填充下面空白, 完成程序。#include #inelude void main(int argc, argv;)char *str;int count=0; if(argc2)exit(1);while(*str)if(is

10、alpha(*str+ ) count+;printf(n 字母个数:%dn,count);提示:int isalpha(int ch)函数功能是检查 ch是否是字母五、(8分) 定义一个字符栈类Stack (包括类的实现)。数据成员包括一个存放字符的数 组stck和一个栈指针tos。栈数组的尺寸由常量 SIZE确定。栈的基本操作为 Push ()和 Pop ()。六、(10分)完成下面的函数,对有n个元素的数组a,使数组元素按逆序排列。void inverse(int *a, int n)七、(12分)下面的函数统计子字符串substr在字符串str中出现的次数,如果substr在str中不

11、出现,则返回值 0。请完成该函数。int str_count(char *substr, char *str)一、选择填空题I、D2、A 3、C4、C5、B6、D 7、A 8、B 9、A 10、DII、A 12、A 13、C 14、B 15、C 16、D 17、C 18、A 19、C 20、D二、问答题1、虚析构函数有什么作用?解答要点:对象销毁时,需要调用析构函数。在多态调用时,是用基类的指针访问派生类的对象。如果析构函数是非虚函数,则基类指针只能访问基类的析构函数,而不能访问派生类的析构函数,导致派生类对象销毁 时,没有调用派生类的析构函数,只是调用了基类的析构函数。如果把析构函数定义成虚

12、函数,则可克服 这个问题。2、拷贝构造函数在哪几种情况下调用?解答要点:用一个对象初始化另一个对象时当用对象作为函数参数传递时当函数返回对象时3、函数重载与函数覆盖有什么不同,它们与多态有什么关系?解答要点:函数重载是指函数名相同,而函数的参数个数或类型不同;覆盖是指在派生类中成员函数与基类成员 函数的函数名、参数个数、类型与返回值均相同;C+中正是通过虚函数的覆盖,实现多态的功能。4、C+继承是如何工作的?解答要点:继承使得派生类能够使用基类的公有和保护成员,从而实现代码的复用,派生类可以增加成员,也可 以隐藏和覆盖基类的成员。对于公有继承,基类成员的访问权限在派生类保持不变。5、类与对象有

13、什么区别?解答要点:类是类型,是对象的抽象,对象是类的具体实例。一个类可以有多个对象,每个对象都有自己的存储 单元,而类不占存储单元。三、运行结果为:D:virfun() called.四、填空 char * argv1 *sM+五、(8分)定义一个字符栈类Stack (包括类的实现)。数据成员包括一个存放字符的数组 stck和一个 栈指针tos栈数组的尺寸由常量SIZE确定。栈的基本操作为Push ()和Pop ()。const int SIZE=27;classStackpublic:Stack():tos(0);void Push(charch);char Pop();private:c

14、har stckSIZE;int tos;void Stack:Push(charch)if(tos=SIZE)coutnStack isfulln;elsestcktos=ch;tos+;charStack:Pop()if(tos=0)coutnStack isemptyn;return 0;tos-;return stcktos;六、(10分)完成下面的函数,对有n个元素的数组a,使数组元素按逆序排列。voidinverse(int*a, intn)int i,*p;p=new intn;for(i=0;i=n_1;i+)P【i=a【i;for(i=0;i=n-1;i+)ai=pn-i-1;delete p;七、(12分)下面的函数统计子字符串substr在字符串str中出现的次数,如果substr在 str中不出现, 则返回值0。请完成该函数。intstr_count(char*substr,char*st

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论