C++语言程序设计_第1页
C++语言程序设计_第2页
C++语言程序设计_第3页
C++语言程序设计_第4页
C++语言程序设计_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

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

文档简介

1、大连理工大学网络教育学院2017年秋C/C+语言程序设计期末考试复习题 注意事项:本复习题满分共: 400 分。一、单选题1、下列 while 循环的执行次数是( A )。 while(int i=0) i+;A0B1C5D.无限2、下列哪个函数不是类的成员函数。 ( D )A. 析构函数B. 构造函数C. 拷贝构造函数D. 友元函数3、 在执行 int a3=1,2,3,4,5,6 ;语句后, a00 的值是( B )。A. 4B. 1C. 2D. 54、 C+中用3个保留字实现异常处理,除了throw和catch夕卜,还有(C )。A. ifB. classC. tryD return5、

2、下面表达式中错误的是(C )。A b=a+B a/=2C a+b=5D a=5,b=6,c=76、在定义 int a5 ;之后,对 a 的引用正确的是( D )。A a5BaC a(5)D a07、类中将关键字(A )写在函数体之前函数头之后,说明该函数是一个常成员函数(或 const 成员函数),可以防止函数改变数据成员的值。A constB staticC friendD void8、 设int n=10,i=3;则赋值运算n%=i+1执行后,n的值是(C )。A0B3C2D19、 C+冲用3个保留字实现异常处理,除了try和catch夕卜,还有(C )。AifBclassC th row

3、D return10、设有定义 int x; double v;,则 10+x+v 值的数据类型是( B )。AintB doubleC charD.不确定11、对于while、dowhile循环结果说法正确的是( C)。A. 只是表达形式不同B. while 结构中的语句至少执行一次C. dowhile结构中的语句至少执行一次D. 条件成立时,他们有可能一次也不执行12、下列运算符中优先级最高的为 ( A) 。A. !B. %C. -=D. &13、有关构造函数的说法错误的是 (D ) 。A. 构造函数名字和类的名字一样B. 构造函数在说明类变量时自动执行C. 构造函数无任何函数类型D. 构

