C++程序设计复习题及参考答案_第1页
C++程序设计复习题及参考答案_第2页
C++程序设计复习题及参考答案_第3页
C++程序设计复习题及参考答案_第4页
C++程序设计复习题及参考答案_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

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

文档简介

1、1.2.3.4.5.6.7.8.9.10.11.12.13.C+程序设计课程复习资料单项选择题:下列字符串中可以用作 C+标识符的是ld定义变量 int a=6 ,则 a+ 的值是 .6C已知字母A的ASCII码为65,则表示字符常量 A错误的是A. 101 B. x41 C. 65D.“A”结构化程序由三种基本结构组成,不包括C. 控制结构 D. 循环结构 D. -f;”,则释放指针所指内存空间的操作是A. 顺序结构 B. 选择结构 己知有定义: const int D 5;int i=1;double f=;char c=15;则下列选项错误的是A. +i;B. D-;C. c+;若有定义

2、为“ int *r =new int 10;A. delete r; B. delete *r C. delete r; D. delete r ;F列哪个是 C+语言的不正确的标识符B. Ab1 C. bgc D. int下列哪个是C+语言的合法的字符常量A. ” 0”B. 054 C. x89 D. 092定义整型变量 x,y,z 并赋初始值 6 的正确语句是 C. x=y=z=6; D. int x,y,z=6; 是一个源程序经过解释才能执行A. int x=y=z=6; B. int x=6,y=6,z=6; 用C+语言编写的代码程序A. 可立即执行B.C. 经过编译即可执行D.将两个

3、字符串连接起来组成一个字符串时,选用的函数是A. strlen () B. strcpy () C. strcat () D. strcmp () 在程序中,预处理命令开头的字符都是 A. * B. # C. & D. 在C+语言中,表示一条语句结束的符号是A. “#” ?”下面的循环语句中循环体执行的次数为15.16.17.18.19.20.21.a23.24.25.26.27. for(int i=0; in/2) break;2 2+1 C.n/2-1在下面的一维数组定义中,有语法错误的语句是 A. int a =1,2,3; B. int a10=0;C. int a ; D. int

4、 a5;下面的保留字中,不能作为函数的返回类型 A. void B. int C. new D. long下面的函数声明中, “void BC(int a, int b); ”的重载函数是 A. int BC(int x, int y); B. void BC(int a, char b);C. float BC(int a, int b, int c=0); D. int BC(int a, int b=0);假定AB为一个类,则该类的复制构造函数的声明语句为A. AB&(AB x); B. AB(AB x); C. AB(AB* x); D. AB(AB&);表达式( 1,2,3,4 )的

