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

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

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

22. int x=0,s=0; while(!x!=0) s+=++x; cout<

则_____b______。

A. 运行程序段后输出0 B. 运行程序段后输出1

C. 程序段中的控制表达式是非法的 D. 程序段执行无限次

23. 设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; 24. 执行下列程序,输入为1的输出结果是____a_____。

#include main() {int k; cin>>k; switch(k)

{case 1:cout<

case 3:cout<

} A. 1 B. 2 C. 2 3 4 5 D. 1 2 3 4 25. 循环语句for(<表达式1>;<表达式2>;<表达式3>)<语句>中,<语句>的执行情况是__c____.

A. 至少执行一次 B. 至少执行两次 C. 可能执行,也可能不执行 D. 不执行 26. 选择出合法的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<<\

27. 下面程序的运行结果是___a____ #include void main() {

int i=0; while(++i) {

if(i==10) break; if(i%3!=1) continue; cout<< i; }

} A. 1 4 7 B. 1 1 1 C. 3 3 3 D. 2 4 6

28. 以下程序输出的结果是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

29. int x=-1; do

{x=x*x;} while(!x);

下列说法正确的是_____c______。

A. 是死循环 B. 循环执行两次 C. 循环执行一次 D. 有语法错误 30. 下面程序段____d_______。 for(t=1;t<=100;t++) {cin>>x;

if(x<0)continue;

cout<

A. 当x<0时整个循环结束 B. x>=0时什么也不输出

C. cout永远也不执行 D. 最多允许输出100个非负整数

31. 下列for循环的循环体执行次数为____d______.

For(int i=0,j=10;i=j=10;i++,j--)

A. 0 B. 1 C. 10 D. 无限 32. 以下程序的输出结果是___a_____。 #include void main() {

int x=1,y=0,a=0,b=0; switch(x) { case 1: switch(y)

{ case 0:a++;break; case 1:b++;break; }

case 2:a++;b++;break; }

cout<

} A. 2,1 B. 1,1 C. 1,0 D. 2,2 33. break语句只能用在__d_____ A. 开关语句中

B. 函数体中允许语句出现的任一位置 C. 循环语句中

D. 开关语句或循环语句中

34. 下面程序段的运行结果是_____a______。 #include void main( ) {

int I,j,a=0;

for(I=0;I<2;I++) {

for(j=0;j<4;j++) {

if(j%2) break; a++; } a++; } cout<

} A. 4 B. 5 C. 6 D. 7 35. 与以下程序段等价的是____a____。 while(a)

{ if(b) continue; c; }

A. while(a) {if(!b)c;} B. while(c) {if(!b) break; c; }

C. while(c) {if(b) c;} D. while(a) {if(b) break; c; }

36.为了避免嵌套的if-else语句的二义性,C++语言规定else总是与_c_组成配对关系。 A. 缩排位置相同的if B. 在其之前未配对的if

C. 在其之前未配对的最近的if D. 同一行上的if

37. 下述关于循环体的描述中,___c____是错误的.

A. 循环体中可以出现break语句和continue语句

B. 循环体中还可以出现循环语句 C. 循环体中不能出现goto语句 D. 循环体中可以出现开关语句 38. 以下程序的输出结果是__a_。 #include func(int a,int b) { static int m,i=2; i+=m+1; m=i+a+b; return(m); }

void main()

{ int k=4,m=1,p; p=func(k, m); cout<

p=func(k,m); cout<

} A. 8,17 B. 8,16 C. 8,20 D. 8,8 39. 已知int f(int);和int g(int);分别是函数f和g的原型。下列语句中,将函数f作为语句调用的有_____d_____。 A. f(3)+g(3); B. p/=f(3); C. g(f(3)); D. f(g(3));

40.以下函数调用语句中实参的个数是_a__。 excc((v1,v2),(v3,v4,v5),v6); A. 3 B. 4 C. 5 D. 6

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

A. 以“#”开头的行,可出现的函数定义内或函数定义外

B. 以“#”开头的行,后面不可有分号 C. 以“#”开头,可出现在一行中的任何位置

D. 以“#”开头,必放在程序开头 42. 在下面的函数原型声明中,存在着语法错误的是____d______。

A. void BC(int a,int);B. void BD(int ,int); C. void BE(int ,int=5); D. int BF(int x;int y); 43. 采用函数重载的目的在于___d_____。 A. 实现共享B. 减少空间

C. 提高速度 D. 使用方便,提高可读性 44. 设有宏定义和语句: #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. 26B. 17C. 17.5D. 31

45. 下列对重载函数的描述中,___a_____是错误的。

A. 重载函数中不允许使用默认参数 B. 重载函数中编译是根据参数表进行选择的

