C++复习题(全部答案)--精选文档_第1页
C++复习题(全部答案)--精选文档_第2页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

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

文档简介

1、一、C+基础、变量、常量部分试题:(一)单选题8.由C+语言编写的代码程序( )A. 可直接执行(.exe才可以直接执行)B. 是一个源程序C. 经过编译即可执行 (经过编译链接才可以执行)D. 经过编译解释才能执行9.按照C+语言规定的用户标识符命名规则,不能出现在标识符中的是( )A. 大写字母 B. 中划线 C. 数字字符 D. 下划线10.下列选项中,不能用作标识符的是( )A. _1234_ B. _1_2 C. int_2_ D. 2_int11.以下选项中合法的用户标识符是( )A. long(关键字) B. _2Test C. 3Dmax D. A.dat12.以下不能定义为用

2、户标识符的是( )A. MainB. _0C. _intD. sizeof(运算符)13.列定义变量的语句错误的是( )A. int _int; B. double int_; C. char For; D. float USA;14.在C+语言中,非法的字符常量是( ) A.t B.017 C. "n" D.xaa29.以下程序的输出结果是()void main() int k=11; cout<<dec<<"k="<<k<<“,”; cout<<oct<<"k=&quo

3、t;<<k<<“,”; cout<<hex<<"k="<<k<<endl;A. k=11,k=12,k=11 B. k=11,k=13,k=13 C. k=11,k=013,k=0xb D. k=11,k=13,k=b41.不属于C+语言关键字的是( )。 Aint Bbreak Cwhile Dcharacter42.是C+语言提供的合法关键字的是( )。 AFloat Bsigned Cinteger DChar43.下列说法中,错误的是( )。 A每个语句必须独占一行,语句的最后可以是一个分号,也

4、可以是一个回车换行符号B每个函数都有一个函数头和一个函数体,主函数也不例外C主函数只能调用用户函数或系统函数,用户函数可以相互调用D程序是由若干个函数组成的,但是必须有、而且只能有一个主函数(二)填空题1.一个C+源程序至少有并且只能有一个 main(主)函数。2. 以下程序运行后的输出结果是 1012a 。#include<iostream.h>#include<iomanip.h>int main() int a=10; cout<<dec<<a<<oct<<a<<hex<<a<<e

5、ndl; return 0;3.以下程序运行后的输出结果是( 25 21 37 ) 。void main() int a,b,c; a=25;b=025;c=0x25; cout<<a<<" "<<b<<" "<<c<<endl; 4.以下程序运行后的输出结果是 2 1 。void main() int a=1,b=2; a=a+b;b=a-b;a=a-b; cout<<a<<" "<<b; 5. 结构化设计中的三种基本结构是_

6、顺序结构_、_选择结构_、_循环结构_。6.C+语言源程序文件的后缀是_.cpp_,经过编译后生成文件的后缀是_.obj_,经过链接后生成文件的后缀是_.exe_。7. 一个函数由两部分组成,它们是_函数首部_、_函数体_。8. 若x和y均为int型变量,则以下语句的功能是_交换变量x,y的值_。 x+=y; y=x-y; x-=y;二、运算符部分试题:(一)单选题 1. 以下程序的输出结果是( )void main()int a=1,b=2,c=3,d=4; cout<<(a<b?a:c<d?a:d)<<endl;A. 4 B. 3 C. 2 D. 1 1

7、5.下列运算符中优先级最高的运算符是( )A. <= B. = C. % D. && 16.以下程序的输出结果是( )main() int a=3,b=4; cout<<(a<=b)<<endl; A. 3B. 4C. 1D. 0 17.在C+语言中,以下非法的表达式是( ) A. x+B. i=j=0C. (char)(65+3) D. x+1=x+118.在C+语言中,以下非法的赋值语句是( )A. j+;B. +(i+1);C. x=j>0;D. k=i=j;19.表达式3.6-5/2+1.2+5%2的值是( )A. 4.3 B.