5、结果是 A. 1 B. 2 C. 3 D. 4 在函数中如果不说明变量的存储类型,则默认的存储类型是 A. auto B. static C. extern D. register下面字符序列中,合法的 C+ 常量是 B. 5LD.AB声明的自动型变量 a 在没有赋值的情况下,其值为 B. -1C.1 D.随机数设“ int f(int); ”和“ int g(int); ”是函数 f 和 g 的原形,以下将 f 作为语句调用的是 A. g(f(3) B. f(g(3) C. g(f(3)+2) D. p=f(g(3)1)下面对构造函数和析构函数正确定义的项是 A. X:X( 参数 ), X:

6、X() B. void X:X(), void X:X()C. X:X( 参数 ), X:X(参数 ) D. void X:X( 参数 ), void X:X( 参数 )变量生存期是指 A. 变量定义 B. 变量在内存中分配存储单元到被释放期间C.程序的运行D.可执行代码的生存期以下选项中C+表达式不能正确表示的数学关系avxw b为A. ax & x=bB. x=b & a=x) & !(xb) D. axp=5C.A.*p=5D.*=5以下选项中,决定函数的返回值的类型是 A. 调用该函数的主调函数类型语句中的表达式类型C.定义函数时所指定的返回值类型D.调用函数时临时决定下面 for 语

7、句的循环次数为 for(int i=0,x=0; !x & i=5; i+);A. 无穷次 .5C在下面的字符数组定义中,有语法错误的语句是 a20=abcdefg a =x+y=55a15= 1, 2a10= 5若用数组名作为函数调用的实参,传递给形参的是 A. 数组的首地址B.数组中第一个元素的值C. 数组全部元素的值D.数组元素的个数假定AB为一个类,则执行“ AB a(4),b5,*p2;”语句时,自动调用该类构造函数的次数为A. 6 B. 7 C. 9 D. 11当使用 fstream 流类定义一个流对象,并打开一个磁盘文件时,文件的隐含打开方式为28.29.30.31.32.33.

8、34.35.36.二、1.2.A. ios:in B. ios:out C. ios:in | ios:outD.没有填空题:若 a 是一个字符数组, 则使用输入输出流对象cout 向屏幕输出数组 a 中所存字符串的语句为当一个对象定义时, C+编译系统自动调用函数建立该对象并进行初始化。+语言的参数传递机制包括值传递和传递两种。,然后使 p 的值增 1。4.假定 p 是一个指针,则 (*p)+ 运算首先访问5. 假定对二维数组a34进行初始化的数据为2,5, 6, 2,8,7,则a11被初始化为6. 设px指向一个类的动态分配的对象,则执行delete px;语句时,将自动调用该类的 7.

9、变量的基本类型有 、实型、字符型和枚举型。8. 语法的三种基本结构为顺序结构、选择结构和 结构。9. 一个指针指向一个Data类对象,它保存着该对象的 ,相应的指针类型为Data类。10. 若do循环的“尾”为“ while(+i5的相反表达式为 。122. 假设在程序中a、b、c均被定义成整型,所赋值都大于1,则能正确表示数学式abc的表达式是 (不使用强制类型转换)。23. 假定a是一个一维数组,则ai的指针访问方式为。24. 对一个类中的数据成员的初始化可以通过构造函数中的初始化表实现,也可以通过构造函数中的 实现。+中的标识符只能由字母、数字和 组成。+语句cout120;可以用8进制

10、数表示(输出)120。27.利用“对象名.成员变量”形式访问的对象成员仅限于被声明为 的成员。+在调用一个函数的过程中,可以直接或间接地调用该函数本身,这种调用称为 调用。29. 在C+程序中包含一个头文件或程序文件的预编译命令为 。0。30. 假定一维数组的定义为“ int a8; ”,则该数组所含元素的个数为 31. 十六进制常量前面应该加 为前缀。32. 变量一般需要先赋初值再参与运算,变量没有赋初值时,将由系统自动置为33. 当程序中执行到语句时,将结束所在循环语句中循环体的一次执行。+中规定,数组元素的下标从开始。35. 假定有定义 int *p ,则指向 p 变量的指针变量 pp

11、定义语句为36. 类 test 的析构函数名是 三、判断题:1. 在C+中,自减运算符“-”可以用于变量,也可以用于常量。语句中必须有 break 语句,否则无法退出 switch 语句。3. 若 S 表示一条 C+ 语句, while(1)S 必定是无限循环。4. 若有说明: int *p1,*p2,m=3,n; 则 p1=&m;p2=p1; 是正确的赋值语句。5. 在C+语言中,类中的成员函数能存取类中的私有数据。6. 控制格式输入输出的操作子 oct 不是设置域宽的。127。7. 在C+中,0127是一个合法的整数,最高位的0实际上是不必要,其值就是8. 如果 x 是一个整型变量,则语句

12、“ int *p=new intx; ”是正确的。9. 数组是若干相同类型的数据的集合。10.在C+语言中,可以使用 new运算符创建的对象或对象数组,可以使用运算符delete删除之。 11.若类A是类B的友元类,且类 B是类C的友元类,则类 A也是类C的友元类。12. 对于 ofstream 类对象 file , feof 成员函数的返回值为真表示打开文件失败。13. 在 switch 语句中, switch 后面的表达式可以为任意类型。14.n、x6A 、101均是 C+的字符常量。15. 一个变量的地址就称为该变量的“指针” 。16. 如果 (x=y) ,则 (*x=*y) 。17.

13、函数体内声明的静态变量,至多只会被初始化一次。18. 构造函数和析构函数都不能重载。语句的循环体至少执行一遍。 19.在C+语言中,while语句的循环体有可能一遍都不执行,而do while20. 在C+的命名标识符中,大小写字母是不加区分的。21. 引用就是某个变量的别名,对引用的操作,实质上就是对被引用的变量的操作。 22. 在C+中,二维数组中元素排列的顺序是按行存放的,即在内存中先顺序存放第一行的元素,再存放第二行的元素。 char *p 说明了 p 是指向字符串的常量指针。 24. 说明或定义对象时,类名前面不需要加 class 关键字。 25. 在C+中,空语句表示什么都不做,因

14、此毫无意义。26. 预处理命令是在进行编译前执行的,然后再进行正常编译。27. 语句“ char c=c; char p=&c; ”是错误的。 28. 在一个被调用函数中,一个 return 语句可返回多个值给调用函数。 29. 静态成员变量是整个类的所有对象共用的。 函数只能按规定向文件写入所指定的字符数。 +中,任何一个表达式加上一个分号就构成一个语句。 32. 在说明语句“ int a(15), &b=a, *p=&a;”中,b的值与*p的值是相等的。33. 在C+中,函数声明时要用函数原型,即定义函数时的函数头部分。循环中,循环变量的作用域是该循环的循环体内。 35. 在传值调用中,要

15、求实参与形参的类型完全一致并且个数相等。 36. 使用 class 定义的类成员默认的访问权限是私有的( private )。 37. 在C+中,条件运算符的结合方向为从左到右。四、写出程序的运行结果:1.#include void main()int a=10, b=15;a*=3;int b=a+20; coutb ;coutbendl;运行结果 :2.#includeint SD(int a, int b, char op)switch(op)case +: return a+b;case -: return a-b;void main()int x=20, y=8;coutSD(x,y

16、,+) SD(x,y,-)endl;运行结果 :3.#include void main( )static int b3=1,2,3,4,5,6;b02=12, b12=18;cout*bt*(b+1)t*(b+1)t*(*(b+1)+2)n; coutb02+b12+b22endl;运行结果 :4.#includevoid main()char ch;cinch;switch(ch)case A:case a: cout1 ; break;case B:case b: cout2 ; break;case C:case c: cout3 ; break;default: coutbad!;b

17、reak;以上程序运行时,分别输入Acb,则运行结果 :5.#includevoid main()int s1=0, s2=1;for(int i=2; i5; i+)s1+=i;s2*=i;couts1,s2endl;运行结果 :6.#includevoid ff(int x) coutff(int): xendl; void ff(double x) coutff(double): xendl;void main()float a;ff(a);char b(a);ff(b);运行结果 :7.#includevoid main()int s=0;for(int i=1;i7;i+=2)s+=

18、i*i;couts=sendl;运行结果 :8.#includevoid main()int a9=3,5,7,9,11,13,15,17,25;int *p=a;for(int i=0;i9;i+) if(i+1)%3=0) cout*(p+i) ;coutendl;运行结果 :9.#include class Apublic:A()cout1;A()cout2;class B:public Apublic:B()cout3;B()cout4;void main()B b;运行结果 :10.#include#includeint SC(int a, int b, int c)if(ab) a

19、=b;if(ac) a=c; return a;void main()int x,y,z; x=5,y=15,z=25; coutSC(x,y,z)endl;运行结果 :#include const int n=5;void main()int ann=3,2,4,1,5,8,7,2,5,6,11.6,9,1,4,3,5,5,3,6,2,2,8,1,8,6;int s=0;for(int i=0;in;i+)s+=aii+ain-i-1;if(n%2=1)s-=an/2n/2;couts;运行结果 :12.#include class sint i,j;public:void setij(in

20、t a,int b)i=a,j=b;int GetMul() return i*j; ;void main( )s *p;p=new s3;for(int j=0;j3;j+)pj.setij(j,j);etMul() delete p;运行结果 :13.#includeint c;void f1(int x,int *sum)static int y; x+; y+; c=c+y; *sum=(x+y)/c;void main()int b=100;f1(1,&b);coutb cendl; f1(2,&b);coutb cendl; 运行结果 :14.#include void main(