C. 不要使用重载函数来描述毫无相干的函数

D. 构造函数重载将会给初始化带来多种方式

46. 对于一个功能不太复杂,并且要求加快执行速度,选用______a_____合适。 A. 内联函数B. 重载函数 C. 递归调用D. 嵌套调用

47. 下面的哪个保留字不能作为函数的返回类型?_____c_____。

A. void B. int C. new D. long

48.关于函数返回值的的描述正确的是_c__。 A. 函数返回表达式的类型一定与函数的类型相同

B. 函数返回值的类型决定了返回值表达式的类型

C. 当函数类型与返回值表达式类型不同,将对返回值表达式的值进行类型转换 D. 函数返回值类型就是返回值表达式类型 49.有关函数重载的正确说法是__b_。 A. 函数名不同,但参数的个数和类型相同 B. 函数名相同,但参数的个数不同或参数的类型不同

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

50. 以下叙述中不正确的是____d____。 A. 在函数中,通过return语句传回函数值 B. 在函数中,可以有多条return语句 C. 主函数名main后的一对圆括号中也可以带有形参

D.调用函数必须在一条独立的语句中完成 -2.填空题

1. 以下程序输出的结果是a=_2_,b=_8_。 #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<<\}

2. 设有循环语句:

for (int i=0,x=0,s=0;i<=9&&x!=55;i++) { cin>>x; s+=x; }

在这个循环语句中,循环体最多执行 _10__次,最少执行___1___次。 3. 设有语句:

int i=1,s=1;

for( ; s+i<6,i=5 ; i++) s+=i;

以上for循环语句的循环次数为 _无数次_。 4. 下列程序运行后的输出结果是_s=7_。 #include void main() {int s=0,k;

for (k=7;k>=0;k--) { switch(k) {case 1: case 4:

case 7:s++;break; case 2: case 3:

case 6:break; case 0:

case 5:s+=2;break; } }

cout<<\ }

5. 若用0至9之间不同的三个数构成一个三位数,以下程序将统计出共有多少种方法。请填空。

#include void main()

{ int i,j,k,count=0; for(i=1;i<=9;i++) for(j=0;j<=9;j++)

if (________)continue; else for(k=0;k<=9;k++)

if(________)count++; cout<>k!=j

6. 指出下面程序的输出结果_1 1 2 3 5 8 13 21 34 55__。

#include void main()

{ int i1=1,i2=1,i3,i;

cout<

cout<

7. Continue语句只能在__循环__语句中。 8. 若有int i=10, j=0; 则执行完语句 if(j=0) i++; else i--;

后i的值为__9___。

9.以下程序输出的第一行_4_,第二行_1_。 #include void main(void) {int x=6; do{ x-=2;

cout<

10. 每个基本语句的结束标志是_分号__。 11. 以下程序的输出结果是 __200,100____。 #include

void f(int &a,int &b){int t=a;a=b;b=t;} void main(void) { int x=100,y=200; f(x,y);

cout<

12. 以下程序的执行结果是__25___ 。 #include int add(int a,int b); void main() {

extern int x,y;

cout<

int x=20,y=5; int add(int a,int b) {

int s=a+b; return s; }

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

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

后,m和n的值分别是_5__2___。

14. 函数my_cmp( )的功能是比较字符串s和t 的大小,当s等于t时返回0,否则返回s和t的第一个不同字符的ASCII码差值,即当s>t时返回正值,当s

my_cmp(char *s, char *t) {

while (*s==*t) {

if (*s=='\\0') return(0); ++s, ++t; }

return__________; } *s-*t

15. 若有宏定义: #define T(x,y,z) x*y*z/4 则表达式T(8-3,2*4,2+3)的值是__-40__。 16. 下面程序运行后输出的第二行是__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<

17. 以下程序的执行结果是__x=10____。 #include void func(int); void main() { int x=10; func(x);

cout<<\}

void func(int x) { x=20; }

18. 若函数的形式参数是指针类型,则实参可以是指针名、数组名或_变量的地址___。 19. 以下程序的执行结果是__88.18 97__。

#include

void func(int),func(double); void main()

{ double a=88.18; func(a); char b='a'; func(b); }

void func(int x)

{ cout<

20. 有如下函数说明: void display(char c);则它的返回值是__无值型__。

21. 下列函数A与B功能等价,请填空。 程序A: int f(int n)

{ if(n<=1) return n;

else return f(n-1)+f(n-2) ; }

程序 B: int f(int n) { int t0,t1,t;

t0=0 ; t1=1 ; t=n ; while(__________ ){ t=__________ ; t0=t1; t1=t; n-- ; }

return t;

} n>=1 t0+t1

22. 以下程序输出的结果是a=__2___,b=___8__。

#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; }