最新C++复习题库+C++试题库Word格式文档下载.docx
《最新C++复习题库+C++试题库Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《最新C++复习题库+C++试题库Word格式文档下载.docx(93页珍藏版)》请在冰豆网上搜索。
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<
iostream.h>
voidmain()
{chars[]="
12134211"
*p;
intv1=0,v2=0,v3=0,v4=0;
v1v2v3v4
for(p=s;
*p;
p++)2434
switch(*p)
{
case'
1'
:
v1++;
3'
v3++;
2'
v2++;
default:
v4++;
}
cout<
v1<
"
"
v2<
v3<
v4<
endl;
A.4,2,1,1B.4,7,5,8C.7,3,2,1D.8,8,8,8
14.下列声明结构体变量错误的是()。
A.structstudentB.structstudent
{ intno;
{intno;
charname[16];
charname[16];
}st1,st2;
};
structstudentst1,st2;
C.structstudentD.structstudent
{intno;
};
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.若有以下定义,则对字符串的操作错误的是()。
chars[10]=”Program”,t[]=”test”;
A.strcpy(s,t);
B.cout<
strlen(s);
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
D
A
16
17
18
19
20
21
22
23
24
25
公共基础知识
一、选择题
(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:
}
A)fun();
B)Base.fun();
C)Base:
fun();
D)Base->
(9)有如下程序:
#include
classBASE{
charc;
public:
BASE(charn):
c(n){}
virtual~BASE(){cout<
c};
classDERIVED:
publicBASE{
DERIVED(charn):
BASE(n+1),c(n){}
~DERIVED(){cout<
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.类与对象的关系和数据类型与变量的关系相似
答案:
分析:
对象是类的一个实例,类与对象的关系和数据与变量的关系相似,所以一个类可以有多个对象。
2、下面()项是对构造函数和析构函数的正确定义。
A.voidX:
X(),voidX:
~X()
B.X:
X(参数),X:
C.X:
~X(参数)
D.voidX:
X(参数),voidX:
分析构造函数无返回类型、可带参数、可重载;
析构函数无返回类型、不可带参数、不可重载。
3、()的功能是对象进行初始化。
A.析构函数B.数据成员C.构造函数D.静态成员函数
当一个对象定义时,C++编译系统自动调用构造函数建立该对象并进行初始化;
当一个对象的生命周期结束时,C++编译系统自动调用析构函数注销该对象并进行善后工作;
4、下列表达方式正确的是()。
A.classP{B.classP{
public:
public:
intx=15;
intx;
voidshow(){cout<
x;
}voidshow(){cout<
};
C.classP{D.classP{
intf;
inta;
f=25;
voidSeta(intx){a=x;
};
在类体内不可对数据成员进行初始化;
类定义结束时需用分号;
只有类中的成员函数才能存取类中的私有数据。
5、拷贝构造函数具有的下列特点中,()是错误的。
A.如果一个类中没有定义拷贝构造函数时,系统将自动生成一个默认的
B.拷贝构造函数只有一个参数,并且是该类对象的引用
C.拷贝构造函数是一种成员函数
D.拷贝构造函数的名字不能用类名
如果一个类中没有定义拷贝构造函数时,系统将自动生成一个默认的;
拷贝构造函数只有一个参数,并且是该类对象的引用;
拷贝构造函数的名字与类同名,并且不被指定返回类型;
拷贝构造函数是一种成员函数。
6、关于静态成员的描述中,()是错误的。
A.
静态成员可分为静态数据成员和静态成员函数
B.静态数据成员定义后必须在类体内进行初始化
C.静态数据成员初始化不使用其构造函数
D.静态数据成员函数中不能直接引用非静态成员
静态成员可分为静态数据成员和静态成员函数;
静态数据成员被定义后,必须对它进行初始化,初始化在类体外进行,一般放在该类的实现部分最合适,也可以放在其他位置,例如,放在主函数前面等;
静态数据成员初始化与该类的构造函数和析构函数无关;
在静态成员函数的实现中,可以直接引用静态成员,但不能直接引用非静态成员。
7:
关于友元的描述中,()是错误的。
友元函数是成员函数,它被说明在类体内
B.
友元函数可直接访问类中的私有成员
友元函数破坏封装性,使用时尽量少用
D.
友元类中的所有成员函数都是友元函数
8、;
对类的构造函数和析构函数描述正确的是()。
A.构造函数可以重载,析构函数不能重载
B.构造函数不能重载,析构函数可以重载
构造函数可以重载,析构函数也可以重载
D.构造函数不能重载,析构函数也不能重载
9、类的析构函数的作用是()。
A.一般成员函数B.类的初始化C.对象初始化D.删除对象
10、假设OneClass为一个类,则该类的拷贝初始化构造函数的声明语句为()。
A.OneClass(OneClassp);
B.OneClass&
(OneClassp);
C.OneClass(OneClass&
p);
D.OneClass(OneClass*p);
11、为了使类中的某个成员不能被类的对象通过成员操作符访问,则不能把该成员的访问权限定义为()。
A.publicB.protectedC.privateD.static
12、下面对静态数据成员的描述中,正确的是()。
A.静态数据成员可以在类体内进行初始化
B.静态数据成员不可以在类体内进行初始化
C.静态数据成员不能受private控制符的作用
D.静态数据成员可以直接用类名调用
13、下面对静态数据成员的描述中,正确的是()。
A.静态数据成员是类的所有对象共享的数据
B.类的每一个对象都有自己的静态数据成员
C.类的不同对象有不同的静态数据成员值
D.静态数据成员不能通过类的对象调用
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:
'
X'
;
case3:
case4:
Y'
break;
default:
Z'
}
时,不可能出现的情况是[]。
A)显示:
XB)显示:
YC)显示:
ZD)显示:
XY
(4)执行语句序列
intx;
x;
if(x>
250)cout<
if(x<
elsecout<
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=&
(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,&
D)func(x,y);
(10)要使字符串变量str具有初值"
Lucky"
,正确的定义语句是[]。
A)charstr[]={'
L'
'
u'
c'
k'
y'
};
B)charstr[5]={'
C)charstr[]="
D)charstr[5]="
(11)已知某函数的一个形式参数被说明为MAT[3][10],在下列说明中,与此等效的形参说明是[]。
A)intMAT[][10]B)intMAT[3][]
C)intMAT[10][3]D)intMAT[][]
(12)若指针p定义为char*="
(13)在下列表达式中,与下标引用A[i][j]不等效的是[]。
A)*(A+i+j)B)*(A[i]+j)C)*(*(A+i)+j)D)(*(A+i))[j]
(14)要使语句p=newdouble[20];
能够正常执行,变量p应定义为[]。
A)doublep[20];
B)doublep;
C)double(*p)[20];
D)double*p;
(15)执行下列语句序列
structAA{intival;
charcval;
structBB{intival;
AAra;
structCC{intival;
BBrb;
CCrc={66,{rc.ival+1,rc.ra.ival+1},{69,{70,71}}};
rc.ival<
rc.ra.ival<
rc.rb.ra.ival;
后,显示在屏幕上的是[]。
A)66,67,68B)67,68,69C)66,67,70D)67,69,70
(16)类的默认的无参构造函数[]。
A)在任何情况下都存在
B)仅当未定义无参构造函数时存在
C)仅当未定义有参构造函数时存在
D)仅当未定义任何构造函数时存在
(17)语句ofstreamf("
SALARY.DAT"
ios:
noreplace|ios:
binary);
的功能是建立流对象f,并试图打开文件SALARY.DAT并与之连接,而且[]。
A)若文件存在,将文件指针定位于文件尾;
若文件不存在,建立一个新文件。
B)若文件存在,将其截为空文件;
若文件不存在,打开失败。
C)若文件存在,将文件指针定位于文件首;
D)若文件存在,打开失败;
(18)执行下列语句序列
structCC{