c复习题及答案.doc_第1页
c复习题及答案.doc_第2页
c复习题及答案.doc_第3页
c复习题及答案.doc_第4页
c复习题及答案.doc_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

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

文档简介

一、选择题1. 在每个C+程序中都必须包含有这样一个函数,该函数的函数名为A 。A. main B. MAIN C. name D. function2. 若a,b均为int型变量,为了将10赋给a,将20赋给b,则对应以下cin语句的正确输入方式为 B 。(代表回车换行,代表空格)。 cin a b; A1020 B10_20 C10,20 D20_103. 在以下关于C+语言的注释的叙述中,不正确的是 C 。 AC+程序中,注释可用/*、*/形式表示,也可用/形式表示 BC+编译器在编译一个程序时,将跳过注释,不对其进行处理 CC+编译器在编译一个程序时,可发现注释中的单词拼写错误 D程序中注释的多少不会影响所生成的可执行文件的长度4. 以下叙述不正确的是 C 。 A在C+程序中,严格区分大小写字母 B一个C+源程序有且仅有一个main函数 C在C+程序中,注释只能位于一条语句的后面 D一个C+程序总是从main函数开始执行5. C+语言对C语言做了很多改进,C+语言相对于C语言的最根本的变化是 D A增加了一些新的运算符B允许函数重载,并允许设置缺省参数C规定函数说明符必须用原型D引进了类和对象的概念6. C+是 C A. 面向对象的程序设计语言B. 结构化程序设计语言C. 既是面向对象的程序设计语言又是结构化程序设计语言D. 非结构化程序设计语言7. 下列合法的标识符为 D A. abde+ B. #KDJF C. 67KDJ D. DK3_8. 关于字符串和字符的关系正确的是 C A. “A”与A是相同的B. 字符串是常量,字符是变量C. “A”与A是不同的if (xy)z=x; s=z*z;elsez=y;s=1/(z*z);if (xy)z=x; s=z*z;elsez=y;s=1/(z*z);D. “A ”与“A”是相同的9. 下面关于语句的说法正确的是 B A. 下面这两段程序的执行效果是一致的B. 空语句是只有一个分号的语句,它其实什么也不干C. 语句的构成不一定需要分号D. 语句的书写对程序的运行不起作用,因此可以随便写都可以10. 以下各标识符中,合法的用户标识符组为 D 。A. PAd,P#d,b-b,abc,_0123,ssipedB. cin,a10,CPP,float,del_word,signedC. void,max,hiy,list,*jerD. a,temp,_isw,INT,keep,wind11. 在VC+中,以下语句的输出为 D 。 short int k= -1; cout k , (unsigned short) k endl; A-1,-1 B-1,32767 C-1,32768 D-1,6553512. 若给出以下程序,其输出为 B 。 #include using namespace std; int main ( ) int a=4,b=7;cout (a=a+1,b+a,b+1) 0?sin(x):-sin(x) Bsqrt(fabs(sinx) Csqrt(sqrt(sinx*sinx) Dfabs(sqrt(sin(x)15. 下列 A 是C+语言的有效标识符?A_No1BNo.1 C12345 Dint16. C+语言中,表示一条语句结束的标号是 B A# B; C/ D17. 每个C+程序中都必须有且仅有一个 C A类B预处理命令 C主函数D语句18. 下列数据类型不是C+语言基本数据类型的是 D 。A字符型 B整型 C实型 D数组19. 下列字符列中,可作为C+语言程序自定义标识符是 B 。 Aswitch Bfile Cbreak Ddo 20. 运算符 +、=、=、% 中,优先级最低的运算符是 C 。 A + B= C= D% 21. 下列字符列中,可以作为“字符串常量”的是 B 。 A ABC Bxyz Cuvw D a 22. 设变量m,n,a,b,c,d均为0,执行(m = a= =b)|(n=c= =d)后,m,n的值是 D 。 A0,0 B 0,1 C 1,0 D 1,123. 字符串vmx43np102q的长度是 A 。A 8 B 10 C 17 D 16 24. 在C+语言中,自定义的标识符 D 。A能使用关键字并且不区分大小写B不能使用关键字并且不区分大小写C能使用关键字并且区分大小写D不能使用关键字并且区分大小写25. 设有代码“int a = 5;”,则执行了语句“a + = a - = a*a;”后,变量a的值是 C 。A3 B 0 C -40 D 1226. 设a为5,执行下列代码后,b的值不为2的是 C 。Ab = a/2 Bb = 6-(-a) Cb = a%2 Db = a 3 ? 3: 227. 设x和y均为bool量,则x & y为真的条件是 A 。A. 它们均为真 B. 其中一个为真 C. 它们均为假 D. 其中一个为假28. 若给定条件表达式(m)?(a+): (a-),则其中表达式m C 。 A. 和(m= =0)等价 B. 和(m= =1)等价 C. 和(m!=0)等价 D. 和(m!=1)等价29. 在C+语言的if语句中,用作判断的表达式为 D 。 A. 关系表达式 B. 逻辑表达式 C. 算术表达式 D. 任意表达式30. 设i和k都是int类型,则以下for循环语句 B 。 for ( i=0, k= -1; k=1; i+, k+ ) cout *n; A. 判断循环结束的条件不合法 B. 是无限循环 C. 循环体一次也不执行 D. 循环体只执行一次31. 若有以下语句,则输出结果为 A 。 int a=2,b=1; cout b?a大于b:a小于b endl; A. a大于b B. a小于b C. 1 D. 输出语句有错32. int k=10;while(k=0) k=k-1;则下面描述正确的是 C 。A. while循环执行10次 B. 循环是无限循环C. 循环体语句一次也不执行 D. 循环体语句执行一次33. int a=1,b=2,c=2,t;while(ab) t=a;a=b;b=t;c-;couta”,”b”,”c;运行结果为 D 。A. 1,2,0 B. 2,1,0 C. 1,2,1 D. 2,1,134. int x=-1;do x=x*x;while(!x);下列说法正确的是 C 。A. 是死循环 B. 循环执行两次C. 循环执行一次 D. 有语法错误35. 以下能正确计算1*2*3*10的程序段是 C 。A. do i=1;s=1; B. do i=1;s=0;s=s*i; i+; s=s*i;i+; while(i=10); while(i=10);C. i=1;s=1; D. i=1;s=0; do s=s*i; dos=s*i;i+; i+;while(i=10); while(i=10);36. 以下描述正确的是 C 。A. 由于do-while循环中循环体语句只是一条可执行语句,所以循环体内不能使用复合语句B. do-while循环由do开始,用while结束,在while(表达式)后面不能写分号C. 在do-while循环体中,一定要有能使while后面表达式的值变为零(“假”)的操作D. do-while循环中,根据情况可以省略while37. C+中while和do-while循环的主要区别是 A 。A. do-while的循环体至少无条件执行一次B. while的循环控制条件比do-while的循环控制条件严格C. do-while允许从外部转到循环体内D. do-while的循环体不能是复合语句38. 下面有关for循环的正确描述是 D 。A. for循环只能用于循环次数已经确定的情况B. for循环是先执行循环体语句,后判断表达式C. for循环中,不能用break语句跳出循环体D. for循环的循环体语句中,可以包含多条语句,但必须用花括号括起来39. 对for(表达式1; ;表达式3)可理解为 B 。A. for(表达式1;0;表达式3) B. for(表达式1;1;表达式3)C. for(表达式1;表达式1;表达式3)D. or(表达式1;表达式3;表达式3)40. for(i=2;i= =0;) printf(“%d”,I-);循环执行的次数是 B 。A. 无限次 B. 0次 C. 1次 D. 2次41. 在C+编程语言中,以下正确的描述是 B 。A. continue语句的作用是结束整个循环的执行B. 只能在循环体内和switch语句体内使用break语句C. 在循坏体内使用break语句或continue语句的作用相同D. 从多层循环嵌套中退出,只能使用goto语句42. 下面程序段 D 。for(t=1;tx; if(x0) continue; coutt;A. 当x=0时什么也不输出C. cout永远也不执行 D. 最多允许输出100个非负整数43. 定义一个函数实现交换x和y的值,并将结果正确返回。能够实现此功能的是 C 。A. swap(int x, int y) int t; t=x; x=y; y=t; B. swap(int *x, int *y) int t; t=x; x=y; y=t; C. swap(int *x, int *y) int t; t= *x; *x = *y; *y=t; D. swap(int *x, int *y) int *t; t=x; x=y; y=t; 44. 说明语句int (*p) ( );的含义是 C 。A. p是一个指向一维数组的指针变量 B. p是指针变量, 指向一个整型数据C. p是一个指向函数的指针,该函数的返回值是一个整型 D. 以上都不对45. 设有说明int (*p) 4 ; 其中的标识符p是 C 。A. 4个指向整型变量的指针变量 B. 指向4个整型变量的函数指针C. 一个指向具有4个整型元素的一维数组的指针D. 具有4个指向整型变量的指针元素的一维指针数组46. 若有如下声明,下列说法错误的是 C 。struct em char a; char b; A. struct是结构体类型关键字 B. em是结构体类型名 C. em 是用户声明的结构体变量 D. a,b是结构体成员名47. 若有下列定义,则对结构体变量的成员引用错误的是 C 。struct date int year;int month; int day;struct student int no;char name16;date birthday; stud;A. stud.no B. C. stud.birthday D. stud.birthday.year48. 下列叙述中,不正确的是 B 。A. 类的构造函数可以重载 B. 类的析构函数可以重载C. 一个类可以不定义构造函数 D. 一个类可以不定义析构函数49. 已知宏定义: #define N 3 #define Y(n) (N+1)*n) (N+1)*5+1)执行语句z=2*(N+Y(5+1); 后,变量z的值是 B 。 A. 42 B. 48 C. 52 D. 出错50. 类的构造函数的作用是 C A)一般成员函数的初始化B)类的初始化C)对象的初始化D)删除类创建的对象51. 下列说法正确的是 B A)内置函数在运行时是将该函数的目标代码插入每个调用该函数的地方B)内置函数在编译时是将该函数的目标代码插入每个调用该函数的地方C)类的内置函数必须在类体内定义D)类的内置函数必须在类体外通过加关键字inline定义二、填空题1. 程序的三种基本的控制结构是: 顺序结构 、 选择结构 、 选择结构 2. 假定一个结构类型定义为:“struct D int a ; union int b ; double c ; ; D * d2 ; ;” ,则该类型的大小为20 字节。3. C+语言中的每条基本语句以; 作为结束符,每条复合语句以作为结束符。4. 关系表达式x+y5的相反表达式为x+y=0);6. 下面程序段的运行结果为 * 。x=2;docout“*”;x-; while(!x=0);7. 定义内置函数的方法是在函数的返回值类型之前增加关键字 inline 。8. 假定a为一个整型数组名,则元素a4的字节地址为a+16 。9. 假定一个一维数组的定义为“char a8 ;”,则该数组所含元素的个数为8 ,所占存储空间的字节数为32 。10. 已知int a32=3, 2, 1; 则表达式“a00/a01/a02”的值是 1 。11. 若用数组名作为函数调用时的实参,则实际上传递给形参的是 数组首地址 。12. 如果一个函数无返回值,定义它时函数类型应是 void 。13. 预处理命令以 # 开头。14. 假定a是一个二维数组,则aij的指针访问方式为*(ai+j) 或 *(*(a+i)+j)。15. C+在编译时,可以将所调用函数的代码直接嵌入到主调函数中,而不是将流程转出去。这种嵌入到主调函数中的函数称为 内置函数 。16. 使用内置函数可以节省运行时间,但却增加了 目标函数 的长度。17. C+允许用同一函数名定义多个函数,这些函数的参数个数和参数类型不同。这就是 函数的重载 。18. 利用C+编程语言可以建立一个通用函数,其函数类型和形参类型不具体指定,用一个虚拟的类型来代表。这个通用函数就称为 函数模板 。19. 对一个类中的数据成员的初始化可以通过构造函数中的 初始化表实现,也可以通过构造函数中的函数体 实现。20. 假定AB为一个类,则执行“AB a10;”语句时,系统自动调用该类的构造函数的次数为10 。 三、填空完成下面的程序1. #include using namespace std; int main( ) int a, b, c, x; cina; couta=ab; coutb=bc; coutc=cendl; if (a=b&b=c) coutthe three numbers are eauqlb & ac) x=a; else if (bc) x=b;else x=c; coutthe greatest number is:x=A&c=a&c=z ) n+; c=getchar( );3. 鸡、兔共有30只,脚共有90个,下面程序段是计算鸡兔各有多少只,x代表有多少只鸡,y代表有多少只兔子,请填空完成程序。for(x=1;x=29;x+) y=30-x; if( 2*x+4*y=90 ) coutx y; 4. 下面的程序是求2个或3个正整数中的最大数,用带有默认参数的函数实现。请填空完成程序。#include using namespace std;int main()int max(int a,int b, int c=0 ); int a,b,c,m1,m2; cinabc; m1= max(a,b,c); m2= max(a,b); couta,b,c三个正整数中的最大数为:m1endl; couta,b两个正整数中的最大数为:m2a) a=b; if(ca) a=c; return a;四、给出下列程序运行后的输出结果1. # include using namespace std;void SB(char ch) switch(ch) case A: case a: cout well!; break; case B: case b: cout good!; break; case C: case c: cout pass!; break; default: cout bad!; break; int main( ) char a1=B,a2=c,a3=f;SB(a1);SB(a2);SB(a3);SB(A);cout endl;return 0;答案:good! pass! bad! well!2. #includeusing namespace std;int main()int a,b; for(a=1,b=1;a=20) break; if(b%3= =1) b+=3;continue; b- =5;coutaendl; return 0;答案:83. #includeusing namespace std;main( )int i,j,x=0; for(i=0;i2;i+) x+; for(j=0;j=3;j+) if (j%2) continue; x+; x+; cout“x=”xendl; 答案:x=84. #includeusing namespace std;main( )int i; for(i=1;i=5;i+) if(i%2) cout“*”; else continue;cout“#”; cout“$n”; 答案:*#*#*#$5. #includeusing namespace std;void main( ) int I,j,a=0; for(I=0;I2;I+) for(j=0;j4;j+) if(j%2) break; a+; a+; coutaendl;答案:46. 运行以下程序时,从键盘键入right?请给出回车后运行的结果。#includeusing namespace std;void main()char c; while(c=getchar()!=?) putchar(+c);答案:sjhiu7. #includevoid main( )int I; for(I=1;I=5;I+) switch(I%2) case 0:I+; cout#;break; case 1:I+=2; cout*; default: coutn; 答案:* #8. #include using namespace std;int a=5; int main ( ) int a=10, b=20

温馨提示

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

评论

0/150

提交评论