C++复习题Word下载.docx
《C++复习题Word下载.docx》由会员分享,可在线阅读,更多相关《C++复习题Word下载.docx(12页珍藏版)》请在冰豆网上搜索。
下面运算符中,不能被重载的运算符是)16.(
[]D.B.-C.?
:
A.<
=
(以下不属于面向对象的程序设计语言的是)17.
D.CC.JavaA.C#B.C++
()中运算符重载的描述中,错误的是下列关于C++18.A.运算符重载是对已有的运算符赋予多重含义重载的运算符,其运算对象可以是自定义的数据类型B.C.编译系统对重载运算符的选择,遵循函数模板的选择原则运算符的重载实质上是函数的重载D.
p
p所指对象的值为5,p+1所指对象的值为8,则执行“(*p)++;
”语句后,19.假定所指对象的值为()D.8A.6C.5B.9
)20.运算符重载时不需要保持的性质是(
结合性D.操作数个数B.操作数类型C.优先级A.
)已有定义:
挠慨?
猪牴尽扡摣;
则下面语句正确的是(21.C.charc=str[0];
B.str[1]='
b'
;
A.str[0]=a;
瑳?
硜穹屷);
则下列语句中能正确表示引用的是(22.已知:
intk=6D.int&
x=&
k;
B.int&
x=kA.intx=k;
;
C.int&
x=6;
下列虚基类的声明中,正确的是23.)(virtualpublicAA.classB:
publicA:
B.classvirtualB
publicAC.virtualclassB:
publicAvirtualD.classB:
int已有定义virtual24.)(下面关于该函数的解释中正确的是area()=0;
0B.A.该函数是纯虚函数该函数返回值为
该函数的入口地址为C.该函数通常在派生函数中声明D.0
作为类的成员函数重载一个运算符时,如果参数表为空,通常情况下,说明该运算25.(符有个操作数)
D.3B.1A.0C.2
(的说明中,不正确的是下面关于cin.eof())26.
的成员函数A.结束输入B.cin
有关EOFD.检测流状态是否结束C.与
上不同,但函数名称相同。
重载函数在或27.
的引用,则所使用的定义语为k若要把变量s定义为短整型变量。
28.
的语句是:
a已有定义constinta=5;
则要定义一个常指针指向该变量29.常对象中的数据成员必须通过_________函数才可以访问。
30.
。
对象将其大部分实现细节隐藏起来,这种机制称为31.
中,专门用于定义重载运算符的关键字是C++。
32.
__________用于存贮当前被调用的成员函数所在对象的起始地址的指针是33.
来修饰。
________如果希望类的成员为该类所有对象所共享,可以使用关键字34.
C++中,由继承而产生的新类,它的对象对同一个消息会作出不同的响应,这种在35.。
特性被称为
已有类36.A则定义一个指针指向该函数的定义,其中有成员函数intget_a(){returna;
}。
的写法为
37.假定类中没有构造函数,则系统默认的构造函数形式是A
和。
多重继承消除二义性的通用性方法有38.
39.classw{staticchara;
chary[2];
intx;
doublefun(inta){x=a;
return0;
}
};
则sizeof(w)的值为。
从系统实现角度看,C++中的动态多态性是通过来实现的。
40.
语句cout<
<
x<
endl;
中“<
称”为运算符。
41.
。
在C++中,用户管理文件的I/O操作需要头文件<
42.
在C++中,用于动态分配内存的运算符是。
43.
函数为对象分配内存空间,并可对类的数据成在类的定义中,通常用44.
员进行初始化。
在C++中,继承间接共同基类时只保留一份成员的方法是。
45.
'
现有如下定义:
intx='
B'
+2;
chary=x>
='
9'
?
C'
'
S'
则y是'
46.47.假设类X的对象x是类Y的成员对象,则“YObj;
”语句执行时,先调用类__________
的构造函数,再调用类__________的构造函数;
而在程序结束析构时,先调用类__________的析构函数,再调用类__________的析构函数。
对象的概念中,有静态和动态两种特征,其中静态特征称为,可由数48.
表示。
据表示,而动态特征称为行为,可由
继承关系可以是public、和private。
49.
50.常数据成员只能通过构造函数的初始化表初始化。
51.类所占空间为数据成员和成员函数所占空间之和。
52.档牡?
慜换層;
执行str[0]='
s'
语句后,字符串变为?
獜换層。
53.类的析构函数在删除对象时调用,并可以重载。
54.构造函数不能声明为虚函数,而析构函数可以声明为虚函数。
55.用来存放对象地址的指针变量,可称为指向对象的指针。
56.字符串CDU的长度是3,因此占用了3个字节的内存空间。
57.多重继承出现的二义性可以用作用域限定的方法消除。
58.<
运算符可以被重载,且可以提升优先级。
59.无论何种继承形式,派生类均不能直接访问基类的私有成员。
60.C++中,定义类的关键字是public。
61.抽象类定义的目的是用它作为基类去建立派生类。
62.常对象中的数据成员就是常数据成员。
63.对象基本特点有耦合性、多态性、继承性和封装性。
64.对象的赋值和复制是同一个含义,均是由对象1得到对象2。
65.构造函数有返回值,而析构函数没有返回值。
66.类定义的公用数据成员x,在类外可以直接赋值,如x=5;
67.若想输出时,数据靠右,并指定字段宽度为6,可用控制符setw(6)。
68.不出现类名,也可以直接定义对象。
69.下面程序中有一处错误,请用下划横线标出错误所在行并说明出错原因。
floata(intx,inty){floatz;
z=x+y;
returnz;
}inta(floatx,floaty){intz;
z=x-y;
returnz;
}
intmain()
{
inti=3;
floatj=3.5;
cout<
a(i,j);
a(3,3.5);
}出错原因:
70.阅读程序,在横线处填上适当字句。
#include<
iostream>
string>
usingnamespacestd;
声明一个类模板,虚拟类型名为//typeclassA{typex,y;
public:
A(typea,typeb){x=a;
y=b;
}x+ytypecmp(){return();
}};
intmain(){A<
int>
cp1(6.6,3.6);
cp2(
);
Acout<
cp1.cmp()<
\t'
cp2.cmp();
}
输出结果为:
71.请在下划横线处填写程序的输出结果。
classPoint{intx,y;
Point(intx1=5,inty1=6){x=x1;
y=y1;
~Point(){cout<
y<
isdeleted.<
}voidmain(){a;
Pointb(8,8);
Point
}:
输出结果为
72.阅读程序,在下划横线处填写适当字句。
classA{chara;
shortb;
voidout(){a=20;
b=40;
char*p;
p=&
cout<
a=<
(short)(*p++)<
=<
endl;
}};
intmain(){Atest;
test.out();
<
cout<
hesizeoftestis:
}a=20b=40输出结果为:
thesizeoftestis:
73.请在下划横线处填写程序的输出结果。
voidmain()
inty=9;
for(;
y>
0;
y--)if(y%3==0)cout<
y--;
}输出结果为:
74.阅读程序,在下划横线处填写适当字句。
classA{
a;
intconst
staticintb;
a
x初始化数据成员//构造函数,用变量intget_a()const{returna;
a+b;
}intget_a(){return
b//用常数333初始化数据成员
intmain(){
Atest2(222);
constAtest1(111);
test1.get_a()<
test2.get_a()<
75.阅读程序,在下划横线处填写适当字句。
classA{protected:
inta;
A(){a=1;
classB1:
publicA{public:
B1(){}};
classB2:
B2(){}};
classC:
//CB1和B2公有派生类由直接基类{public:
Derived(){}b){voidInit(int;
a成员的赋给基类B1//b}};
76.下面程序中有一处错误,请用下横线标出错误所在行并说明出错原因。
classbase{public:
};
classOne:
publicbase{};
classTwo:
classOT:
publicOne,public
Two{public:
intfunc();
voidmain()
{OTp;
p.base:
x;
77.C++语言中,构造一个派生类需要做哪些工作?
78.假定有一个类,名称为A,有1个字符型的数据成员c和1个整形数据成员x。
请写出该类的至少2个不同的构造函数形式。
79.分别用new和malloc()分配一个有5个元素的整形数组,名称为a。
80.完成一个求圆面积的小程序,要求如下:
,从它派生一个圆)(公有或保护,包括x坐标和y坐标①定义一个基类:
点类(Dot)
r(半径);
,增加私有数据成员类(Circle)
、计算并返回(input)②圆类的函数成员包括构造函数、输入圆心坐标及圆半径的函数;
面积的函数(area)
函数为数据成员赋值,圆心,通过构造函数或input③主函数中生成一个圆类对象crc计算面积,主函数输出结果。
的函数成员(6,6),半径为5。
使用对象crcarea坐标为
编写类的定义,完成如下要求:
81.
姓名和性别;
(字符串使用字符数组形式)①定义一个People类,它的数据成员有年龄、;
②以People类为基类,从中派生出学生类Student
类中,新增一个数据成员为高数成绩;
④③在Student
类构造函数实现;
Student所有数据成员的输入由
类有一成员函数为输出函数,用于输出所有数据成员;
⑤Student⑥主函数用自己的信息定义一个学生对象,并输出该信息。
.
1、下列属于标准输出流对象的是()A.cinB.printfC.cerrD.out
2、设有语句charstr[20];
cin>
str;
若从键盘输入helloChengDu!
CR>
,则输出结果为()B.helloChengDu!
A.helloChengDu!
D.helloChengDuC.hello
3、以下输出语句中,不能实现换行功能的是()A.cout<
B.cout<
\
C.printf(endl);
D.cout<
\n'
4、请将下述代码填写完整,使得输出结果为100.03.142
20.556,即最多保留3位小数,上下行小数点对齐。
floata=100,b=3.14159,c=20.556;
?
setprecision(?
)<
setw(8)<
a<
endl<
setprecision()?
setw(?
b<
endl
setw(?
c<
5、排序算法有哪些?
1、程序的循环结构有几种?
2、下面函数中默认参数的定义哪些是对的?
voida(intx=0,inty=1,intz=2);
voida(intx,inty=1,intz=2);
voida(intx=0,inty,intz=2);
voida(intx=0,inty=1,intz);
3、已知有intf1(inta),f2(int*p),f3(int&
//函数声明在主函数调用这些子函数时,实参分别是什么形式?
已知主函数有定义intx=5,*y=&
4、若有inti;
int&
j=i;
i=5;
j=++++i-j;
则i=;
j=。
j;
-j=i++++若是
5、设有数组定义chararray[]=”C++程序设计”;
,则数组array所占的空间为多少字节。
6、下面的代码段有什么问题?
如何解决?
voidtest(char*str1){
charstring[10];
if(strlen(str1)<
=10){strcpy(string,str1);
j;
若是j=i++++-
voidtest(char*str1){charstring[10];
=10){
strcpy(string,str1);
}}
1、下列语句中,能实现字符串复制的语句是()A.stringstr1=hello,str2=world!
str1=str2;
B.char*str1=hello,*str2=world!
strcpy(str1,str2);
C.charstr1[]=hello,str2[]=world!
D.char*str1=newchar[10],*str2=HelloWorld!
strcpy(str1,str2);
2、假定A为一个类,a为该类私有的数据成员,Get()为该类公有的函数成员,它返回a的值。
()的语句为a,则得到t对象中数据成员At;
现有如下语句A.t.Get();
D.t->
C.t.a;
B.t->
Get();
3、阅读程序,在对应序号处填上适当字句。
usingnamespacestd;
chara;
shortb;
public:
voidout(){a=20;
cout<
(1)<
{
test;
Atest.out();
(2)<
return0;
}a=20输出结果为:
b=40
(3)thesizeoftestis:
(1)//使用指针
(2)
(3)
4、简要阐述结构体与类的异同。
答:
()、下面关于友元的说法,不正确的是1
B.友元类的函数均是友元函数A.友元函数可以是成员函数D.友元的关系是双向的友元不具备传递性C.
2、下列关于函数模板与类模板的描述中,不正确的是()
A.函数模板的实例化是由编译程序在处理函数调用时自动完成
B.类模板的实例化必须由程序员在程序中显式的指定C.函数模板与类模板均可以显式调用
定义函数模板时可以使用多个类型参数,而类模板不可以D.
#include<
Stu{class
i;
int
j){i=j;
}Stu(int
//函数fun()的声明
(1)
}test(111.1);
//函数fun()的定义intfun(
(2)){returnx.i;
}
main(){int
//输出对象test的数据成员i的值<
(3)
return0
(4)
friendintfun(constStu&
);
(1)constStu&
x
(2)fun(test);
(3)111
4、判断
1得到对象2(1。
)对象的赋值和复制是同一个含义,均是由对象
A也是类C的友元。
(2)类A是类B的友元,而类B又是类C的友元,则类
(3)静态成员函数可以有返回值,但是一定不能有this指针。