ImageVerifierCode 换一换
格式:DOCX , 页数:20 ,大小:33.87KB ,
资源ID:9547980      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/9547980.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(C++期末考试题及答案总结word文档良心出品.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

C++期末考试题及答案总结word文档良心出品.docx

1、C+期末考试题及答案总结word文档良心出品清华大学计算机系C+期末考试题及答案一、 填空题(25小题,共50分)(以下每小题1分,共10分)1 在C+中,函数的参数有两种传递方式,它们是值传递和 地址或指针或引用传递。2 当一个成员函数被调用时,该成员函数的 this指针 指向调用它的对象。3在基类和派生类中,派生类可以定义其基类中不具备的数据和操作。对两个有相同名字的数据成员进行访问时,如果没有 作用域分隔符限定时 ,对此数据成员的访问将出现歧义。4 拷贝构造函数使用 引用 作为参数初始化创建中的对象。5 在公有继承的情况下,基类数据成员在派生类中的访问权限 保持不变 。6 描述命题A小于

2、B或小于C的表达式为 AB|Ac&b=c的值是 0 。(以下每小题2分,共20分)11 面向对象的程序设计有四大特征,它们是抽象、封装、 继承 、 多态 。12 在Visual C+中,定义重载函数时,应至少使重载函数的参数个数或参数类型 不同 ;在基类和派生类中,成员函数的覆盖是指 派生类成员函数与在基类被覆盖的成员函数名、参数个数、参数类型和返回值类型均相同 。13构造函数与析构函数除功能不同外,在定义形式上,它们的区别还包括构造函数名与类名相同,而析构函数名是在类名前加一个、 析构函数没有参数 、析构函数可以定义为虚函数 。14 动态联编要满足两个条件,它们是 被调用的成员函数是虚函数

3、、用指针或引用调用虚函数 。15在C+类中,有一种不能定义对象的类,这样的类只能被继承,称之为 抽象类 ,定义该类至少具有一个 纯虚函数 。16 在C+类中,const关键字可以修饰对象和成员函数,const对象不能 被修改 ,const成员函数不能 修改类数据成员 。17 举出C+中两种用户自定义的数据类型: 类 、 枚举 。18 C+中没有字符串类型,字符串是通过 字符数组 来表示的,每一个字符串都有一个结尾字符 0 。19 C+中没有输入输出语句,输入输出是通过 输入输出库 实现的,写出一条打印整型变量n的输出语句:coutn;20 举出C+中两种代码复用的方式: 继承 、复用 。(以下

4、每小题4分,共20分)21 下面程序的运行结果是3。#include void main()char a=a,b=j;float x;x=(b-a)/(F-A);printf(%dn,(int)(3.14*x);22 下面程序的运行结果是2 5 8 11 14。#include iostream.hvoid main( )int i=1;while (i=15)i+;if (i%3!=2) continue;else cout i=iendl;23 下面程序的运行结果是_。#include iostream.hclass testprivate:int num;float fl;public:

5、test( );int getint( )return num;float getfloat( )return fl;test( );test:test( )cout Initalizing default endl;num=0;fl=0.0;test:test( )cout Desdtructor is active endl;void main( )test array2;cout array1.getint( ) array1.getfloat( ) endl;Initalizing defaultInitalizing default0 0Desdtructor is activeDe

6、sdtructor is active24 下面程序的运行结果是_。#include class Apublic:A()coutA:A() called.n;virtual A()coutA:A() called.n;class B:public Apublic:B(int i)coutB:B() called.n;buf=new chari;virtual B()delete buf;coutB:B() called.n;private:char *buf;void fun(A *a)delete a;void main()A *a=new B(15);fun(a);A:A() called

7、.B:B() called.B:B() called.A:A() called.25 下面程序的运行结果是_。#include int a =1,3,5,7,9;int *p =a,a+1,a+2,a+3,a+4;void main( )printf(%dt%dt%dn,a4,*(a+2),*p1);printf(%dt%dt%dn,*(p+1)+a2,*(p+4)-*(p+0),*(a+3)%a4);9 5 38 4 7二、 问答题(每小题5分,共20分)1若程序员没有定义拷贝构造函数,则编译器自动生成一个缺省的拷贝构造函数,它可能会产生什么问题?解答要点:当对象含有指针数据成员,并用它初始

8、化同类型的另一个对象时,缺省的拷贝构造函数只能将该对象的数据成员复制给另一个对象,而不能将该对象中指针所指向的内存单元也复制过去。这样,就可能出现同一内存单元释放两次,导致程序运行出错。2 简述成员函数、全局函数和友元函数的差别。解答要点:以下几点必须说清楚:成员函数是在类内部定义的,作用域在类的内部,成员函数可以访问类的数据成员(公有、保护和私有数据成员),可以调用该类的其它成员函数(公有、保护和私有成员函数),可以调用全局函数。如果友元函数是另一个类的公有成员函数,则该类的成员函数也只能通过那个类的对象调用,不能调用那个类的保护和私有成员函数。非本类成员函数(其它类成员函数或全局函数)可以

9、通过该类的对象访问该类的公有数据成员和调用该类的的公有成员函数。不是在类中定义的成员函数都是全局函数。如果某一个函数(全局函数或类的成员函数)定义为另一个类的友元函数,需要在那个类中用friend关键字声明,友元函数并不是类的成员,它的定义自然是在那个类的外面。3 简述结构化的程序设计、面向对象的程序设计的基本思想。解答要点:结构化的程序设计将数据和对数据的操作分离,程序是由一个个的函数组成的,面向对象的程序设计将数据和操作封装在一起,程序是由一个个对象组成的,对象之间通过接口进行通信,它能够较好地支持程序代码的复用。4 结构struct和类class有什么异同?解答要点:struct和cla

10、ss都可以定义类,但是缺省访问权限说明时,struct的成员是公有的,而class的成员是私有的。在C+中,struct可被class代替。三、找出下面程序(或程序段)中的语法错误,并予以纠正(每小题4分,共8分)(1)程序功能是倒序输出各给定的字符串。#include void main()char str5 =First,Second,Third,Forth,Fifth;char *cp =str4,str3,str2,str1,str0;int i;while(i=5)printf(%c ,*(cp+i);i+; char str5 =First,Second,Third,Forth,F

11、ifth;应为char str510 =First,Second,Third,Forth,Fifth; while(i=5)应为while(i5) printf(%c ,*(cp+i);应为printf(%s,*(cp+i); int i;应为int i=0;(2)程序功能是将各个平方根值放入数组中。#include void main()int max,a,i;scanf(%d%d,max,a);double xmax;for (i=0;imax;i+)xi=sqrt(a*i); 增加#include scanf(%d%d,max,a);应为scanf(%d%d,&max,&a); doub

12、le xmax;改为:double *x=new doublemax;delete x;四、(8分)下列shape类是一个表示形状的抽象类,area( )为求图形面积的函数,total( )则是一个通用的用以求不同形状的图形面积总和的函数。请从shape类派生三角形类(triangle)、矩形类(rectangle),并给出具体的求面积函数class shape public: virtual float area( )=0; ;float total(shape *s ,int n) float sum=0.0; for(int i=0;iarea( ); return sum;class

13、Triangle:public Shapepublic:Triangle(double h,double w)H=h;W=w;double Area() constreturn H*W*0.5;private:double H,W;class Rectangle:public Shapepublic:Rectangle(double h,double w)H=h;W=w;double Area()constreturn H*W;private:double H,W;五、(6分)完成顺序查找函数f_seq( )。其过程是:从表头开始,根据给定的模式,逐项与表中元素比较。如果找到所需元素,则查找成

14、功,并打印出它在表中的顺序号。如果查找整个表仍未找到所需对象,则查找失败#include void f_seq(char *list,char *object,int len)/list 指针数组,指向字符串/object 模式串/len 表的长度char *p;int strcmp(char *s,char *t);p=list;while (_) /plist+lenif (strcmp(*p,object)=0)break;else _; /p+if (pnext=NULLp=head-next;head-next=NULL;while(_) /p!=NULL或ptemp1=head;_

15、; /head=p;temp2=p;p=p-next;_; /temp2-next=temp1;或head-next=temp1;/Match while statenmentreturn head; /返回逆置后的链表的头结点一、 选择填空题(共20小题,每小题2分,共40分)。1. 关于C+与C语言关系的描述中,( 4)是错误的。 a.C语言是C+语言的一个子集 b.C语言与C+语言是兼容的 c.C+语言对C语言进行了一些改进 d.C+语言和C语言都是面向对象的2按照标识符的要求,(1 )符号不能组成标识符。 a.连接符 b.下划线 c.大小写字母 d.数字字符3. 为了避免嵌套的if-e

16、lse语句的二义性,C语言规定else总是与( 3)组成配对关系。 a.缩排位置相同的if b.在其之前未配对的if c.在其之前未配对的最近的if d.同一行上的if4. 在int a 3=1,3,2,4,5,6,0;中,a22的值是( 3)。 a.1 b.0 c.6 d.25. 设char *s;,以下正确的表达式是(2)。 a.s=computer; b.*s=computer; c.*s=computer; d.*s=c;6. 对于int *pa5;的描述中,(4 )是正确的。 a.pa是一个指向数组的指针,所指向的数组是5个int型元素 b.pa是一个指向某数组中第5个元素的指针,该

17、元素是int型变量 c.pa 5表示某个元素的第5个元素的值 d.pa是一个具有5个元素的指针数组,每个元素是一个int型指针7. 在下列表示引用的方法中,(1 )是正确的。已知:int m=10; a.int &x=m; b.int &y=10; c.int &z; d.float &t=&m;8. 下列for循环的次数为( 2)。for(i=0, x=0; !x&i=5; i+) a.5 b.6 c.1 d.无限9. 对于C/C+语言的函数,下列叙述中正确的是(1)。 a.函数的定义不能嵌套,但函数调用可以嵌套 b.函数的定义可以嵌套,但函数调用不能嵌套 c.函数的定义和调用都不能嵌套 d

18、.函数的定义和调用都可以嵌套10. 在一个被调用函数中,关于return语句使用的描述,( 4)是错误的。 a.被调用函数中可以不用return语句 b.被调用函数中可以使用多个return语句 c.被调用函数中,如果有返回值,就一定要有return语句 d.被调用函数中,一个return语句可以返回多个值给调用函数11. 在一个函数中,要求通过函数来实现一种不太复杂的功能,并且要求加快执行速度,选用( 1)。 a.内联函数 b.重载函数 c.递归调用 d.嵌套调用12. 使用fseek函数可以实现的操作是( 1)。 a.改变文件指针的当前位置 b.文件的顺序读写 c.文件的随机读写 d.以上

19、都不对13. 下列存储标识符中,( 3)的可见性与存在性不一致。 a.外部类 b.自动类 c.内部静态类 d.寄存器类14. 在如下结构定义中,不正确的是( 2)。 a.struct student int no; char name10;float score; b.struct stud20int no;char name10;float score; c.struct student int no; char name10;float score; stud20; d.structint no;char name10;float score;stud100 ;15. 将两个字符串连接起来

20、组成一个字符串时,选用(3 )函数。 a.strlen( ) b.strcpy( ) c.strcat( ) d.strcmp( )16. ( 4)不是构造函数的特征 a.构造函数的函数名与类名相同 b.构造函数可以重载 c.构造函数可以设置缺省参数 d.构造函数必须指定类型说明17. 已知:类A中一个成员函数说明如下:void Set(A&a);其中,A&的含义是(3 )。 a.指向类A的指针为a b.将a的地址值赋给变量Set c.a是类A对象的引用,用来作函数Set()的参数 d.变量A与a按位与作为函数Set( )的参数18. 已知:print( )函数是一个类的常成员函数,它无返回值

21、,下列表示中,( 1)是正确的。 a.void print( ) const; b.const void print( ); c.void const print( ); d.void print(const);19. 关于虚函数的描述中,(3 )是正确的。 a.虚函数是一个static类型的成员函数 b.虚函数是一个非成员函数 c.基类中说明了虚函数后,派生类中将其对应的函数可不必说明为虚函数 d.派生类的虚函数与基类的虚函数具有不同的参数个数和类型20. 关于new运算符的下列描述中,( 4)是错的。 a.它可以用来动态创建对象和对象数组 b.使用它创建的对象和对象数组可以使用运算符del

22、ete删除 c.使用它创建对象时要调用构造函数 d.使用它创建对象数组时必须指定初始值二、问答题(15分)1、 (3分)虚析构函数有什么作用?2、 (3分)拷贝构造函数在哪几种情况下调用?3、 (4分)函数重载与函数覆盖有什么不同,它们与多态有什么关系?4、 (3分)C+继承是如何工作的?5、 (2分)类与对象有什么区别?三、(6分)分析下面程序的运行结果#include class Bpublic:B()B(int i)b=i;virtual void virfun()coutB:virfun() called.n;private:int b;class D:public Bpublic:D

23、()D(int i,int j):B(i)d=j;private:int d;void virfun()coutvirfun();void main()D *pd=new D;fun(pd);四、(9分)下面的程序可以统计命令行第一个参数中出现的字母个数,请填充下面空白,完成程序。#include #include void main(int argc, argv;)char *str;int count=0;if(argc2)exit(1);str= ;while(*str)if(isalpha( ) count+;printf(n字母个数:%dn,count);提示:int isalpha

24、(int ch)函数功能是检查ch是否是字母 五、(8分) 定义一个字符栈类Stack(包括类的实现)。数据成员包括一个存放字符的数组stck 和一个栈指针tos。栈数组的尺寸由常量SIZE确定。栈的基本操作为Push()和Pop()。六、(10分)完成下面的函数,对有n个元素的数组a,使数组元素按逆序排列。void inverse(int *a, int n)七、(12分)下面的函数统计子字符串substr在字符串str中出现的次数,如果substr在str中不出现,则返回值0。请完成该函数。int str_count(char *substr, char *str)一、 选择填空题1、D 2、A 3、C 4、C 5、B 6、D 7、A 8、B 9、A 10、D11、A 12、A 13、C 14、

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1