c++复习易错题Word下载.docx

上传人:b****7 文档编号:22516333 上传时间:2023-02-04 格式:DOCX 页数:28 大小:24.65KB
下载 相关 举报
c++复习易错题Word下载.docx_第1页
第1页 / 共28页
c++复习易错题Word下载.docx_第2页
第2页 / 共28页
c++复习易错题Word下载.docx_第3页
第3页 / 共28页
c++复习易错题Word下载.docx_第4页
第4页 / 共28页
c++复习易错题Word下载.docx_第5页
第5页 / 共28页
点击查看更多>>
下载资源
资源描述

c++复习易错题Word下载.docx

《c++复习易错题Word下载.docx》由会员分享,可在线阅读,更多相关《c++复习易错题Word下载.docx(28页珍藏版)》请在冰豆网上搜索。

c++复习易错题Word下载.docx

12,下列关于switch语句描述中,【】是正确的。

(A)switch语句中default子句只能放在最后

(B)switch语句中每个语句序列中必须有break语句

(C)switch语句中case子句后面的表达式只能是整型表达式

(D)switch语句中default子句可以没有,也可以有一个

13,执行语句:

for(i=1;

i++<

4;

)后;

变量i的值是【】。

(A)3(B)4(C)5(D)不定

14,下列for循环语句执行的次数是【】。

for(inti=0,x=0;

x&

i<

=5;

i++)

(A)5(B)无限(C)1(D)6

15,下列while循环语句的循环次数是【】。

while(inti=0)i--;

(A)0(B)1(C)2(D)无限

16,下列do...while循环的次数是【】。

intx=-1;

do

{x=x*x;

}

while(!

x);

(A)无限(B)1(C)2(D)0

17,若有以下定义和语句,且0<

10,则对数组元素地址的正确表示是【】。

  inta[]={1,2,3,4,5,6,7,8,9,0},*p,i;

  p=a;

(A)&

(a+1)(B)a++(C)&

p[i](D)*P

18,以下叙述中正确的是【】

(A)break语句只能用于switch语句题中

(B)continue语句的作用是使程序的执行流程跳出包含它的所有循环

(C)break语句只能用在循环体内和switch语句体内

(D)在循环体内使用break语句和continue语句的作用相同

19,已知枚举类型声明语句为:

enumCOLOR{WHITE,YELLOW,GREEN=5,RED,BLACK=10};

则下列说法错误的是【】。

(A)枚举常量WHITE的值为1(B)枚举常量RED的值为6

(C)枚举常量BLACK的值为10(D)枚举常量YELLOW的值为1

20.在32位PC机上使用C++语言,若有如下定义:

structdata

{inti;

doublef;

charch 

;

}b 

则结构变量b占用内存的字节数为【】。

(A)1(B)2(C)8(D)13

21,下列关于数组下标的描述中,错误的是【】。

(A)C++语言中数组元素的下标是从0开始的

(B)数组元素下标是一个整常型表达式

(C)数组元素可以用下标来表示

(D)数组元素的某维下标值应小于该维的大小值

21,intb[][3]={{1},{3,2},{4,5,6},{0}};

则b[1][2]的值为【】。

(A)0(B)6(C)2(D)3

22,下列给字符数组进行初始化中,【】是正确的。

(A)chars3[][3]={‘a’,’x’,’y’};

(B)chars2[3]="

xyz"

(C)chars1[]="

12345abcd"

