C++复习题.docx

上传人:b****8 文档编号:9928599 上传时间:2023-05-22 格式:DOCX 页数:13 大小:22.49KB
下载 相关 举报
C++复习题.docx_第1页
第1页 / 共13页
C++复习题.docx_第2页
第2页 / 共13页
C++复习题.docx_第3页
第3页 / 共13页
C++复习题.docx_第4页
第4页 / 共13页
C++复习题.docx_第5页
第5页 / 共13页
C++复习题.docx_第6页
第6页 / 共13页
C++复习题.docx_第7页
第7页 / 共13页
C++复习题.docx_第8页
第8页 / 共13页
C++复习题.docx_第9页
第9页 / 共13页
C++复习题.docx_第10页
第10页 / 共13页
C++复习题.docx_第11页
第11页 / 共13页
C++复习题.docx_第12页
第12页 / 共13页
C++复习题.docx_第13页
第13页 / 共13页
亲,该文档总共13页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

C++复习题.docx

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

C++复习题.docx

C++复习题

C++复习资料

1.1选择题

3.C++程序基本单位是(c)。

(a)数据(b)字符(c)函数(d)语句

5.执行C++程序时出现的“溢出”错误属于(c)错误。

(a)编译(b)连接(c)运行(d)逻辑

8.下列选项中,(a)不是分隔符。

(a)?

(b);(c):

