C++复习题.docx

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

C++复习题.docx

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

C++复习题.docx

C++复习题

一、单项选择题(每题2分,共60分)

1.下列关于C++与C语言关系描述中错误的是【】。

(A)C++是C语言的超集

(B)C++对C语言进行了扩充

(C)C++和C语言都是面向对象的程序设计语言

(D)C++包含C语言全部的语法特征

2.C++对C语言做了很多改进,下列描述中【】使得C语言发生了质变,即从面向过程变成面向对象。

(A)增加了一些新的运算符

(B)允许函数重载,并允许设置默认参数

(C)规定函数说明必须用原型

(D)引进类与对象的概念

3.下列关于面向对象概念的描述中,【】是错误的。

(A)面向对象方法比面向过程方法更先进

(B)面向对象方法中使用了一些面向过程中没有的概念

(C)面向对象方法完全替代了结构化程序设计方法

(D)面向对象程序方法具有封装性、继承性和多态性

4.对于语句cout<

(A)cout是一个输出流对象 (B)endl的作用是输出回车换行

(C)x是一个变量(D)<<称为提取运算符

5.下列【】是C++合法的标识符。

(A)_256(B)computer~1 (C)case(D)5char

6.下列【】是C++合法的字符型常量。

(A)97(B)”a”(C)‘\t’(D)a

7.以下自定义变量名中,【】是合法的。

(A)CHINA(B)byte-size(C)double(D)A+a

8.下列【】是C++合法的标识符。

(A)2op(B)-256 (C)case(D)Dfe

9.下列【】是C++合法的标识符。

(A)foo-bar(B)_256 (C)new(D)2b

10.下列整型常量的书写中,错误的是【】。

(A)0xaf(B)0853(C)34(D)OX1B

11.下列【】属于float类型常量。

(A)3.14f(B)0.0314E2 (C)3.14L(D)3.14

12.常量的书写格式决定了常量的类型和值,0x1011是【】。

(A)8进制整型常量(B)字符常量(C)16进制整型常量(D)2进制整型常量

13.下列运算符中优先级最高的是【】。

(A)?

:

(B)%(C)-=(D)&&

14.下列C++运算符中,优先级最高的是【】。

(A)+(B)*(C)<=(D)*=

15.在C++语言中,要求操作数必须是整型的运算符是【】。

(A)/(B)++(C) %(D) !

=

16.下列运算符中,优先级最低的是【】。

(A)==(B)?

(C)|(D)&&

16.如有inta=11;则表达式(a++*1/4)的值是【】。

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

17.若x,i都是int型变量,则执行如下表达式x=(i=1,i+5,i++)后,x的值为【】。

(A)2(B)1(C)6(D)7

18.若x、i、j、k都是int型变量,则计算表达式x=(i=4,j=16,k=32)后,x的值为【】。

(A)4(B)16(C)32(D)52

19.若整型变量a、b、c、d中的值依次为:

1、4、3、2。

则条件表达式a

a:

c

c:

d的值为【】。

(A)1(B)2(C)3(D)4

20.设x,y和z都是int型变量,且x=3,y=6,z=4,则下面表达式中值为0的是【】。

(A)!