21、)int i, *d=new int5;for(i=0;i5;i+)di=2*i+1; coutdi ; deleted;运行结果 :15.#include class ABint a;public:AB(int aa=0)a=aa;AB( )coutaendl;class B:public ABint b;public:B(int aa=0, int bb=0):AB(aa)b=bb; B( )coutb;void main( )B x(5),y(6,7);运行结果 :16.#includeint LB(int *a, int n)int s=1;for(int i=0;in;i+)s*=*

22、a;a+; return s;void main()int a5=1,2,3,4,5; coutLB(a,5)endl;运行结果 :17.#include int f(int a)int b=0;static int c=3; b+, c+;return(a+b+c);void main( )int a=2,I; for(I=0;I3;I+) coutf(a)endl;运行结果 :18.#include class Aint *a;public:A(int x) a=new int(x); cout*a;A() delete a;cout0; ;void main()A x(3),*p;p=n

23、ew A(5);cout1!+(1!+2!)+(1!+2!+ +20 !)=sendl;delete p;运行结果:五、完成程序:1. 完成以下程序,计算s=1+12+123+1234+12345。void mai n() int t=0, s=0, i;for( i=1; )t = i +;s = s + t;coutse ndl;回答:2. 完成以下程序,求数组中的最大元素值和最小元素值。#in cludevoid mai n()int a8=46,38,72,55,24,63,50,37;int max=*a, min=*a;for(i nt *p=a+1;pa+8;p+)if( ax=