8、 4.8 C. 3.3 D. 3.820.设有语句:int a=3;则执行了语句a+=a-=a*a;变量a的值是( )A. 3 B. 0 C. 9 D. -1221.设有语句:int x=10;则执行了语句x+=x-=x-x;变量x的值是( )A. 10 B. 20 C. 40 D. 30 22.以下程序的输出结果是( )void main() int i=10,j=1; cout<<i-<<“,”<<+j<<endl;A. 9,2 B. 10,2 C. 9,1 D. 10,123.以下程序的输出结果是( )void main() int x=1

9、00,y=200; cout<<(x,y)<<endl;A. 200 B. 100C. 100 200 D.200 10024.以下程序的输出结果是( )void main() int x=10,y=3,z; cout<<(z=(x%y,x/y)<<endl;A. 1 B. 0 C. 4 D. 325.int k=0;,以下选项的四个表达式中与其他三个表达式的值不相同的是( )A. k+ B. k+=1 C. +k D. k+126.以下程序的输出结果是( )void main() int x,y,z; x=y=1; z=x+,y+,+y; co

10、ut<<x<<", "<<y<<", "<<z<<endl;A. 2,3,3 B. 2,3,2 C. 2,3,1 D. 2,2,127.设x、y、t均为int型变量,执行了以下程序后,变量y 的值为( )。void main() int x,y,t; x=y=3; t=+x|+y; cout<<y<<endl;A. 1B. 2C. 3D. 428.设int x=-1;执行表达式+x|+x|+x|+x,x的值是( )A. 0B. 1C. 2D. 445.逻辑运算

11、符两侧运算对象的数据类型( )。 A只能是0或1 B只能是0或非0正数 C只能是整型或字符型数据 D可以是任何类型的数据46.以下关于运算符优先顺序的描述中正确的是( )。 A关系运算符<算术运算符<赋值运算符<逻辑与运算符 B逻辑与运算符<关系运算符<算术运算符<赋值运算符 C赋值运算符<逻辑与运算符<关系运算符<算术运算符 D算术运算符<关系运算符<赋值运算符<逻辑与运算符48.判断char型变量s是否为小写字母的正确表达式是( )。 Aa <= s<=z B(s>=a) & (s<=z

12、) C(s>=a) && (s<=z) D(a<=s) and (z>=s)49.若希望当x的值为奇数时,表达式的值为“真”,x的值为偶数时,表达式的值为“假”。则以下不能满足要求的表达式是( )。 Ax%2=1 B!(x%2=0) C!(x%2) Dx%250.已知 x=45, y=a, z=0; 则表达式(x>=z && y<z | !y)的值是( )。 A0 B语法错 C1 D“假”51.执行以下语句后,y 的值为( )。int x,y,z;x=y=z=0;+x | +y && +z;A0 B1 C2 D

13、不确定值 55. 则执行下面语句后的w值是( )。 void main() int a=1,b=2,c=3,d=4,w; w=(a<b)?a:b; w=(w<c)?w:c; w=(w<d)?w:d; cout<<w<<endl; A1 B2 C3 D4(二)填空题:1.以下程序运行后的输出结果是 2007 。main() int x=2006,y=2007; cout<<(x,y); 2. 以下程序运行后的输出结果是 D 。void main() char ch='B' ch+=2; cout<<ch<&l

14、t;endl; 3.以下程序运行后的输出结果是 98 。 void main() int c; char ch=97; c=ch+1; cout<<c<<endl; 4. 以下程序运行后的输出结果是 123.46 。 #include<iostream.h> int main() float x=123.4567f; cout<<(int)(x*100+0.5)/100.0<<endl; return 0; 5.以下程序运行后的输出结果是 14 。 #include<iostream.h> void main() int

15、a=10; a=(3*5,a+4); cout<<a<<endl; 6.以下程序运行后的输出结果是 -10 -10 -7 。 #include<iostream.h> void main() int a=0,b=0,c=0; c=(a+=a-=5),(a=b,b+3); cout<<a<<" "<<b<<" "<<c<<endl; 7.以下程序运行后的输出结果是 0 。 #include<iostream.h> void main()

16、int a=5,b=4,c=3,x; x=a>b>c; cout<<x<<endl; 8.以下程序运行后的输出结果是 3 0 。 #include<iostream.h> void main() int a=3,b=2; b=a<0&&a+>3; cout<<a<<" "<<b<<endl; 9. 以下程序运行后的输出结果是 1 。 #include<iostream.h> void main() int x,a=1,b=2,c=3,d=4

17、; x=(a<b)?a:b;x=(x<c)?x:c; cout<<x<<endl; 10. 设int x=9,y=8;表达式x=y+1的结果是_1_。11. 定义int x,y;执行y=(x=1,+x,x+2);后, y的值是_4_。12. 定义int x=10,y,z; 执行y=z=x; x=y=z;后, x的结果是_1_。三、流程控制语句部分试题:(一)单选题2.void main()int i; for(i=0;i<3;i+) switch(i) case 0:cout<<i; case 1:cout<<i; defaul

18、t:cout<<i; 程序执行后的输出结果是( )A000112 B. 012 C. 012020 D. 1207.以下程序运行后的输出结果是 4 5 99 。#include<iostream.h>void main()int a=3,b=4,c=5,t=99;if(b<a && a<c) t=a;a=c;c=t;if(a<c && b<c) t=b;b=a;a=t;cout<<a<<" "<<b<<" "<<c&

19、lt;<endl;30.以下程序段的输出结果是( )void main() int x=5; if(x+>5) cout<<x<<endl; else cout<<x-<<endl;A. 4B. 5C. 6D. 731.有以下程序:void main() int n=4; while(n-) cout<<-n;程序执行后的输出结果是( ) A. 20 B. 31 C. 321 D. 21032.有以下程序void main() int y=10; while(y-) ; cout<<y<<endl;

20、程序执行后的输出结果是( ) A. y=0 B. y=-1C. y=1 D. while构成无限循环44.为了避免嵌套的if-else语句的二义性,C+语言规定else总是与( )组成配对关系。A缩排位置相同的ifB在其之前未配对的ifC在其之前未配对的最近的ifD同一行上的if47.选择出合法的if语句(设int x,a,b,c;)( )。 Aif(a=b) c+; Bif(a=<b) c+; Cif(a<>b) c+; Dif(a=>b) c+;52.已知int a=1,b=2,c=3; 以下语句执行后a,b,c的值是( )。if(a>b)c=a; a=b;

21、b=c;Aa=1, b=2, c=3 Ba=2, b=3, c=3Ca=2, b=3, c=1 Da=2, b=3, c=253.请阅读以下程序:该程序( )。void main() int x=-10, y=5, z=0;if (x=y+z) cout<<"*n"else cout<<"$n"A有语法错不能通过编译 B可以通过编译但不能通过连接C输出* D输出$54.执行完下面一段程序后x的值是( )。 void main() int a=1,b=2,c=4,d=3,x; if (a<b) if (c<d) x=1;

22、 else if (a<c) if (b<d) x=2; else x=3; else x=4; else x=5; cout<<x<<endl; A1 B2 C3 D456.以下switch语句结构哪一个是正确的?( )A. void main() int a=1,b=0,c1,c2,x,y; switch (a+b); case 1: y=a+b; break; case 0: y=a-b; break; B. void main() int a=1,b=0,c1,c2,x,y; switch a ( ) case c1: y=a-b; break; c

23、ase c2: x=a*b; break; default:x=a+b; C. void main() int a=1,b=0,c1,c2,x,y; switch (a*a+b*b) case 3: case 1: y=a+b; break; case 3: y=b-a; break; D. void main() int a=1,b=0,c1,c2,x,y; switch (a*a+b*b) default:y=a*b;break; case 3: x=a+b; break; case 10: case 11:y=a-b; break; 57.假定等级和分数有以下对应关系:等级:A 分数:8

24、5100等级:B 分数:6084等级:C 分数:60以下对于等级grade输出相应的分数区间,能够完成该功能的程序段是( )。A.void main()char grade;cin>>grade;switch (grade) case 'A':cout<<"85-100n" case 'B':cout<<"60-84n" case 'C':cout<<"<60n" default:cout<<"grade is

25、error!n"B.void main()char grade;cin>>grade;switch (grade) case 'A':cout<<"85-100n"break; case 'B':cout<<"60-84n" case 'C':cout<<"<60n" default:cout<<"grade is error!n"C.void main()char grade;cin>

26、>grade;switch (grade) case 'A':cout<<"85-100n"break; case 'B':cout<<"60-84n"break; case 'C':cout<<"<60n"default:cout<<"grade is error!n"D.void main()char grade;cin>>grade;switch (grade) case 'A

27、9;:cout<<"85-100n"break;case 'B':cout<<"60-84n"break;default:cout<<"grade is error!n"break;case 'C':cout<<"<60n"58.当执行以下程序段时,程序将( )。void main() intx=-1;do x=x*x;while (!x);A.循环体将执行一次 B.循环体将执行两次C.循环体将执行无数多次 D.系统将提示有语法错

28、误59.若i,j已定义为int类型,则以下程序段中内循环的总的执行次数是 ( )。for (i=5;i;i-)for (j=0;j<4;j+)A.20 B.24 C.25 D.3060.有以下语句:i=1;for(;i<=100;i+) sum+=i;与以上语句序列不等价的有( )。A. for(i=1; ;i+) sum+=i;if(i=100)break;B. for(i=1;i<=100;)sum+=i;i+;C. i=1;for(;i<=100;)sum+=i;D. i=1;for(; ;)sum+=i;if(i=100)break;i+;61.标有/*/的语句

29、的执行次数是( )。int y,i;for(i=0;i<20;i+)if(i%2=0)continue;y+=i;/*/A.20 B.19 C.10 D.9(二)填空题:2. #include<iostream.h> 0void main() int i,t=0; for(i=5;i>=0;i-) t*=i; cout<<t<<endl;3.写成下列程序的输出结果:#include<iostream.h>void main() int i=1; while(i<=15) if(+i%3!=2) continue;else cou

30、t<<i<< " "cout<<endl; 2 5 8 11 144. 输入a,输出结果是 very good 输入c,输出结果是 pass 。#include<iostream.h>void main() char n; cin>>n; switch(n) case 'a':case 'A':cout<<"very goodn"break; case 'b':case 'B':cout<<"goo

31、dn"break; case 'c':case 'C': case 'd':case 'D':cout<<"passn"break; case 'e':case 'E':cout<<"warningn"break; default:cout<<"errorn" 5. 以下程序的功能是计算:1-2+3-4+99-100void main() int i=1,j=1,s=0; while( i<

32、;=100 ) s+= i*j ; i+; j=-j ; cout<<s<<endl; 6. 若从键盘输入58,则输出结果是_585858_。#include<iostream.h>void main() int a; cin>>a; if (a>50) cout<<a; if (a>40) cout<<a; if (a>30) cout<<a; 7. 下面程序根据以下函数关系,对输入的每个x值,计算出y值。请在【】内填空。Xy2<x<=10x(x+2)-1<x<=21