4、造函数有且只有一个14、通常的拷贝构造函数的参数是( C )。A. 某个对象名B. 某个对象的成员名C. 某个对象的引用名D. 某个对象的指针名Aif(s1=s2)Bif(s1=s2)C if(strcpy(s1,s2)D if(strcmp(s1,s2)=0)16、在定义 int a36; 后,第 10 个元素是( B)。Aa24B a1 3C a3 1 4217、不是C语言的浮点类型的是(A. floatB. doubleC. long doubleD. real18、下面不是字符常量是 ( ) A “t ”B t C D t 19、C 语言对嵌套if 语句的规定是:)。 D。Aelse

5、总是与()配对。 DA. 其之前最近的 ifC. 缩进位置相同的 if20、下面代码段的执行结果是int i;for(i=1;i10;i+)if(i%5=0)break;B. 第一个 ifD. 其之前最近且不带 else 的 if( ) 。 Dprintf(%d ,i);printf(endn);A end B 1 2 3 4 5 end C 1 2 3 4 5 D 1 2 3 4 end21、以下程序中调用 scanf 函数给变量 a 输入数值的方法是错误的,原因是( )。 B int a,*p=&a;scanf( “ %d ”, *p ); *p 表示的是指针变量 p 的地址B. *p 表

6、示的是变量 a 的值,而不是变量 a 的地址C. *p 表示的是指针变量 p 的值D. *p 只能用来说明 p 是一个指针变量22、设 int a10 = 15, 12, 7, 31,47, 20 , *p,下列语句中正确的是( )。BA. for ( p = a; a ( p + 10 ); a+ );B. for ( p = a; p ( a + 10); p+ );C. for( p = a, a = a + 10; p a; p+ );D. for( p = a; a age B. C. p - age D.28、C+源文件的扩展名为()。AA. cppB. cC. txtD. exe

7、29、 关于C+和C语言的描述中,()是错误的CA. C是C+的一个子集B. C程序在C+环境可以运行C. C+程序在C环境可以运行D. C+是面向对象的而C是面向过程的、填空题1、 表达式sqrt(81) 和pow(6,3)的值分别为 和。9、2162、 空串的长度为 ,存储它需要占用 个字节。0、13、 strlen(apple)的值为 。54、 使用cin和cout进行输入输出操作的程序必须包含头文件 ,其语句格式为 #in clude5、 对一个一维字符数组a进行初始化的数据为12345,则a0和a3元素对应的初值分别为 和。1 46、 对一个类中的数据成员的初始化可以通过构造函数中的

8、 实现,也可以通过构造函数中的 实现。初始化表、函数体7、随机函数rand()%20的值在至区间内。0、19&若需要把一个函数“void F()定义为一个类AB的友元函数,则应在类AB定义中加入一条语句: 。friend void F();9、根据给定的程序功能,将程序代码补充完整,每空只填一条语句 定义并调用排序函数,对一维数组进行降序排序。#in clude ; /*宏定义常量SIZE为10 */void sort(int a, int size ); /*冒泡排序函数 */void mai n()int arraySIZE=2,6,4,8,10,12,89,68,45,38, i; ;/

9、*调用排序函数*/for( i=0;iSIZE;i+);/*输出数组元素*/void sort(i nt a, int size )int pass ,k ,t;for(pass=0; ;pass+)for( k=0; ksize-pass-1 ;k+)if()/*降序排序*/ t=ak;ak=ak+1;ak+1=t;参考答案:本题考察数组排序 #define SIZE 10; sort(array, SIZE); printf(%5d,arrayi); passak+1;判断是否为素数。10、根据给定的程序功能,将程序代码补充完整,每空只填一条语句,输入一个正整数,#in clude /*引

10、用头文件*/void mai n();/*定义变量m与i*/printf(”输入一个正整数m:n);/*输入整数m的值*/for ( i =2; i =sqrt(m); i + ) /*寻找能整除m的因子i*/if ()break ;/* 输出是否为素数*/if (printf(%d是素数.n, m);elseprin tf(%d不是素数.n”,m);参考答案:本题考察数控制结构 #include int m, i; scanf(%d,&m); m% i = 0 isqrt(m)11、以下程序实现字符串的复制,将程序补充完整。#in elude char* fuzhi(char *p1,cha

11、r *p2 )int i;for(i = 0;i +)*(p1 + i) = *(p2 + i);return p1;int jishu(char *p)int i;for(i = 0;i +);int mai n ()char a20 , b20; ;dlmag = dlmag +c2. dImag; return c; Complex Complex:operator-(); cout ( dReal , dImag ) endl;Shape类派生矩形类14、根据给定的程序功能,将程序代码补充完整,每空只填一条语句,抽象类(Rectangle)和圆类(Circle) , area()为求图

12、形面积的成员函数。#in elude #in elude class Shape public:; xe o ()4、 关键字中,用以说明类中公有成员的是private 。(5、 一个类只能有一个对象。()6、 拷贝构造函数不是类的成员函数。()7、内联函数的关键字为 friend 。()8、构造派生类的对象时,就要对基类数据成员、新增数据成员和成员对象的数据成员进行初始化。 ()10、抽象类不能实例化。 ( )11、 在C+类中可以包含私有、公有和友元三种具有不同访问控制权的成员。()12、 定义枚举类型的关键字是union 。()13、设有定义 int x; double v; 则 5+x

13、+v 值的数据类型是 int 。()14、strcat() 函数的作用是求字符串长度。 ()15、 说明静态数据成员时,前边要加关键字static 。()16、 成员函数可以重载。()17、delete 的功能是动态分配内存。 ()18、关键字中,用以说明类中公有成员的是protected 。(19、流是一种抽象, 它负责在数据的生产者和数据的消费者之间建立联系, 并管理数据的流动。( )20、类型兼容规则是指在需要基类对象的任何地方,都可以使用公有派生类的对象来替代。()21 、 do-while 循环可以写成 while 循环。( )22、所谓指令,就是计算机可以识别的命令。()23、使用

14、内联函数是以牺牲增大空间开销为代价的。24、对象是系统中用来描述客观事物的一个实体,25、 内联函数的关键字为 void 。()()它是用来构成系统的一个基本单位。 ()26、友元关系可以继承。 () 判断题答案12 、X 3 、X 4 、X 5 、X11、X12、X13、X14、X15、V16、V17、X18、X19、V20、V21 、V22、V23、V24、V25、X6、X 7 、X8、9 、x10 、“26、X四、阅读下列程序,请在答题卡上写出输出结果1、#includevoid main()int x=1,y=2,z=3;x+=y+=z;cout(xyy:x),;cout(xyx+:y

15、+),;coutyendl;输出结果: 6,5,62、#include void main()int i;for(i=4;i=10;i+)if(i%3=0)continue;couti;输出结果: 4578103、#includeclass CSampleprivate:int i;static int k;public:CSample();void Display();CSample:CSample()i=0;k+;void CSample:Display()couti=i,k=kendl;int CSample:k=0;void main()CSample a,b;();();输出结果:i

16、=0,k=2i=0,k=24、#include void main()int x=1,y=0;switch(x)case 1:switch(y)case 1:coutsecond ;break;输出结果: first third5、#includeclass CSampleint i;public:CSample();void Display();CSample();CSample:CSample()coutConstructor,;i=0;void CSample:Display()couti=i,;CSample:CSample()coutDestructorendl;void main(

17、)CSample a;();输出结果: Constructor,i=0,Destructor6、#includeconst int N=8;void main()int aN=1,2,3,4,5,6,7,8;int i,x;for(i=0; iN/2; i+)x=ai;ai=aN-1-i;aN-1-i=x;for(i=0; iN; i+)7、 #include class CSampleint i;public:CSample();CSample(int val);void Display();CSample();CSample:CSample()coutConstructor1endl;i=

18、0;CSample:CSample(int val)coutConstructor2endl;i=val;void CSample:Display()CSample:CSample()coutDestructorendl;void main()CSample a,b(10);();();输出结果:Constructor1Constructor2i=0i=10DestructorDestructor8、本题重点考察继承与多态# include t1.show();endl;class TwoDimensionalShape how();TwoDimensionalShape * members3

19、 ;elsecout () is older.endl;return 0;运行结果:copy constructdestruct LindaLinda is older.destruct Lindadestruct noName五、简答题(本大题共 8 小题,共 40分)1、简述结构化的程序设计、面向对象的程序设计的基本思想。解答要点: 结构化的程序设计将数据和对数据的操作分离, 程序是由一个个的函数组成 的,面向对象的程序设计将数据和操作封装在一起, 程序是由一个个对象组成的, 对象之间 通过接口进行通信,它能够较好地支持程序代码的复用。2、虚析构函数有什么作用解答要点:对象销毁时,需要调用

20、析构函数。在多态调用时,是用基类的指针访问派生类的对象。 如果析构函数是非虚函数, 则基类指针只能访问基类的析构函数, 而不能访问派生类的析构 函数,导致派生类对象销毁时,没有调用派生类的析构函数,只是调用了基类的析构函数。 如果把析构函数定义成虚函数,则可克服这个问题。3、拷贝构造函数在哪几种情况下调用解答要点:用一个对象初始化另一个对象时当用对象作为函数参数传递时当函数返回对象时4、函数重载与函数覆盖有什么不同,它们与多态有什么关系解答要点:函数重载是指函数名相同, 而函数的参数个数或类型不同; 覆盖是指在派生类中成员函 数与基类成员函数的函数名、参数个数、类型与返回值均相同;C+中正是通

21、过虚函数的覆盖,实现多态的功能。5、C+ 继承是如何工作的解答要点:继承使得派生类能够使用基类的公有和保护成员, 从而实现代码的复用, 派生类可以增 加成员, 也可以隐藏和覆盖基类的成员。 对于公有继承, 基类成员的访问权限在派生类保持 不变。6、类与对象有什么区别解答要点:类是类型, 是对象的抽象, 对象是类的具体实例。一个类可以有多个对象,每个对象都 有自己的存储单元,而类不占存储单元。7、实现将输入的字符串反序输出,如输入windows 输出 swodniw 。找出并改正程序中的语法及逻辑错误(在原程序中画出出错语句,在右侧修改成正确的语句 , 同一类错误算一处错 误)。void mai

22、n() char c100,c1;int i ,j, k;printf(Enter a string: );scanf(%c,c);k=strlen(c);for (i=0,j=k-1;ik ;i+,j-)c1=ci;ci=cj;cj=c1;printf(%sn,c);本题考察字符数组参考答案:( 1) 缺少头文件 #include 缺少头文件 #include ( 2) scanf(%c,c); 改为 scanf(%s,c);3) for (i=0,j=k-1;ik;i+,j-)改为 for (i=0,j=k-1;ik/2;i+,j-)(4) c1=ci;ci=cj;cj=c1; 改为 c1

23、=ci;ci=cj;cj=c1; 8、分析以下代码段,回答问题。char a=how are you;char *p=how are you;(1)a2= k;和p2= k;哪个是错误的用法为什么( 2)a+; 和 p+; 哪个是错误的用法为什么本题考察字符数组与字符串参考答案:( 1 )p2= k 错误,因为指针 p 只能指向字符串,不能存储字符串和字符!( 2)a+ 错误,因为数组名为常量,其值不能修改!9、 count 函数统计字符串 str 中数字的数目,找出并改正函数定义中存在的错误。int count(char str )int i, num;for( i=0; i sizeof(

24、str); i+)if( 0=stri=9)num+1;参考答案( 1 ) int i, num;改为 int i, num=0;( 2) i sizeof(str);改为 stri!=0 或者 strlen(str)( 3) if( 0=stri=9)(4) num+1;改为num+;或者+num;(5) 缺少 return num;或将函数类型改为 void函数中输入num值六、编程题1编写一个程序输入一华氏温度,编程输出摄氏温度。已知:华氏温度(F)转换为摄氏温度(C)的计算公式为:C (F 32)* 5/9#includevoid main()float c,f;coutf;c=(f-32)*5/9;cout 摄氏温度: cendl;2、编写一个程序将输入的一个三位正整数逆转,例如,输入123,输出 321。#includevoid main()int n,i,j,k;coutn;i=n/100; etdata(1, 张三);stud1.setdata(2,李四);stud2.setdata(3,王五);for(int i=0;i3;i+)studi.dispdat

温馨提示

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

评论

0/150

提交评论