(d)(

10.下列正确的十六进制整型常量表示是(a,b,d)。

(a)0x11(b)0xaf(c)0xg(d)0x1f

14.执行语句

inti=10,*p=&i;

后,下面描述错误的是(a)。

(a)p的值为10(b)p指向整型变量i

(c)*p表示变量i的值(d)p的值是变量i的地址

15.执行语句

inta=5,b=10,c;int*p1=&a,*p2=&b;

后,下面不正确的赋值语句是(b)。

(a)*p2=b;(b)p1=a;

(c)p2=p1;(d)c=*p1*(*p2);

16.执行语句

inta=10,b;int&pa=a,&pb=b;

后,下列正确的语句是(b)。

(a)&pb=a;(b)pb=pa;

(c)&pb=&pa;(d)*pb=*pa;

17.执行下面语句后,a和b的值分别为(b)。

inta=5,b=3,t;

int&ra=a;

int&rb=b;

t=ra;ra=rb;rb=t;

(a)3和3(b)3和5(c)5和3(d)5和5

18.在下列运算符中,(d)优先级最高。

(a)<=(b)*=(c)+(d)*

19.在下列运算符中,(d)优先级最低。

(a)!

(b)&&(c)!

=(d)?

20.设i=1,j=2,则表达式i+++j的值为(c)。

(a)1(b)2(c)3(d)4

21.设i=1,j=2,则表达式++i+j的值为(d)。

(a)1(b)2(c)3(d)4

22.在下列表达式选项中,(c)是正确。

(a)++(a++)(b)a++b(c)a+++b(d)a++++b

23.已知i=0,j=1,k=2,则逻辑表达式++i||--j&&++k的值为(b)。

(a)0(b)1(c)2(d)3

24.执行下列语句后,x的值是(d),y的值是(c)。

intx,y;

x=y=1;++x||++y;

(a)不确定(b)0(c)1(d)2

25.设X为整型变量,能正确表达数学关系1

(a)1

(c)1

(X<=1)&&!

(X>=5)

26.已知x=5,则执行语句

x+=x-=x*x;

后,x的值为(c)。

(a)25(b)40(c)-40(d)20

27.设a=1,b=2,c=3,d=4,则条件表达式a

a:

c

c:

d的值为(a)。

(a)1(b)2(c)3(d)4

28.逗号表达式“(x=4*5,x*5),x+25的值为(d)。

(a)25(b)20(c)100(d)45

1.已知inti,x,y;在下列选项中错误的是(c)。

(a)if(x==y)i++;(b)if(x=y)i--;

(c)if(xy)i--;(d)if(x+y)i++;

2.设有函数关系为y=,下面选项中能正确表示上述关系为(c)。

(a)y=1;(b)y=-1;

if(x>=0)if(x!

=0)

if(x==0)y=0;if(x>0)y=1;

elsey=-1;elsey=0

(c)if(x<=0)(d)y=-1;

if(x<0)y=-1;if(x<=0)

elsey=0;if(x<0)y=-1;

elsey=1;elsey=1;

3.假设i=2,执行下列语句后i的值为(b)。

switch(i)

{case1:

i++;

case2:

i--;

case3:

++i;break;

case4:

--i;

default:

i++;

}

(a)1(b)2(c)3(d)4

4.已知inti=0,x=0;下面while语句执行时循环次数为(d)。

while(!

x&&i<3){x++;i++;}

(a)4(b)3(c)2(d)1

5.已知inti=3;下面do_while语句执行时循环次数为(b)。

do{i--;cout<

=1);

(a)1(b)2(c)3(d)无限

6.下面for语句执行时循环次数为(b)。

for(inti=0,j=5;i=j;)

{cout<

i++;j--;

}

(a)0(b)5(c)10(d)无限

7.以下死循环的程序段是(b)。

(a)for(intx=0;x<3;){x++;};

(b)intk=0;

do{++k;}while(k>=0);

(c)inta=5;while(a){a--;};

(d)inti=3;for(;i;i--);

1.以下正确的函数原型为(d)。

(a)f(intx;inty);(b)voidf(x,y);

(c)voidf(intx,y);(d)voidf(int,int);

2.有函数原型voidfun1(int);下面选项中,不正确的调用是(c)。

(a)doublex=2.17;fun1(x);

(b)inta=15;fun1(a*3.14);

(c)intb=100;fun1(&b);

(d)fun1(256);

3.有函数原型voidfun2(int*);下面选项中,正确的调用是(c)。

(a)doublex=2.17;fun2(&x);

(b)inta=15;fun2(a*3.14);

(c)intb=100;fun2(&b);

(d)fun2(256);

4.有函数原型voidfun3(int&);下面选项中,正确的调用是(c)。

(a)intx=2.17;fun3(&x);

(b)inta=15;fun3(a*3.14);

(c)intb=100;fun3(b);

(d)fun3(256);

5.有声明intfun4(int);int(*pf)(int)=fun4;

下面选项中,正确的调用是(c)。

(a)inta=15;intn=fun4(&a);(b)inta=15;cout<

(c)cout<<(*pf)(256);(d)cout<<*pf(256);

注意:

选项(b)也可以调用函数fun4,但由于实参为浮点型表达式,VC6编译器将出现与形参类型不匹配的警告。

6.在VC中,若定义一个函数的返回类型为void,以下叙述正确的是(a,c)。

(a)用语句调用函数(b)用表达式调用函数

(c)没有返回值(d)通过return语句可以返回指定值

7.函数参数的默认值不允许为(c)。

(a)全局常量(b)全局变量

(c)局部变量(d)函数调用

8.使用重载函数编程序的目的是(a)。

(a)使用相同的函数名调用功能相似的函数(b)共享程序代码

(c)提高程序的运行速度(d)节省存贮空间

9.下列的描述中(b)是错误的。

(a)使用全局变量可以从被调用函数中获取多个操作结果

(b)局部变量可以初始化,若不初始化,则系统默认它的值为0

(c)当函数调用完后,静态局部变量的值不会消失

(d)全局变量若不初始化,则系统默认它的值为0

10.下列选项中,(c,d)的具有文件作用域。

(a)语句标号(b)局部变量

(c)全局变量(d)静态全局变量

1.以下对一维数组a的正确定义是(c)。

(a)intn=5,a[n];(b)inta(5);

(c)constintn=5;inta[n];(d)intn;cin>>n;inta[n];

2.下列数组定义语句中,不合法的是(a)。

(a)inta[3]={0,1,2,3};(b)inta[]={0,1,2};

(c)inta[3]={0,1,2};(d)inta[3]={0};

3.已知inta[10]={0,1,2,3,4,5,6,7,8,9},*p=a;则不能表示数组a中元素的式子是(c)。

(a)*a(b)*p(c)a(d)a[p-a]

4.已知inta[]={0,2,4,6,8,10},*p=a;值不等于0的表达式是(b,d)。

(a)*(p++)(b)*(++p)(c)*(p--)(d)*(--p)

5.以下不能对二维数组a进行正确初始化的语句是(c)。

(a)inta[2][3]={0};

(b)inta[][3]={{0,1},{0}};

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

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

6.已知inta[][3]={{0,1},{2,3,4},{5,6},{7}};则a[2][1]的值是(c)。

(a)0(b)2(c)6(d)7

7.已知inta[3][3]={1,2,3,4,5,6,7,8,9};则不能表示数组元素a[2][1]的地址是(a,b)。

(a)&[2][1](b)*(a[2]+1)(c)a[2]+1(d)*(a+2)+1

8.已知char*a[]={"fortran","basic","pascal","java","c++";则cout<

(a)t(b)一个地址值(c)java(d)javac++

9.若用数组名作为调用函数的实参,则传递给形参的是(a)。

(a)数组存贮首地址(b)数组的第一个元素值

(c)数组中全部元素的值(d)数组元素的个数

10.在下列选项中,(b,d)是错误的。

(a)gets和puts函数可以输入输出包含空格的字符串

(b)cin不能输入包含空格的字符串

(c)cout不能输出包含空格的字符串

(d)使用赋值运算符可以对字符数组整体赋值

11.下列描述中,错误的是(c)。

(a)输出字符指针就是输出字符串

(b)输出字符指针的间接引用就是输出单个字符

(c)具有相同字符的两个字符串常量相等

(d)两个数组名的比较是地址的比较

12.判断字符串s1和s2是否相等的表达式为(d)。

(a)s1=s2(b)s1==s2

(c)strcpy(s1,s2)==0(d)strcmp(s1,s2)==0

13.判断字符串s1是否大于字符串s2的表达式为(c)。

(a)s1>s2(b)strcmp(s1,s2)==0

(c)strcmp(s1,s2)>0(d)strcmp(s2,s1)>0

5.若有以下声明和定义,则下列错误的引用是(d)。

structworker

{intno;

charname[20];

}w,*p=&w;

(a)w.no(b)p->no(c)(*p).no(d)*p.no

6.若有以下声明和定义,则下列引用非法的是(d)。

structdata

{intn;

floatscore;

data*q;

};

dataa[3]={1001,87,&a[1],1002,75,&a[2],1003,90,&a[0]};

data*p=a;

(a)p->n++(b)(*p).n++(c)++p->n(d)*p->n

7.关于类和对象不正确的说法是(c)。

(a)类是一种类型,它封装了数据和操作(b)对象是类的实例

(c)一个类的对象只有一个(d)一个对象必属于某个类

8.在类定义的外部,可以被访问的成员有(c)。

(a)所有类成员(b)private或protected的类成员

(c)public的类成员(d)public或private的类成员

9.关于this指针的说法错误的是(a,d)。

(a)this指针必须显式说明

(b)当创建一个对象后,this指针就指向该对象

(c)成员函数拥有this指针

(d)静态成员函数拥有this指针

10.声明一个类的对象时,系统自动调用(b,d)函数;撤消对象时,系统自动调用(c)函数。

(a)成员函数(b)构造函数(c)析构函数(d)复制构造函数

11.下面对构造函数的不正确描述是(b)。

(a)系统可以提供默认的构造函数

(b)构造函数可以有参数,所以也可以有返回值

(c)构造函数可以重载

(d)构造函数可以设置默认参数

12.下面对析构函数的正确描述是(a,c)。

(a)系统可以提供默认的析构函数(b)析构函数必须由用户定义

(c)析构函数没有参数(d)析构函数可以设置默认参数

13.对静态成员的不正确描述是(c,d)。

(a)静态成员不属于对象,是类的共享成员

(b)静态数据成员要在类外定义和初始化

(c)调用静态成员函数时要通过类或对象激活,所以静态成员函数拥有this指针

(d)只有静态成员函数可以操作静态数据成员

14.下面选项中,不是类的成员函数为(c)。

(a)构造函数(b)析构函数(c)友元函数(d)复制构造函数

15.下面对友员的错误描述是(d)。

(a)关键字friend用于声明友员

(b)一个类中的成员函数可以是另一个类的友员

(c)友员函数访问对象的成员不受访问特性影响

(d)友员函数通过this指针访问对象成员

1.在下列运算符中,能重载的是(a,c,d)。

(a)!

(b)sizeof(c)new(d)delete

2.在下列运算符中,不能重载的是(c)。

(a)<=(b)>>(c)&&(d)&=

3.下列关于运算符重载的描述中,(d)是正确的。

(a)可以改变参与运算的操作数个数(b)可以改变运算符原来的优先级

(c)可以改变运算符原来的结合性(d)不能改变原运算符的语义

4.下列函数中,能重载运算符的函数是(b,c)。

(a)成员函数(b)构造函数(c)析构函数(d)友员函数

5.不能用友员函数重载的是(a)。

(a)=(b)==(c)+=(d)!

=

6.下面描述中,错误的是(b)。

(a)只有系统预先定义的运算符才可能被重载

(b)使用类型转换函数不能把一个类转换为另一个类

(c)使用类型转换函数可以把类转换为基本类型

(d)类型转换函数只能定义为一个类的成员函数,不能定义为类的友员函数

1.在c++中,类与类之间的继承关系具有(c)。

(a)自反性(b)对称性(c)传递性(d)反对称性

2.下列关于类的继承描述中,(a,b)是错误的。

(a)派生类可以访问基类的所有数据成员,调用基类的所有成员函数

(b)派生类也是基类,所以基类具有派生类的全部属性和方法

(c)继承描述类的层次关系,派生类可以具有与基类相同的属性和方法

(d)一个基类可以有多个派生类,一个派生类可以有多个基类

3.当一个派生类公有继承一个基类时,基类中的所有公有成员成为派生类的(a)。

(a)public成员(b)private成员

(c)protected成员(d)友员

4.当一个派生类私有继承一个基类时,基类中的所有公有成员和保护成员成为派生类的(b)。

(a)public成员(b)private成员

(c)protected成员(d)友员

5.当一个派生类保护继承一个基类时,基类中的所有公有成员和保护成员成为派生类的(c)。

(a)public成员(b)private成员

(c)protected成员(d)友员

6.不论派生类以何种方式继承基类,都不能使用基类的(b)。

(a)public成员(b)private成员

(c)protected成员(d)public成员和protected成员

7.下面描述中,错误的是(b,c)。

(a)在基类定义的public成员在公有继承的派生类中可见,也能在类外被访问

(b)在基类定义的public和protected成员在私有继承的派生类中可见,在类外可以被访问

(c)在基类定义的public和protected成员在保护继承的派生类中不可见

(d)在派生类中不可见的成员要变成可访问的需进行访问声明

8.在c++中,不能被派生类继承的函数是(b,c)。

(a)成员函数(b)构造函数

(c)析构函数(d)静态成员函数

9.在创建派生类对象时,构造函数的执行顺序是(d)。

(a)对象成员构造函数、基类构造函数、派生类本身的构造函数

(b)派生类本身的构造函数、基类构造函数、对象成员构造函数

(c)基类构造函数、派生类本身的构造函数、对象成员构造函数

(d)基类构造函数、对象成员构造函数、派生类本身的构造函数

10.当不同的类具有相同的间接基类时,有特点(d)。

(a)各派生类对象将按继承路线产生自己的基类版本

(b)派生类对象无法产生自己的基类版本

(c)为了建立惟一的间接基类版本,应该必须改变类格

(d)为了建立惟一的间接基类版本,应该声明虚继承

1.在C++中,要实现动态联编,必须使用(d)调用虚函数。

(a)类名(b)派生类指针(c)对象名(d)基类指针

2.下列函数中,可以作为虚函数的是(c,d)。

(a)普通函数(b)构造函数(c)成员函数(d)析构函数

3.在派生类中,重载一个虚函数时,要求函数名、参数的个数、参数的类型、参数的顺序和函数的返回值(b)。

(a)不同(b)相同(c)相容(d)部分相同

4.下面函数原型声明中,(b)声明了fun为纯虚函数。

(a)voidfun()=0;(b)virtualvoidfun()=0;

(c)virtualvoidfun();(d)virtualvoidfun(){};

5.若一个类中含有纯虚函数,则该类称为(d)。

(a)基类(b)纯基类(c)派生类(d) 抽象类

6.假设Aclass为抽象类,下列声明(a,c,d)是错误的。

(a)Aclassfun(int);(b)Aclass*p;

(c)intfun(Aclass);(d)AclassObj;

7.下面描述中,正确的是(b,d)。

(a)虚函数是没有实现的函数(b)纯虚函数的实现在派生类定义

(c)抽象类是只有纯虚函数的类(d)抽象类指针可以指向不同的派生类

使用虚函数编写程序求球体和圆柱体的体积及表面积。

由于球体和圆柱体都可以看作由圆继承而来,所以可以定义圆类circle作为基类。

在circle类中定义一个数据成员radius和两个虚函数area()和volume()。

由circle类派生sphere类和column类。

在派生类中对虚函数area()和volume()重新定义,分别求球体和圆柱体的体积及表面积。

#includeconstdoublePI=3.14159265;classcircle{public:

circle(doubler){radius=r;}virtualdoublearea(){return0.0;}virtualdoublevolume(){return0.0;}protected:

doubleradius;};classsphere:

publiccircle{public:

sphere(doubler):

circle(r){}doublearea(){return4.0*PI*radius*radius;}doublevolume(){return4.0*PI*radius*radius*radius/3.0;}};classcolumn:

publiccircle{public:

column(doubler,doubleh):

circle(r){height=h;}doublearea(){return2.0*PI*radius*(height+radius);}doublevolume(){returnPI*radius*radius*height;}private:

doubleheight;};voidmain(){circle*p;spheresobj

(2);p=&sobj;cout<<"球体:

"<volume()<area()<

"<volume()<area()<

2、定义一个Book(图书)类,在该类定义中包括

数据成员:

bookname(书名)、price(价格)和nu

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

当前位置:首页 > 临时分类 > 批量上传

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2