33、/xx<=-1x-1void main()int x,y;cin>>x;if (【1】(x>2)&&(x<=10) y=x*(x+2);else if (【2】(x>-1)&&(x<=2) y=1/x;else if (x<=-1) y=x-1;else 【3】y=-1;if (y!= -1) cout<<y<<endl;else cout<”error”<<endl ;8. 以下程序是对用户输入的字母进行大小写转换。请在【】内填入正确内容。void main() char

34、 ch; cout<<”please input a letter:”;cin>>ch;if (【1】(ch>=A) && (ch<=Z) ch=ch+32;else if (ch>=a && ch<=z) 【2】ch=ch-32;cout<<” the converted letter is<<ch<<endl;9. 以下程序运行后的输出结果是_20 0_。 void main() int x=10, y=20, t=0; if (x=y) t=x; x=y; y=t; cou

35、t<<x<< " "<<y;10. 执行以下语句后,x、y和z 的值分别为_1,0,0_。int x,y,z;x=y=z=0;+x | +y && +z;11. 程序运行结果是_ 135_。#include<iostream.h>void main() int i; for(i=1;i+1;i+) if(i>4) cout<<i+; break; cout<<i+; (三)编程题1. 百钱百鸡:100元钱买100只鸡,公鸡一只5元钱,母鸡一只3元钱,小鸡一元钱三只,求100元钱能买

36、公鸡、母鸡、小鸡各多少只?2.输出九九乘法表。四、数组与指针部分试题:(一)单选题3. 以下数组定义中错误的是( )A. int x3=0; B. int x23=1,2,3,4,5,6;C. int x3=1,2,3,4,5,6; D. int x23=1,2,3,4,5,6;4.以下能正确定义二维数组的是( )A. int a3; B. int a3=2*3; C. int a3=; D. int a23=1,2,3,4; 5. 设有char array="China"则数组array所占的空间字节数为( ) A. 4 B. 5 C. 6 D. 7 6.对于以下定义正确

37、的叙述为( )char x="abcdefg"char y='a','b','c','d','e','f','g'A. 数组x和数组y等价B. 数组x和数组y的长度相同C. 数组x的长度大于数组y的长度D. 数组x的长度大于数组y的长度33.以下叙述中正确的是( )A. 可以在一个函数中调用另一个函数 B. 可以在一个函数中定义另一个函数C. main()函数必须放在其它函数之前 D. 所有被调用函数一定要在调用之前进行定义34.以下说法中正确的是( )A. C+

38、语言程序总是从第一个函数开始执行 B. 在C+语言程序中,要调用的函数必须在main()函数中定义C. C+语言程序总是从main()函数开始执行D. C+语言程序中的main()函数必须放在程序的开始部分35.以下程序的输出结果是( )void main( ) int a10=1,2,3,4,5,6,7,8,9,10,*p=a; cout<<*(p+2)<<endl;A. 3B. 4C. 1D. 236.以下程序的输出结果是( )void main() int a10=1,2,3,4,5,6,7,8,9,10,*p=a; cout<<(*p+9)<&

39、lt;endl;A. 0B. 1C. 10D. 937.以下程序的输出结果是( )void main() int a10=1,2,3,4,5,6,7,8,9,10,*p=&a3,*q=p+2; cout<<(*p+*q)<<endl;A. 16 B. 10 C. 8 D. 638.以下不能正确进行字符串赋初值的语句是( )A. char str5= "good!" B. char str="good!"C. char *str="good!" D. char str5='g','

40、o','o','d','!'39.以下程序的输出结果是( )void main() char str="ABCD",*p=str; cout<<int(*(p+4)<<endl;A. 68B. 'D'C. 0D. '0'40.以下程序的输出结果是( )void main() char str="aeiou",*p=str; cout<<*(p+4)<<endl; A. oB. uC. eD. f62.以下关于数组的描述正

41、确的是( )。 A. 数组的大小是固定的,但可以有不同的类型的数组元素B. 数组的大小是可变的,但所有数组元素的类型必须相同C. 数组的大小是固定的,所有数组元素的类型必须相同D. 数组的大小是可变的,可以有不同的类型的数组元素63.以下对一维整型数组a的正确说明是( )。 A.int a(10); B. int n=10,an;C.int n; D. const int SIZE=10; cin>>n; int aSIZE; int an; 64.在C+语言中,引用数组元素时,其数组下标的数据类型允许是( )。 A. 整型常量B. 整型表达式C. 整型常量或整型表达式D. 任何类

42、型的表达式65.以下对一维数组m进行正确初始化的是( )。 A. int m10=(0,0,0,0) ; B. int m10= ;C. int m =0; D. int m10=10*2;66.若有定义:int bb 8;。则以下表达式中不能代表数组元bb1的地址的是( )。 A. &bb0+1 B. &bb1 C. &bb0+ D. bb+167.假定int类型变量占用两个字节,其有定义:int x10=0,2,4;,则数组x在内存中所占字节数是( )。 A. 3 B. 6 C. 10 D. 2068.执行下面的程序段后,变量k中的值为( )。 int k=3, s

43、2; s0=k; k=s1*10;A. 不定值 B. 33 C. 30 D. 1069.以下程序的输出结果是( ) void main() int i, a10;for(i=9;i>=0;i-) ai=10-i;cout<<a2<<a5<<a8<<endl;A. 258 B. 741 C. 852 D. 36970.若说明:int a23; 则对a数组元素的正确引用是( ) 。 A. a(1,2) B. a1,3 C. a1>2!1 D. a2071.若有定义:int b34=0;则下述正确的是( ) 。 A. 此定义语句不正确B.

44、没有元素可得初值0C. 数组b中各元素均为0D. 数组b中各元素可得初值但值不一定为072.若有以下数组定义,其中不正确的是( ) 。 A. int a23;B int b3=0,1,2,3;C. int c100100=0;D. int d3=1,2,1,2,3,1,2,3,4;73.若有以下的定义:int t54;能正确引用t数组的表达式是( )。A. t24 B. t50 C. t00 D. t0,074.在定义int m 3=1,2,3,4,5,6;后,m10的值是( )。 A. 4 B. 1 C. 2 D. 575.在定义int n56后第10个元素是( )。 A. n25 B. n

45、24 C. n13 D. n1476.下述对C语言字符数组的描述中错误的是( )。 A. 字符数组可以存放字符串B. 字符数组中的字符串可以整体输入、输出C. 可以在赋值语句中通过赋值运算符"="对字符数组整体赋值 (strcpy()D. 字符数组可以像普通数组那样初始化77.下述对C+语言字符数组的描述中正确的是 ( )。A. 任何一维数组的名称都是该数组存储单元的开始地址,且其每个元素按照顺序连续占存储空间B. 一维数组的元素在引用时其下标大小没有限制C. 任何一个一维数组的元素,可以根据内存的情况按照其先后顺序以连续或非连续的方式占用存储空间D. 一维数组的第一个元素

46、是其下标为1的元素78.不能把字符串:Hello!赋给数组b的语句是( )。 A. char str10= 'H', 'e', 'l', 'l', 'o', '! 'B. char str10;str="Hello!"C. char str10;strcpy(str,"Hello!");D. char str10="Hello!"79.合法的数组定义是( )。A. int a="string" B. int a5=0,1

47、,2,3,4,5;C. int s="string" D. char a=0,1,2,3,4,5;80.以下程序运行后,输出结果是( )。 main() char arr24; strcpy(arr0,"you"); strcpy(arr1,"me"); arr03='&' cout<<arr0<<endl; A. you&me B. you C. me D. err99.若有说明:int a=2, *p=&a, *q=p;,则以下非法的赋值语句是( )。A p=q; B

48、 *p=*q; C a=*q; D q=a;100.若定义:int a=511, *b=&a;,则cout<<*b;的输出结果为:( ) A 无确定值 B a的地址 C 512 D 511101.已有定义int a=2, *p1=&a, *p2=&a; 下面不能正确执行的赋值语句是( )。A a=*p1+*p2; B p1=a; C p1=p2; D a=*p1*(*p2);102.变量的指针,其含义是指该变量的( )。A 值 B 地址 C 名 D 一个标志103.若已定义int a=5; 下面对(1)、(2)两个语句的正确解释是( )。(1) int *p

49、=&a; (2) *p=a;A 语句(1)和(2)中的*p含义相同,都表示给指针变量p赋值。B (1)和(2)语句的执行结果,都是把变量a的地址值赋给指针变量p。C (1)在对p进行说明的同时进行初始化,使p指向a;(2)变量a的值赋给指针变量p。D (1)在对p进行说明的同时进行初始化,使p指向a; (2)将变量a的值赋予*p。104.若有语句int *p, a=10; p=&a; 下面均代表地址的一组选项是( )。A a, p, *&a B &*a, &a, *pC *&p, *p, &a D &a, &*p, p105.若需要建立如图所示的存储结构,且已有说明double *p, x=0.2345; 则正确的赋值语句是( )。0.2345px A p=x; B p=&x; C *p=x; D *p=&x;106.有如下语句:int m=6, n=9, *p, *q; p=

温馨提示

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

评论

0/150

提交评论