C++基础+编程题复习 下载本文

08VC练习卷 总分:80分 -1.单项选择题

1. 在C++语言中,char型数据在内存中的存储形式是___a_____

A. ASCII码 B. 补码 C. 反码 D. 原码 2. 设n=10,i=4,则赋值运算n%=i+l执行后,n的值是___a_____。

A. 0 B. 3 C. 2 D. 1

3. 设int n=3;则++n的结果是____c____,n的结果是________。

A. 2 3 B. 3 2 C. 4 4 D. 5 3 4.设int m=l,n=2;则m++==n的结果是_a__。 A. 0 B. 1 C. 2 D. 3 5.设int m=l,n=2;则++m==n的结果是__b_。 A. 0 B. 1 C. 2 D. 3

6. 系统约定C++源程序文件名的缺省的扩展名为___a___。

A. cpp B. c++ C. bcc D. vcc 7. 设有说明“int a=15,b=17,c;”,执行表达式“c=a||(b+=b)”后,则a、b、c的值分别是 a

A. 15、17、1 B. 1、34、35 C. 15、34、1 D. 15、17、15

8. 设有说明“int x=10,y=4,f;float m;”,执行表达式“f=m=x/y”后,则f、m的值分别为 d

A. 2、2.5 B. 3、2.5 C. 2.5、2.5 D. 2、2.0

9. 设有语句“for(int i=5,sum=0;++sum,i<5;i++)sum+=i;”,则for()语句的执行情况是___a_____。

A. 循环0次 B. 循环4次 C. 循环5次 D. 循环6次

10. 有关函数重载的正确说法是___b___。 A. 函数名不同,但参数的个数和类型相同 B. 函数名相同,但参数的个数不同或参数的类型不同

C. 函数名相同,参数的个数和类型也相同 D. 函数名相同,函数的返回值不同,而与函数的参数和类型无关

11. 下列有关编译预处理命令的说明中,正确的是____a______。

A. 以“#”开头的行,可出现的函数定义内或函数定义外 B. 以“#”开头的行,后面不可有分号 C. 以“#”开头,可出现在一行中的任何位置

D. 以“#”开头,必放在程序开头

12. 以下四组函数原型说明中,满足C++函数重载规则的是______c______。

A. float f(float x); void f(float y); B. float f(float x); void f2(float x,float y);

C. float f(float x,int y); void f(float y); D. float f(float y); float f(float y); 13. 当一个函数无返回值时,函数的类型应定义为___a_____。

A. void B. 任意 C. int D. 无 14. C++语言中规定函数的返回值的类型是由____d____。

A. return语句中的表达式类型所决定 B. 调用该函数时的主调用函数类型所决定

C. 调用该函数时系统临时决定 D. 在定义该函数时所指定的函数类型所决定 15. 以下叙述中不正确的是___d_____。 A. 在函数中,通过return语句传回函数值 B. 在函数中,可以有多条return语句 C. 主函数名main后的一对圆括号中也可以带有形参

D.调用函数必须在一条独立的语句中完成 16.下列数组的定义中,___c_____是错误的。 A. char cal[]={'c','h','a','r'} ; B. char *ca2=\ C. char ca3[4]=\ D. int array[]={6,5,3,4} ;

17. 在int b[][3]={{1},{3,2},{4,5,6},{0}};中b[2][2]值是___c_____ A. 0 B. 5 C. 6 D. 2

18. 在int a[5]={1,3,5};中,数组元素a[1]的值是__c_ A. 1 B. 0 C. 3 D. 2 19. 设有说明语句: char s[]=\

strlen(s)的值是____a_______。

A. 2 B. 3 C. 8 D. 14 20设有说明语句:char s[]=\的值是__b___。 A. 2 B. 9 C. 11 D. 15 21. 数组作为函数的形参时,把数组名作为实参,传递给函数的是____a________。 A. 该数组的首地址 B.该数组的元素个数

C.该数组中的各元素值D. 该数组的大小 22. 运算符+、<=、=、%中,优先级最低的运算符是_____c_______。 A. + B. <= C. = D. %

23. 循环语句for(<表达式1>;<表达式2>;<表达式3>)<语句>中,<语句>的执行情况是__c_.

A. 至少执行一次 B. 至少执行两次 C. 可能执行,也可能不执行 D. 不执行

24. 下列关于开关语句的描述中,__a_____是正确的.

A. 开关语句中default子句可以没有,也可以有一个

B. 开关语句中每个语句序列中必须有break语句

C. 开关语句中default子句只能放在最后 D. 开关语句中case子句后面的表达式可以是整型表达式

25. 下述关于break语句的描述中,___c____是不正确的

A. break语句可用于循环体内,它将退出该重循环

B. break语句可用于开关语句中,它将退出开关语句

C. break语句可用于if体内,它将退出if语句

D. break语句在一个循环体内可以出现多次

26. 下列While循环的次数是___a_____. While( int i=0) i--;

A. 0 B. 1 C. 5 D. 无限 27.循环语句\x=0,y=0;y!=100||x<10;)x++;\,执行的循环次数是__a___。