((x

z||1)(B)‘x’&&’y’(C)x||y+z&&y-z(D) x

21.下列关于变量数据类型转换的描述中,错误的是【】。

(A)如果a为int型变量,b为char型变量,则a+b的值为int型

(B)如果a为float型变量,b为int型变量,则a-b的值为float型

(C)如果a为double型变量,b为float型变量,则a*b的值为double型

(D)如果a为int型变量,b为int型变量,则a/(double)b的值为int型

22.若有如下语句:

inta;

cout<<((a=3*5,a*4),a+5)<

则执行后的输出为【】。

(A)20(B)15(C)65(D)60

23.下列条件语句中,功能与其它语句不同的是【】。

(A)if(a)cout<

(B)if(a==0)cout<

(C)if(a!

=0)cout<

(D)if(a==0)cout<

24.下列条件语句中的描述中,【】是正确的。

(A)if语句中至少有一个else子句 

(B)if语句中可以有多个else子句 

(C)if语句中的if体中可以是循环语句

(D)if语句中if体内不能是switch语句 

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

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

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

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

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

26.下列关于开关语句的描述中,错误的是【】。

(A)开关语句中,case子句的个数是不受限制的

(B)开关语句中,case子句的语句序列中一定要有break语句

(C)开关语句中,default子句可以省略

(D)开关语句中,右花括号具有退出开关语句的功能

27.下列for循环的循环体执行次数为【】。

for(inti=0,j=10;i=j=4;i++,j--)

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

28.执行语句:

for(i=1;i++<4;)后;变量i的值是【】。

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

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

for(inti=0,x=0;!

x&&i<=5;i++)

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

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

for(inti=2;i==0;)

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

31.执行下列语句段后,输出的字符“*”的个数是【】。

for(inti=50;i>1;--i)cout<<’*’;

(A)48(B)49(C)50(D)51

32.下列while循环语句的循环次数是【】。

while(inti=0)i--;

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

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

intx=-1;

do

{x=x*x;}

while(!

x);

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

34.下列关于break语句描述中,【】是错误的。

(A)break语句可用于if语句体内,它将退出if语句

(B)break语句可用于循环体内,它将退出该重循环

(C)break语句可用于switch语句中,它将退出switch语句

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

35.以下叙述中正确的是【】

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

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

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

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

36.已知枚举类型声明语句为:

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

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

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

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

37.若有以下说明语句:

struct

{inta;

doubleb;

}stu;

则下面的叙述错误的是【】。

(A)struct是定义结构体类型的关键字

(B)stu是用户自定义的结构体变量

(D)a和b都是结构体成员名

(D)structstu是用户自定义的结构体类型

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

structdata

{inti;

doublef;

charch ;

}b ;

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

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

39.下列关于数组概念的描述中,错误的是【】。

(A)数组中所有元素类型是相同的

(B)数组定义后,它的元素个数是可以改变的

(C)数组在定义时可以被初始化,也可以不被初始化

(D)数组元素的个数与定义时的每维大小有关

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

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

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

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

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

41.下列合法的数组初始化语句是【】。

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

(B)chara[]="string";

(C)inta[]="string"

(D)chara[]={0,1,2,3,4,5};

42.intb[][3]={{1},{3,2},{4,5,6},{0}};则b[1][2]的值为【】。

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

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

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

(C)chars1[]="12345abcd";(D)chars4[2[3]={"xyz","mnp"};

44.在下列对字符数组进行初始化中,【】是错误的。

(A)chars1[]=”abcd”;(B)chars2[3]=”xyz”;

(C)char*p=”hello”;(D)chars3[2][4]={“xyz”,“mnp”};

45.下面选项中等价的是【】。

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

46下列关于字符数组的描述中,错误的是【】。

(A)字符数组中的每一个元素都是字符

(B)字符数组可以使用初始值表进行初始化

(C)字符数组可以存放字符串

(D)字符数组就是字符串

47.下面程序的运行结果是【】。

charc[5]={'a','b','\0','c','\0'};

cout<

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

48.语句int*p=&k;定义了指针p,与这个语句等效的语句序列是【】。

(A)int*p;p=&k;(B)int*p;p=k;

(C)int*p;*p=&k;(D)int*p;*p=k;

49.若有以下语句:

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

50.若有以下定义和语句,且0

  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

51.已知:

chars[]="abcd";输出显示字符'c'的表达式是【】。

(A)s(B)s+2

(C)s[2](D)s[3]

52.设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

53.设inta[]={1,2,3,4,5,6};*p=a;则值为5的表达式是【】。

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

54.已知:

intm=10;下列表示引用的方法中,【】是正确的。

(A)int&x=m;(B)int&y=10;(C)int&z;(D)float&t=&m;

55.已知:

inta(5),&ra=a;下列描述中,错误的是【】。

(A)ra是变量a的引用,即为变量的别名(B)ra的值为5

(C)改变ra的值为10,变量a值仍为5(D)ra的地址值为&a

56.关于函数的调用下面不正确的是【】。

(A)由于程序总是从主函数开始,所以函数的调用总是在主函数和其他函数之间进行。

(B)函数的调用可以在任意函数之间进行,只要有需要。

(C)一个函数可以自己调用自己。

(D)函数返回时可以不带返回值,这时函数在定义时其返回值的类型用void表示。

57.以下关于return语句的描述错误的是【】。

(A)函数可以不使用return语句。

(B)函数中可以出现多个return语句。

(C)函数中如果有返回值,就一定要有return语句。

(D)一个return语句可以返回多个值。

58.在C++中,关于函数返回值的类型是由【】。

(A)return语句中的表达式类型所决定的

(B)在定义该函数时所指定的数据类型所决定的

(C)调用该函数的主调函数类型所决定的

(D)调用该函数时系统临时决定的

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

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

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

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

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

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

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

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

61.一个函数功能不太复杂,但要求被频繁调用,应选用【】。

(A)内联函数(B)重载函数(C)递归函数(D)嵌套函数

62.采用函数重载的目的在于【】。

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

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

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

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

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

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

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

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

65.下列设置函数参数默认值的说明语句中,错误的是【】。

(A)intfun(intx,inty=10);(B)intfun(intx=5,int=10);

(C)intfun(intx=5,inty);(D)intfun(intx,inty=a+b);

66.已知函数f的原型是:

voidf(int*x,long&y);

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

(A)f(a,b);(B)f(&a,b);(C)f(a,&b);(D)f(&a,&b);

67.若有下面的函数调用:

fun(a+b,3,max(n-1,b));则fun中的实参个数为【】个。

(A)3(B)4(C)5(D)6

68.若要定义一个只允许在本源文件中所有函数中使用的全局变量,则该变量需要使用的存储类别是【】。

(A)extern(B)register(C)static(D)auto

69.下列存储类标识符中,【 】的可见性与存在性不一致。

(A)内部静态类(B)自动类(C)外部类(D)寄存器类

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

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

71.在C++语言中,数据封装要解决的问题是【】

(A)数据的规范性(B)便于数据转换

(C)防止不同模块之间数据的非法访问(D)避免数据丢失

72.下列关于类的定义格式的描述中,错误的是【】。

(A)类中成员有3种访问权限

(B)类的定义可分说明部分和实现部分

(C)类中成员函数都是公有的,数据成员都是私有的

(D)定义类的关键字通常用class

73.有关类和对象说法不正确的是【 】

(A)对象是类的一个实例

(B)类与对象的关系和数据类型与变量的关系相似

(C)任何一个对象只能属于一个具体的类

(D)一个类只能有一个对象

74.作用域运算符的功能是【】。

(A)标识作用域的级别的(B)指出作用域的范围的

(C)给定作用域的大小的(D)标识某个成员是属于哪个类的

75.下列描述中【】不是构造函数的特征。

(A)构造函数的函数名与类名相同(B)构造函数可以重载

(C)函数可以设置默认参数   (D)函数必须指定类型说明

76.【】是析构函数的特征。

(A)一个类中只能定义一个析构函数(B)析构函数与类名不同;

(C)析构函数的定义只能在类体内(D)析构函数可以有一个或多个参数

77.下列描述中【】是析构函数的特征。

(A)析构函数可以有一个或多个参数(B)析构函数定义只能在体内

(C)析构函数与类名不同   (D)一个类中只能定义一个析构函数

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

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

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

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

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

80.关于成员函数特征的下列述描述中,【】是错误的。

(A)成员函数一定是内联函数(B)成员函数可以重载

(C)成员函数可以设置参数的默认值(D)成员函数可以是静态的

二、程序填空题(每空2分,共20分)

1.下列程序是求100之内的能被7整除的自然数之和。

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

#include

voidmain()

{

intsum;

_

(1)_;

for(inti=1;__

(2)_;i++)

if(_(3)_)

sum+=i;

cout<

}

答案:

_sum=0_i<=100_i%7==0__

2下面程序的功能是计算xn。

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

#include

voidmain()

{

intn,x;

cin>>x>>n;

doubley=1;

for(inti=1;__

(1)_;i++)

_

(2)_;

cout<

}

答案:

i

3下面程序是输出100内能被3整除且个位数是6的所有整数。

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

#include

voidmain()

{

inti,j;

for(i=0;

(1);i++)

{

j=i*10+6;

if(

(2))

continue;

else

cout<

}

}

答案:

i<10j%3!

=0

4.下面程序运行后输出的结果为:

*

***

*****

*******

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

#include

#include

voidmain()

{

inti,j,k ;

for(i=1 ;i<=4 ;i++)

{

for(j=1;j<20-3*i;

(1))

cout<<”“;

for(k=1;

(2);k++)

cout<

(3);

}}

答案:

j++k<2*i-1cout<

5.下面程序运行后输出的结果为:

1

121

12321

1234321

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

#include

#include

voidmain()

{

inti,j,k ;

for(i=1 ;i<=4 ;i++)

{

for(j=1;j<20-3*i;j++)

cout<<”“;

for(k=1;

(1);k++)

cout<

for(

(2);k>0;k--)

cout<

cout<

}}

答案:

k<=ik=i-1

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

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

 #include

 voidmain()

 {

  inta[12],i,j,t;

  for(i=0;i<12;i++)

cin>>a[i];

  for(i=0;i<6;i++)

  {

(1);

(2);(3);}//数组元素交换

  for(i=0;i<12;i++)

cout<

答案:

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

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

当前位置:首页 > 自然科学 > 物理

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

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