c++期终考试2部分答案Word下载.docx
- 文档编号:13809067
- 上传时间:2022-10-13
- 格式:DOCX
- 页数:17
- 大小:21.44KB
c++期终考试2部分答案Word下载.docx
《c++期终考试2部分答案Word下载.docx》由会员分享,可在线阅读,更多相关《c++期终考试2部分答案Word下载.docx(17页珍藏版)》请在冰豆网上搜索。
题序
一
二
三
四
五
六
七
八
总评
计分
试题一、选择题(每题1分,共20分)
1.所谓数据封装就是将一组数据和与这组数据有关的操作组装在一起,形成一个实体,这个实体定义成()。
A
A.类B.对象C.函数体D.数据块
2.假定A是一个类,则执行“A*p=newA[10];
”语句时共调用该类构造函数的次数是()。
D
A.1B.2C.11D.10
3.已知定义了类Person,则Person类的复制构造函数声明应定义正确的是()。
B
A.voidPerson(Person&
p);
B.Person(constPerson&
C.PersonPerson(Person&
p)D.Person(Personp);
4.下列不能作为类的成员的是()。
A.自身类对象的指针B.自身类对象C.自身类对象的引用D.另一个类的对象
5.下述静态数据成员的特征中,()是错误的。
A.说明静态数据成员时前边要加修饰符static
B.静态数据成员在类内进行初始化
C.引用静态数据成员时,要在静态数据成员名前加类名和作用域运算符
D.静态数据成员是所有对象共用的
6.已知类A是类B的友元,类B是类C的友元,则()。
A.类A一定是类C的友元
B.类C一定是类A的友元
C.类C的成员函数可以访问类B的对象的任何成员
D.类A的成员函数可以访问类B的对象的任何成员
7.对于常成员函数,下面描述正确的选项是()。
C
A.类的成员函数可以操作常对象B.类的成员函数不能操作常对象
C.只有常成员函数可以操作常对象D.在常成员函数中,常对象可以被更新
8.有如下类定义:
classMyBASE{
intk;
public:
voidset(intn){k=n;
}
intget()const{returnk;
};
classMyDERIVED:
protectedMyBASE{
protected;
intj;
voidset(intm,intn){MyBASE:
:
set(m);
j=n;
intget()const{returnMyBASE:
get()+j;
则类MyDERIVED中保护成员个数是()。
A.4B.3C.2D.1
9.有下列代码:
1classFred;
2classBarney{
3Fredx;
4Fred*p;
5};
6classFred{
7Barneyy;
8};
有错误的地方是()。
A.第1行:
classFred;
B.第3行:
Fredx;
C.第4行:
Fred*p;
D.第7行:
Barneyy;
10.需要一种逻辑功能一样的函数,而编制这些函数的程序文本完全一样,区别只是数据类型不同。
对于这种函数,下面不能用来实现这一功能的选项是()。
D
A.宏函数B.为各种类型都重载这一函数
C.模板D.友元函数
11.为正确执行以下程序,则函数定义正确的是()。
B
#include<
iostream.h>
voidmain()
{print(2,3.4);
A.template<
classT>
voidprint(Targ1,Targ2)
{
cout<
<
"
arg1:
<
arg1<
endl;
arg2:
arg2<
}
B.template<
classT1,classT2>
voidprint(T1arg1,T2arg2)
C.voidprint(intarg1,intarg2)
}
D.template<
classT>
voidprint(Targ1,intarg2)
12.以下基类哪个表示抽象类()。
C
A.classMyClass{virtualvoidvf(int);
B.classMyClass{voidvf(int)=0;
C.classMyClass{virtualvoidvf()=0;
D.classMyClass{virtualvoidvf(int){}};
13.下面关于虚函数和函数重载的叙述不正确的是()。
A
A.虚函数不是类的成员函数
B.虚函数实现了C++的多态性
C.函数重载允许非成员函数,而虚函数则不行
D.函数重载的调用根据参数的个数、序列来确定,而虚函数依据对象确定
14.如果表达式++i*k时中的“++”和“*”都是重载的友元运算符,则采用运算符函数调用格式,该表达式还可表示为()。
A)operator*(i.operator++(),k)B)operator*(operator++(i),k)
C)i.operator++().operator*(k)D)k.operator*(operator++(i))
15.下列关于虚函数的说法,错误的是()。
A.需要通过基类的对象、指针或者引用来调用虚函数
B.派生类中的虚函数必须与基类中的虚函数同名,但参数的个数可以不一样
C.一个函数如果被定义成虚函数,经历多次派生后,其虚特性将不会保持
D.设置虚函数的目的是消除二义性
16.有如下程序:
#include<
iostream>
usingnamespacestd;
classBase{
private:
voidfun1()const{cout<
”fun1”;
protected:
voidfun2()const{cout<
”fun2”;
voidfun3()const{cout<
”fun3”;
classDerived:
protectedBase{
public:
voidfun4()const{cout<
”fun4”;
intmain(){
Derivedobj;
obj.fun1();
//①
obj.fun2();
//②
obj.fun3();
//③
obj.fun4();
//④
其中没有语法错误的语句是()。
A.①B.②C.③D.④
17.有如下类定义:
classAA{
inta;
intgetRef()const{return&
a;
}//①
intgetValue()const{returna;
}//②
voidset(intn)const{a=n;
}//③
friendvoidshow(AAaa)const{cout<
}//④
其中的四个函数定义中正确的是()。
B
A.①B.②C.③D.④
18.下面程序使用new与delete命令,下面是对这段程序的叙述,其中正确的是()。
intmain()
{
long*p,i;
p=newlong;
if(!
p){cout<
”Allocationerror\n”;
return1;
*p=1000;
i=(long)p;
cout<
”Hereisintegeratp:
”<
*p<
”\n”;
”Hereisi:
“<
i<
deletep;
return0;
A.有错误,编译不能通过
B.正确,执行结果为:
10001000
C.正确,但执行结果的第二个数值不定
D.正确,执行结果的各个数值均不为1000
19.要求打开文件test.dat,可读出数据,正确的语句是()D
A.ifstreammyFile(“test.dat”,ios:
in);
B.fstreammyFile(“test.dat”,ios:
C.ifstreammyFile;
myFile.open(“test.dat”,ios:
D.以上都正确
20.read函数的功能是从输入流中读取()。
D
A.一个字符B.当前字符C.一行字符D.指定若干字节
试题二、程序填空题(每空1分,共20分)。
1.【程序说明】以下程序能实现求a2+b2+c2。
其中a、b、c的值由对象的初始化值提供。
该程序使用静态成员实现。
运行结果:
Number=5
Number=10
Number=15
Result=350
classmyclass{
myclass(intx);
voidgetnumber();
staticvoidResult();
(1);
//定义静态数据成员sum
myclass:
myclass(intx){
a=x;
(2);
voidmyclass:
getnumber(){
cout<
"
Number="
a<
endl;
Result(){
Result="
sum<
(3);
intmain()
{
myclas
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- c+ 期终 考试 部分 答案