A. 无限次 B. 10 C. 11 D. 100 28. C++语言中while和do-while循环的主要区别是___a_____.

A. do-while的循环体至少无条件执行一次 B. while的循环控制条件比do-while的循环控制条件严格

C. do-while允许从外部转到循环体内 D. do-while的循环体不能是复合语句

29. 使用如setw()的操作对数据进行格式输出时,应包含___c_____文件 A.iostream.h B.fstream.h C.iomanip.h D. stdlib.h

30. 判断字符串s1是否大于字符串s2,应当使用___d_____

A. if(s1>s2) B. if(strcmp(s1,s2)) C. if(strcmp(s2,s1)>0) D. if(strcmp(s1,s2)>0) 31. 判断字符串a和b是否相等,应当使用____d____

A. if(a==b) B. if(a=b) C. if(strcmp(a,b)) D. if(!strcmp(a,b))

32. 有下面的程序段,则___d_____ char a[3],b[ ]=\a=b;cout<

A. 运行后将输出China B. 运行后将输出Ch C. 运行后将输出Chi D. 编译出错 33. 下面程序段的运行结果是___b_____ char c[5]={?a‘,‘b‘,‘\\0‘,‘c‘,‘\\0‘}; cout<

A. ‘a‖b‘ B. ab C. ab0c D. abc 34. 下面是对字符数组s的初始化,其中不正确的是__d______

A. char s[5]=―abc‖; B. char s[5]={‘a‘,‘b‘,‘c‘};

C. char s[5]=‖‖; D. char s[5]=‖abcdef‖;

35. 定义如下变量和数组:

int k; int a[3][3]={1,2,3,4,5,6,7,8,9}; 则下面语句的输出结果是___a_____ for(k=0;k<3;k++) cout<

A. 3 5 7 B. 3 6 9 C. 1 5 9 D. 1 4 7 36. 若二维数组a有m列,则在a[I][J]前的元素个数为____b____

A. J*m+I B. I*m+J C. I*m+J-1 D. I*m+J+1

37. 若有说明:int a[][3]={1,2,3,4,5,6,7};则a数组第一维的大小是___b____

A. 2 B. 3 C. 4 D. 无确定值 38. 若有说明:int a[3][4];则数组a中各元素____c____

A. 可在程序的运行阶段得到初值0 B. 可在程序的编译阶段得到初值0

C. 不能得到确定的初值 D. 可在程序的编译或运行阶段得到初值0 39. 若有说明:int a[3][4]={0};则下面正确

的叙述是___d_____

A. 只有元素a[0][0]可得到初值0 B. 此说明语句不正确

C. 数组a中各元素都可得到初值,但其值不一定为0 D. 数组a中每个元素均可得到初值0

40. 若有说明:int a[10];则对a数组元素的正确引用是____d____

A. a[10] B. a[3.5] C. a(5) D. a[10-10]

41. 以下定义一维整型数组a的正确方法是___d_____

A. int a(10); B. int n=10,a[n]; C. int n;cin>>n;int a[n]; D. #define SIZE 10 int a[SIZE];

42. 在C++语言中,引用数组元素时,其数组下标的数据类型允许的是____c____

A. 整型常量 B. 整型表达式 C. 整型常量或整型表达式 D. 任何类型的表达式

43. 执行以下语句序列:

enmu{Red,Blue,Yellow} c1,c2;c1=Yellow; //A

cout<

A. 输出 1 B. 输出 2 C. 输出 3 D. B行语法错

44. 下面程序的运行结果是___b_____ #inlcude void main()

