C++复习题库+C++试题库.doc
《C++复习题库+C++试题库.doc》由会员分享,可在线阅读,更多相关《C++复习题库+C++试题库.doc(69页珍藏版)》请在冰点文库上搜索。
C++习题
1.下列字符列中,可作为C++语言程序自定义标识符是()。
A.switchB.fileC.breakD.do
2.运算符+、<=、=、%中,优先级最低的运算符是()。
A.+B.<=C.=D.%
3.设变量m,n,a,b,c,d均为0,执行(m=a==b)||(n=c==d)后,m,n的值是短路
()。
A.0,0B.0,1C.1,0D.1,1
4.字符串”vm\x43\\\np\102qu”的长度是()。
A.8B.9C.16D.17
5.设有代码“inta=6;”,则执行了语句“a+=a-=a*a;”后,变量a的值是
()。
A.0B.-24C.-40D.–60
6.voidmain()
{intx=-1;
do
{x=x*x;}
while(!
x);}
下列说法正确的是()。
A.是死循环B.循环执行两次
C.循环执行一次D.有语法错误
7.下面有关for循环的正确描述是()。
A.for循环只能用于循环次数已经确定的情况
B.for循环是先执行循环体语句,后判断表达式
C.在for循环中,不能用break语句跳出循环体
D.for循环的循环体语句中,可以包含多条语句,但必须用大括号括起来
8.下面程序段(从右到左x<=2为真1时
)。
x=3;
do
{y=x--;
if(!
y){cout<<”x”;continue;}
cout<<”#”;}
while(1<=x<=2);(1<=x)=1,0bool型
A.将输出##B.将输出##*
C.是死循环D.含有不合法的控制表达式
9.以下正确的说法是()。
A.用户若需要调用标准函数,调用前必须重新定义
B.用户可以直接调用所有标准库函数
C.用户可以定义和标准库函数重名的函数,但是在使用时调用的是系统库函数
D.用户可以通过文件包含命令将系统库函数包含到用户源文件中,然后调用系统库函数
10.在参数传递过程中,对形参和实参的要求是
()。
A.函数定义时,形参一直占用存储空间
B.实参可以是常量、变量或表达式
C.形参可以是常量、变量或表达式
D.形参和实参类型和个数都可以不同
11.对数组名作函数的参数,下面描述正确的是
()。
A.数组名作函数的参数,调用时将实参数组复制给形参数组
B.数组名作函数的参数,主调函数和被调函数共用一段存储单元
C.数组名作参数时,形参定义的数组长度不能省略
D.数组名作参数,不能改变主调函数中的数据
12.若有语句inta[10]={0,1,2,3,4,5,6,7,8,9},*p=a;则()不是对a数组元素的正确引用(其中0≤i<10)。
A.p[i] B.*(*(a+i)) C.a[p-a] D.*(&a[i])
13.以下程序的输出结果是()。
#include
voidmain()
{ chars[]="12134211",*p;
intv1=0,v2=0,v3=0,v4=0;v1v2v3v4
for(p=s;*p;p++)2434
switch(*p)
{
case'1':
v1++;
case'3':
v3++;
case'2':
v2++;
default:
v4++;
}
cout<}
A.4,2,1,1 B.4,7,5,8C.7,3,2,1 D.8,8,8,8
14.下列声明结构体变量错误的是()。
A.structstudentB.structstudent
{ intno;{intno;
charname[16];charname[16];
}st1,st2;};
structstudentst1,st2;
C.structstudentD.structstudent
{intno;{intno;
charname[16];charname[16];
};};
structst1,st2;studentst1,st2;
15.对类的构造函数和析构函数描述正确的是()。
A.构造函数可以重载,析构函数不能重载
B.构造函数不能重载,析构函数可以重载
C.构造函数可以重载,析构函数也可以重载
D.构造函数不能重载,析构函数也不能重载
16.下面对于友元函数描述正确的是()。
A.友元函数的实现必须在类的内部定义B.友元函数是类的成员
C.友元函数破坏了类的封装性和隐藏性D.友元函数不能访问类的私有成员
17.派生类的对象对它的基类成员中()是可以访问的。
A.公有继承的公有成员B.公有继承的私有成员
C.公有继承的保护成员D.私有继承的公有成员
18.C++类体系中,不能被派生类继承的有()。
A.构造函数B.虚函数C.静态成员函数D.赋值操作函数
19.以下()成员函数表示虚函数。
A.virtualintvf(int);B.voidvf(int)=0;
C.纯虚函数,不用定义
virtualvoidvf()=0;D.virtualvoidvf(int){};
20.下面对静态数据成员的描述中,正确的是()。
A.静态数据成员可以在类体内进行初始化
B.静态数据成员不可以在类体内进行初始化
C.静态数据成员不能受private控制符的作用
D.静态数据成员可以直接用类名调用?
?
21.继承具有(),即当基类本身也是某一个类派生类时,底层的派生类也会自动继承间接基类的成员。
A.规律性B.传递性C.重复性D.多样性
22.若有以下定义,则释放指针所指内存空间的操作是()。
floatr=newsfloat[10];
A.deleter;B.delete*r;
C.delete[]r;D.deleter[];
23.若有以下定义,则对字符串的操作错误的是(strcat(s1,s2):
adds2tos1’stail.
)。
chars[10]=”Program”,t[]=”test”;
A.strcpy(s,t);Copyttos
B.cout<C.strcat(“this”,t);D.cin>>t;
24.在if语句中的表达式是()。
A.只能是表达式B.只能是关系表达式和逻辑表达式
C.只能是逻辑表达式D.可以是任意表达式
25.在用关键字class定义的类中,以下叙述正确的是()。
A. 在类中,不作特别说明的数据成员均为私有类型
B. 在类中,不作特别说明的数据成员均为公有类型
C. 类成员的定义必须是成员变量定义在前,成员函数定义在后
D. 类的成员定义必须放在类定义体内部
参考答案:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
B
C
C
B
D
C
D
C
D
B
B
B
B
C
A
16
17
18
19
20
21
22
23
24
25
C
A
A
D
B
B
C
C
D
A
公共基础知识
一、选择题
(1)下列关于栈的叙述正确的是
A)栈是非线性结构 B)栈是一种树状结构
C)栈具有先进先出的特征 D)栈具有后进先出的特征
(2)结构化程序设计所规定的三种基本控制结构是
A)输入、处理、输出 B)树形、网形、环形
C)顺序、选择、循环 D)主程序、子程序、函数
(3)结构化程序设计的一种基本方法是
A)筛选法 B)递归法 C)归纳法 D)逐步求精法
(4)如果对一个关系实施了一种关系运算后得到了一个新的关系,而且新的关系中属性个数少于原来关系中属性个数,这说明所实施的运算关系是:
A)选择 B)投影 C)连接 D)并
一:
选择题:
(1)D
(2)C (3)D (4)B
C++语言程序设计
一、选择题
(1)C++语言是从早期的C语言逐渐发展演变而来的.与C语言相比,它在求解问题方法上进行的最大改进是()
A)面向过程 B)面向对象 C)安全性 D)复用性
(2)C++语言的跳转语句中,对于break和continue说法正确的是()
A)break语句只应用与循环体中
B)continue语句只应用与循环体中
C)break是无条件跳转语句,continue不是
D)break和continue的跳转范围不够明确,容易产生问题
(3)for(intx=0,y=o;!
x&&y<=5;y++)语句执行循环的次数是()
A)0 B)5 C)6 D)无次数
(4)考虑函数原型voidtest(inta,intb=7,char="*")默认参数格式
下面的函数调用中,属于不合法调用的是()
A)test(5);B)test(5,8);C)test(6,"#")D)test(0,0."*");
(5)下面有关重载函数的说法中正确的是()
A)重载函数必须具有不同的返回值类型; B)重载函数形参个数必须不同;
C)重载函数必须有不同的形参列表 D)重载函数名可以不同;
(6)下列关于构造函数的描述中,错误的是()
A)构造函数可以设置默认参数; B)构造函数在定义类对象时自动执行
C)构造函数可以是内联函数; D)构造函数不可以重载
(7)下面描述中,表达错误的是()
A)公有继承时基类中的public成员在派生类中仍是public的
B)公有继承是基类中的private成员在派生类中仍是private的
C)公有继承时基类中的protected成员在派生类中仍是protected的
D)私有继承时基类中的public成员在派生类中是private的
(8)应在下列程序划线处填入的正确语句是()
#include
classBase
{ public:
voidfun(){cout<<"Base:
:
fun"<};
classDerived:
publicBase
{ voidfun()
{_____________file:
//显示调用基类的函数fun()
cout<<"Derived:
:
fun"< }
};
A)fun();B)Base.fun();C)Base:
:
fun();D)Base->fun();
(9)有如下程序:
#include
classBASE{
charc;
public:
BASE(charn):
c(n){}
virtual~BASE(){cout<c};
classDERIVED:
publicBASE{
charc;
public:
DERIVED(charn):
BASE(n+1),c(n){}
~DERIVED(){cout<c};
intmain()
{ DERIVED("X");
return0;
}
执行上面的程序将输出
()
A)XYB)YXC)XD)Y
(10)在进行完任何C++流的操作后,都可以用C++流的有关成员函数检测流的状态;其中只能用于检测输入流状态的操作函数名称是()
A)failB)eofC)badD)good
一:
选择题
1-5:
BBCCC
6-10:
DBCAB
1、下列有关类的说法不正确的是()。
A.对象是类的一个实例
B.任何一个对象只能属于一个具体的类
C. 一个类只能有一个对象
D.类与对象的关系和数据类型与变量的关系相似
答案:
C
分析:
对象是类的一个实例,类与对象的关系和数据与变量的关系相似,所以一个类可以有多个对象。
2、下面()项是对构造函数和析构函数的正确定义。
A.voidX:
:
X(),voidX:
:
~X()
B.X:
:
X(参数),X:
:
~X()
C.X:
:
X(参数),X:
:
~X(参数)
D.voidX:
:
X(参数),voidX:
:
~X(参数)
答案:
B
分析构造函数无返回类型、可带参数、可重载;析构函数无返回类型、不可带参数、不可重载。
3、()的功能是对象进行初始化。
A.析构函数B.数据成员C.构造函数D.静态成员函数
答案:
C
分析:
当一个对象定义时,C++编译系统自动调用构造函数建立该对象并进行初始化;当一个对象的生命周期结束时,C++编译系统自动调用析构函数注销该对象并进行善后工作;
4、下列表达方式正确的是(
)。
A.classP{B.classP{
public:
public:
intx=15;intx;
voidshow(){cout<};}
C.classP{D.classP{
intf;public:
};inta;
f=25;voidSeta(intx){a=x;};
答案:
D
分析:
在类体内不可对数据成员进行初始化;类定义结束时需用分号;只有类中的成员函数才能存取类中的私有数据。
5、拷贝构造函数具有的下列特点中,()是错误的。
A.如果一个类中没有定义拷贝构造函数时,系统将自动生成一个默认的
B.拷贝构造函数只有一个参数,并且是该类对象的引用
C.拷贝构造函数是一种成员函数
D.拷贝构造函数的名字不能用类名
答案:
D
分析:
如果一个类中没有定义拷贝构造函数时,系统将自动生成一个默认的;拷贝构造函数只有一个参数,并且是该类对象的引用;拷贝构造函数的名字与类同名,并且不被指定返回类型;拷贝构造函数是一种成员函数。
6、关于静态成员的描述中,()是错误的。
A. 静态成员可分为静态数据成员和静态成员函数
B.静态数据成员定义后必须在类体内进行初始化
C.静态数据成员初始化不使用其构造函数
D.静态数据成员函数中不能直接引用非静态成员
答案:
B
分析:
静态成员可分为静态数据成员和静态成员函数;静态数据成员被定义后,必须对它进行初始化,初始化在类体外进行,一般放在该类的实现部分最合适,也可以放在其他位置,例如,放在主函数前面等;静态数据成员初始化与该类的构造函数和析构函数无关;在静态成员函数的实现中,可以直接引用静态成员,但不能直接引用非静态成员。
7:
关于友元的描述中,()是错误的。
A. 友元函数是成员函数,它被说明在类体内
B. 友元函数可直接访问类中的私有成员
C. 友元函数破坏封装性,使用时尽量少用
D. 友元类中的所有成员函数都是友元函数
答案:
A
8、;对类的构造函数和析构函数描述正确的是()。
A.构造函数可以重载,析构函数不能重载
B.构造函数不能重载,析构函数可以重载
C. 构造函数可以重载,析构函数也可以重载
D.构造函数不能重载,析构函数也不能重载
答案:
A
9、类的析构函数的作用是()。
A.一般成员函数B.类的初始化C.对象初始化D.删除对象
答案:
D
10、假设OneClass为一个类,则该类的拷贝初始化构造函数的声明语句为()。
A.OneClass(OneClassp);B.OneClass&(OneClassp);
C.OneClass(OneClass&p);D.OneClass(OneClass*p);
答案:
C
11、为了使类中的某个成员不能被类的对象通过成员操作符访问,则不能把该成员的访问权限定义为()。
A.publicB.protectedC.privateD.static
答案:
A
12、下面对静态数据成员的描述中,正确的是()。
A.静态数据成员可以在类体内进行初始化
B.静态数据成员不可以在类体内进行初始化
C.静态数据成员不能受private控制符的作用
D.静态数据成员可以直接用类名调用
答案:
B
13、下面对静态数据成员的描述中,正确的是()。
A.静态数据成员是类的所有对象共享的数据
B.类的每一个对象都有自己的静态数据成员
C.类的不同对象有不同的静态数据成员值
D.静态数据成员不能通过类的对象调用
答案:
A
C++试题1
(1)已知下列语句中的x和y都是int型变量,其中不正确的语句是
A)y+=++x;B)++x+=y;C)y=x++;D)x++=y;
(2)若x是一个bool型变量,y是一个值为100的int型变量,则表达式!
x&&y>0的值[]。
A)为trueB)为falseC)与x的值相同D)与x的值相反
(3)执行语句序列
intn;
cin>>n;
switch(n){
case1:
case2:
cout<<'X';
case3:
case4:
cout<<'Y';break;
default:
cout<<'Z';}
时,不可能出现的情况是[]。
A)显示:
XB)显示:
YC)显示:
ZD)显示:
XY
(4)执行语句序列
intx;
cin>>x;
if(x>250)cout<<'X';
if(x<250)cout<<'Y';
elsecout<<'X';
时,不可能出现的情况是[]。
A)显示:
XB)显示:
YC)显示:
XYD)显示:
XX
(5)要定义一个具有5个元素的一维数组,并使其各元素的初值依次是30,50,-88,0和0,则下列定义语句中不正确的是[]。
A)intvect[]={30,50,-88};B)intvect[]={30,50,-88,0,0};
C)intvect[5]={30,50,-88};D)intvect[5]={30,50,-88,0,0};
(6)已知某应用系统中已经定义了函数fun,其原形是intfun(char='A');则下列函数中,可以在同一系统中加以重载的是[]。
A)intfun();B)intfun(char);
C)intfun(char,int);D)intfun(char,double=0.0);
(7)若指针p定义为constchar*p="Luchy!
";则[]。
A)p所指向的数据不可改变,p在定义时可以不初始化。
B)p所指向的数据不可改变,p在定义时必须初始化。
C)p本身不可改变,p在定义时可以不初始化。
D)p本身不可改变,p在定义时必须初始化。
(8)已知数组A和指针p定义为:
intA[20][10],*p;,要使p指向A的首元素,正确的赋值表达式是[]。
A)p=&A或p=A[0][0]B)p=A或p=&A[0][0]
C)p=&A[0]或p=A[0][0]D)p=A[0]或p=&A[0][0]
(9)已知函数func的原形是
doublefunc(doouble*pd,int&ri);
变量x和y的定义是
doublex;inty;
把x和y分别作为第一参数和第二参数来调用函数func,正确的调用语句是[]。
A)func(x,&y);B)func(&x,y);C)func(&x,&y);D)func(x,y);
(10)