(D)chars4[2[3]={"

"

mnp"

};

23,下面选项中等价的是【】。

(A)inta[2][3]={1,0,2,2,4,5}与inta[2][]={1,0,2,2,4,5};

(B)inta[][3]={1,0,2,2,4,5}与inta[2][3]={1,0,2,2,4,5};

(C)inta[2][3]={3,4,5}与inta[][3]={3,4,5};

(D)inta[2][3]={0,1}与inta[2][3]={{0},{1}};

24,下面程序的运行结果是【】。

charc[5]={'

a'

'

b'

\0'

c'

cout<

<

s;

(A)'

'

(B)ab(C)abc(D)以上三个答案均有错误

25,若有以下语句:

inta[10]={1,2,3,4,5,6,7,8,9,10},*p=&

a[3],b;

b=p[5];

则b的值为【】。

(A)5(B)6(C)8(D)9

26,若有以下定义和语句,且0<

(a+1)(B)a++(C)&

p[i](D)*P

27,设intx[]={1,2,3,4,5,6};

*p=x;

则值为3的表达式是【】。

(A)p+=2,*++p(B)p+=2,*p++(C)p+=3,*p(D)p+=2,++*p

28,设inta[]={1,2,3,4,5,6};

*p=a;

则值为5的表达式是【】。

(A)*p+5(B)*(p+4)(C)*p+=9(D)p+5

29,若用数组名作为函数调用时的实参,则实际上传递给形参的是【】。

(A)数组首地址(B)数组的第一个元素值

(C)数组中全部元素的值(D)数组元素的个数

30,对数组名作函数的参数,下面描述正确的是【】。

(A)数组名作函数的参数,调用时将实参数组复制给形参数组

(B)数组名作函数的参数,主调函数和被调函数共用一段存储单元

(C)数组名作参数时,形参定义的数组长度不能省略

(D)数组名作参数,不能改变主调函数中的数据

31,采用函数重载的目的在于【】。

(A)实现共享(B)减少空间(C)使用方便,提高可靠性(D)提高速度

32,重载函数在调用时选择的依据中,【】是错误的。

(A)参数个数(B)参数的类型(C)参数的顺序(D)函数的类型

33,在C++中,关于下列设置参数默认值的描述正确的是【】。

(A)不允许设置参数的默认值

(B)设置参数默认值只能在定义函数时设置

(C)设置参数默认值时,应该是先设置右边的再设置左边的

(D)设置参数默认值时,应全部参数都设置

34,已知函数f的原型是:

voidf(int*x,long&

y);

则以下对函数f正确的调用语句是(其中a和b是实参)

【】。

(A)f(a,b);

(B)f(&

a,b);

(C)f(a,&

b);

(D)f(&

a,&

35,下列存储标识符中,【】不属于局部变量。

(A)函数形参(B)自动类(C)外部静态类(D)寄存器类

36,下列关于析构函数的描述中,错误的是【】。

(A)析构函数的函数体都为空(B)析构函数是用来释放对象的

(C)析构函数是系统自动调用的(D)析构函数是不能重载的

37,下面的各种函数中,哪个不是类的成员函数【】。

(A)构造函数(B)友元函数(C)析构函数(D)复制构造函数

38,以下代码运行后,abcd的值为:

()

inta,b,c,d;

a=b=c=1;

d=++a||++b&

++c;

1,1,1,1B:

2,2,2,1

2,1,1,2D:

2,1,1,1

@//应该是++a||++b&

++c这样结合,++a时a=2,为真,短路求值,后面都不做

所以b=1c=1,结果为真,所以d=1

39,下列【】是语句。

B:

a=17C:

x+yD:

\n

A

40,下面常数中错误的是【】

0xA5B:

2.5e-2C:

3e2D:

0583

41,有如下程序

#include<

iostream.h>

voidmain()

{

intx=1,a=0,b=0;

switch(x)

{

case0:

b++;

case1:

a++;

case2:

b++;

}

cout<

"

a="

a<

b="

b<

\n"

该程序的输出结果是()

a=2,b=1B:

a=1,b=1C:

a=1,b=0D:

a=2,b=2

42,有inta=1,b=1;

执行表达式后:

(a++)&

++b,则a的值为【1】,b的值为【2】。

=======(答案1)=======2

=======(答案2)=======1

43,下列do-while循环的循环次数为()

inti=5;

i--<

endl;

i--;

}while(i!

=O);

0B:

1C:

5D:

无限

44,若a为double类型的变量,表达式a=1,a+5,a++的值为【1】

=======(答案1)=======1.0=========或=========1.00=========或=========1.000

=========或=========1.0000=========或=========1.00000

45,字符型数据在内存中的存储形式是:

【】

原码B:

补码C:

反码D:

ASCII码

46,已知:

inta[]={1,2,3,4,5,6},*p=a;

下面表达式中其值为5的是【】

p+=3;

*(p++);

p+=5;

*p++;

p+=4;

*++p;

D:

*p++;

判断共10题(共计10分)

1,局部静态变量与自动变量作用域相同,但生命周期不同.

Y

2,continue语句只能出现在循环体中.

3,当说明一个结构变量时,系统分配给它的内存是各成员所需内存量的总和。

4,作用域运算符(:

:

)只能用来限定成员函数所属的类.

N

5,静态生存期的标识符的寿命是短的,而动态生存期标识符寿命是长的.

二、程序填空题

1.以下程序将数组中的元素按逆序存放。

请在横线处填上适当的语句,将程序补充完整。

 #include<

 voidmain()

 {

  inta[12],i,j,t;

  for(i=0;

12;

i++)

cin>

>

a[i];

6;

  {

(1);

(2);

(3);

}//数组元素交换

 }

t=a[i]a[i]=a[11-i]a[11-i]=t

2.下面程序功能是将整型数组a中的10个元素用2种方法依次输出。

#include<

voidmain()

inta[10]={1,2,3,4,5,6,7,8,9,10},i 

int*p 

for(i=0 

10 

_______

(1)______________;

//使用数组下标

for(

(2) 

p<

a+10 

p++)

(3);

//使用指针变量

a[i]p=a*p

3.编写程序求1!

+2!

+3!

+4!

+5!

和,(其中求阶乘是用函数来实现的),请在有下划线处补充完整。

________

(1)__________;

voidmain()

{longs=0;

for(inti=1;

____

(2)__________;

1!

="

s<

longintfac(intx)

{staticintb=1;

b*=x;

______(3)__________________;

longintfac(intx)或longintfac(int)

s+=fac(i)或s=s+fac(i)

returnb

4.编写程序是用递归算法求n!

请在有下划线处补充完整。

iostream.h>

intf1(inta);

inta=6;

(1)<

endl;

intf1(inta)

return(a==O)?

1:

(2);

功能:

求两个数的最大公约数

-------------------------------------------------------*/

5,#include<

intm,n,k;

cin>

m>

n;

k=m%n;

/***********SPACE***********/

while(【?

】)

{

m=n;

【?

】=k;

k=【?

】;

}

【?

=======(答案1)=======k!

=0=========或=========k

=======(答案2)=======n

=======(答案3)=======m%n

=======(答案4)=======n

fl(a)a*f1(a-1)

6,功能:

以下程序的功能是产生并输出杨辉三角的前七行。

1

11

121

1331

14641

15101051

1615201561

voidmain()

inta[7][7];

inti,j;

for(i=0;

7;

a[i][0]=1;

for(i=2;

for(j=1;

j<

i;

j++)

a[i][j]=【?

for(j=0;

a[i][j]<

\t"

=======(答案1)=======a[i][i]=1;

=======(答案2)=======a[i-1][j-1]+a[i-1][j]=========或========a[i-1][j]+a[i-1][j-1]

=======(答案3)=======j<

=i=========或=========i>

=j=========或=========j<

i+1

=========或=========i+1>

j

=======(答案4)=======cout<

7:

下面程序的功能是输出1到100之间每位数的乘积大于每位数的和的数。

例如:

数字26,数位上数字的乘积12大于数字之和8。

intn,k=1,s=0,m,t;

for(n=1;

n<

=100;

n++)

k=1;

s=0;

【?

while(m!

=0)

{

k=k*t;

s=s+t;

【?

}

if(k>

s)

cout<

}

=======(答案1)=======

m=n

=======(答案2)=======

t=m%10

=======(答案3)=======

m=m/10

8:

求100-1000之间的水仙花数(所谓"

水仙花数"

是指一个3位数,

其各位数字立方和等于该数本身,如图所示)

inti,i1,i2,i3,m;

for(i=100;

i<

i1=【?

i2=【?

i3=【?

m=i1*i1*i1+i2*i2*i2+i3*i3*i3;

if(i==m)

1000

i/100

i/10%10=========或=========i%100/10

=======(答案4)=======

i%10

三、改错题(指出程序中下划线那行中的错误,每行2分,共10分)

1、#include<

{int*ptr1,*ptr2,a,b,t;

请输入2个整数:

a>

b;

ptr1=&

a;

ptr2=&

if(ptr1<

ptr2)

{t=a;

a=b;

b=t;

max="

*ptr1<

min="

*ptr2<

指针使用错误,比较a,b的大小,应该加上*号,*ptr1<

*ptr2

2,#include<

voidf(intb[10])①

{

intmax,min;

max=min=b[0];

for(inti=1;

10;

{if(max<

a[i])max=a[i];

if(min>

a[i])min=a[i];

max<

min<

endl 

inta[10];

intsum;

for(inti=0;

{cin>

sum+=a[i];

f(a);

sum 

①数组作为形参,没有空间分配,不能指定数组长度,应写成voidf(intb[])

②sum变量没有初始化,应写成sum=0

3,题目:

计算并输出100—200之间的所有素数的平方根之和.

--------------------------------------------------------

注意:

不可以增加或删除程序行,也不可以更改程序的结构。

------------------------------------------------------*/

math.h>

doubles,sn;

intn,k,f,m;

s=0.0;

for(n=101;

=199;

n+=2)

sn=sqrt(n);

m=(int)sn;

k=2;

f=0;

/***********FOUND***********/

while(k<

=m&

f=0)

if(n%k==0)f=0;

m++;

if(f)s=s+sn;

=======(答案1)=======while(k<

f==0

=======(答案2)=======if(n%k==0)f=1;

=======(答案3)=======k++;

=======(答案4)=======if(!

f)s=s+sn;

=========或=========if(f==0)s=s+sn;

4,题目:

在一个具有N个数的数组中查找并删除一个数K。

-------------

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 自然科学 > 天文地理

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1