{char a[ ]=\for(I=1;I<7;I++) if(a[j]

t=a[j]; a[j]=a[7]; a[7]=a[j];cout<

} A. mogninr B. mo C. morning D. mornin

45. 下面程序的运行结果是___d_____ #include #include void main()

{char a[80]=‖AB‖,b[80]=‖LMNP‖; int I=0; strcat(a,b); while(a[I++]!=‘\\0‘) b[I]=a[I]; cout<

} A. LB B. ABLMNP C. AB D. LBLMNP

46. 下面程序的运行结果是___a_____ void main()

{char ch[7]={\for(I=0;ch[I]>='0'&&ch[I]<='9';I+=2) s=10*s+ch[I]-'0';

cout<256 47. 下述对C++语言字符数组的描述中错误的是____c____

A. 字符数组可以存放字符串 B. 字符数组可以整体输入,输出

C. 可以在赋值语句中用赋值运算符“=”对字符数组整体赋值

D. 不可以用关系运算符对数组中的字符串进行比较

48. 下列____a____是语句.

A. ; B. a=17 C. x+y D. cout<<‖\\n‖

49. 设e1和e3是表达式,与语句for(e1;;e3)s;等同的语句是____d________。 A. for(e1;e1;e3) s; B. for(e1;e3;e3) s; C. for(e1;0;e3) s; D. for(e1;1;e3) s; 50. 若定义:float x;int a,b;则正确的switch语句是____d____。 A. switch(x)

{ case 1.0:cout<<\ case 2.0:cout<<\ }

B. switch(x)

{ case 1.2:cout<<\ case 3 : cout<<\ }

C. switch(a+b)

{ case 1 : cout<<\ case 1,2:cout<<\ }

D. switch(a+b)

{ case 1:cout<<\\n\ case 2:cout<<\ }

-2.填空题 1. 设有语句“int x[4][3]={3,4,5,6,7,8,9,10,11,12};”,则x[3][2]的初值是____0__。 2. 执行语句序列

char s[20]=\程序设计\

cout<

3. 设有语句“ char s[ ]=\m=strlen(s);”,则m 的值是___5_____。 4. 执行以下语句序列后,y的值为 ____17________。 #define S(x) x*x int y,z=5; y=S(z+2);

5. 已知函数f的定义是: int f(int n)

{ n*=2; return n+1;} 则执行 int m=6,n=2; m=f(n);

后,m和n的值分别是____5__2__。 6. 下面程序运行后输出的第二行是___10__35__5____ 。 #include int a=5;

void main() { int a=10,b=20;

cout<

for(int i=1; i<6; i++) {a+=i; b+=a; }

cout<

cout<

7. C++中默认main函数的返回类型是__int___,所以在定义main函数时可以不写返回值类型。

8. 以下程序的执行结果是__s=10____ 。 #include int sum(int); void main() { int s,i; for(i=1;i<=10;i++) s=sum(i);

cout<<\}

int sum(int k) { int x=0; return(x+=k); }

9.以下程序的执行结果是_19_24_30_37_45__ 。 #include int func(int a) { static int x=10; int y=1;

x+=a; a++; y++; return(x+y+a); }

void main() { int i=3; while(i<8)

cout<

10. 下面函数要求计算两个整数x、y之和,并通过形参z传回该和值,请填空。

void add(int x, int y,__________) {__________= x+y; } Int>z z 11. 若有定义:int a[3][4]={{1,2},{0},{4,6,8,10}};则初始化后,a[1][2]得到的初始值是__0___,a[2][1]得到的初值是__6___。

12. 以下程序的执行结果是_0,0,1____。 #include void main() {

int x=5,y=2;

cout<=y)<

13. 语句cout<<\的输出结果为__\\\\___。 vc练习卷 总分:115分 -1.单项选择题

1. 在一个被调用函数中,关于return语句使用的描述,错误的是___d___。

A. 被调用函数中可以不用return语句 B. 被调用函数中可以使用多个return语句 C. 被调用函数中,如果有返回值,就一定要有return语句

D. 被调用函数中,一个return语句可返回多个值给调用函数

2. 以下程序输出的结果是a=___a___,b=_______ #include void main(void)

{ for(int a=1,b=1; a<=5; a++) { if (b>=8) break;

if(b%2==1){b+=7; continue;} b-=3; }

cout<<\

} A. 2 8 B. 1 7 C. 8 2 D. 7 1

3. 在C++语言程序中,有关函数的定义正确的是_____b___。

A. 函数的定义可以嵌套,但函数的调用不可以嵌套

B. 函数的定义不可以嵌套,但函数的调用可以嵌套

C.函数的定义和函数的调用均不可以嵌套 D. 函数的定义和函数的调用均可以嵌套 4. 在循环语句的循环体中使用break语句的作用是___b___。

A. 结束本次循环 B. 结束该层的循环 C. 结束开关语句 D. 结束程序执行 5. 下面程序段的运行结果是____a____。 #include void main() {int I;

for(I=1;I<=5;I++) { if(I%2) cout<<―*‖; else continue; cout<<―#‖; } cout<<―$\\n‖; }

A. *#*#*#$ B. #*#*#*$ C. *#*#$ D. #*#*$

6. 以下程序的正确运行结果是___d___。 #include int f(int); void main() { int a=2,i;

for(i=0; i<3; i++) cout<

int f(int a) { int b=0; static int c=3; b++; c++; return(a+b+c);

} A. 7 7 7 B. 7 10 13 C. 7 9 11 D. 7 8 9 7. 设有宏定义和语句: #define P(x,y) x/y #define PP(a,b) a*b

int c=P(2+3,2+3)+PP(2+3,2+3); 则变量c的值是____b___ 。

A. 26 B. 17 C. 17.5 D. 31 8.有关函数重载的正确说法是__b___。 A. 函数名不同,但参数的个数和类型相同 B. 函数名相同,但参数的个数不同或参数的类型不同

C. 函数名相同,参数的个数和类型也相同 D. 函数名相同,函数的返回值不同,而与函数的参数和类型无关

9. 选择出合法的if语句(设有int x,y;),正确输出x与y的大小关系___b____。 A. if(x!=y)

if(x>y) cout<<\; else cout<<\ B. if(x!=y)

if(x>y) cout<<\ else cout<<\else cout<<\ C. if(x!=y)

if(x>y) cout<<\else cout<<\cout<<\ D. if(x!=y);

if(x>y)cout<<\ else cout<<\ else cout<<\