24、*p;if( in=*p;coutmax minen dl;回答:FN=FN-1+FN-2。#in cludevoid mai n()int i;long f20=1,2;for(i=2 ;;i+)fi=;for(i=0 ; i20 ; i+)coutfi;回答:4.从键盘输入一个4行4列的实数矩阵到一个二维数组中,完成以下程序,求出主对角线上元素之积。#in cludevoid mai n()double a44=0,r=1;int i,j;for(i=0;i4;i+)for(j=0;j4;j+)20 i成以下程序,计算n!的值,即求(1!)+(1!+2!)+(1!+2!+3!)+i 1 n

25、 1+(1!+2!+3!+20!)。void mai n()int i,n;double s=0,t;for(i=1;i=20;i+) ;for(n=1; +) t=t* n;s=s+t; 回答:6.有一个数列,它的第一项为5,第二项为8,以后每一项都是它的前两项之和,完成以下程序,产生出此数列的前10项,并依次显示出来。#in cludevoid mai n()int a10;a0=5;for(int i=2;i10;i+)ai=;for(i=0;i10;i+)coutai;coute ndl;回答:六、程序改错:1.要求下面程序的输出结果为“100 20,在第1-7行中存在着3条语句错误,

26、指出错误语句行的行号,并改正错误。#in clude class Sint n;public:S() n=20; S(i nt nn) n=nn; ;void Show() cout * ; ;void shows(S &y)求下面程序的输出结果为 “ 2 3 1, 在第 1-12 行中存在着3 条语句错误,指出错误语句行的行号,并改正错误。#include class P i nt n;public:void Setn(int val) n=val; void Show();void P:Show() etn(i+1); 求下面程序的输出结果为“ d=16,f=25, 在第 1-14 行中存在着 3 条语句错误

温馨提示

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

评论

0/150

提交评论