c++模拟试题二Word下载.docx
- 文档编号:5167206
- 上传时间:2023-05-04
- 格式:DOCX
- 页数:15
- 大小:20.23KB
c++模拟试题二Word下载.docx
《c++模拟试题二Word下载.docx》由会员分享,可在线阅读,更多相关《c++模拟试题二Word下载.docx(15页珍藏版)》请在冰点文库上搜索。
若文件不存在,建立一个新文件
7.下面说法正确的是()
A.内联函数在运行时是将该函数的目标代码插入每个调用该函数的地方
B.内联函数在编译时是将该函数的目标代码插入每个调用该函数的地方
C.类的内联函数必须在类体内定义
D.类的内联函数必须在类体外通过加关键字inline定义
8.可以用p.a的形式访问派生类对象p的基类成员a,其中a是()
A.私有继承的公有成员B.公有继承的私有成员
C.公有继承的保护成员D.公有继承的公有成员
9.在公有派生情况下,有关派生类对象和基类对象的关系,不正确的叙述是()
A.派生类的对象可以赋给基类的对象
B.派生类的对象可以初始化基类的引用
C.派生类的对象可以直接访问基类中的成员
D.派生类的对象的地址可以赋给指向基类的指针
10.对于类定义
classA{
public:
virtualvoidfunc1(){}
voidfunc2(){}
};
classB:
publicA
{
voidfunc1(){cout<
<
〃classBfunc1〃<
end1;
}
virtualvoidfunc2(){cout<
〃classBfunc2〃<
下面正确的叙述是()
A.A:
func2()和B:
func1()都是虚函数
B.A:
func1()都不是虚函数
C.B:
func1()是虚函数,而A:
func2()不是虚函数
D.B:
func1()不是虚函数,而A:
func2()是虚函数
第二部分非选择题(共80分)
二,填空题(本大题共10小题,每小题2分,共20分)不写解答过程,将正确的答案写在每小题的横线处.错填或不填均无分.
11.定义类的动态对象数组时,系统只能够自动调用该类的无参构造函数对其进行初始化.
12.在C++程序设计中,建立继承关系倒挂的树应使用单一继承.
13.表达式cout<
end1还可表示为cout<
’\n’或者cout<
’\12’或者cout<
’\xa’
14.基类的公有成员在派生类中的访问权限由访问控制决定.
15.C++支持的两种多态性分别是静态多态性和动态多态性.
16.C++中语句constchar*constp=〃hello〃;
所定义的指针p和它所指的内容都不能被改变或者重新赋值.
17.假定AB为一个类,则语句AB(AB&
x);
为该类拷贝或者复制初始化构造函数的原型说明.
18.将关键字const写在成员函数的函数头或者参数表和函数体之间时,所修饰的是this指针.
19.在C++中,访问一个对象的成员所用的运算符是’.’或者成员选择运算符,访问一个指针所指向的对象的成员所用的运算符是->
或者成员访问运算符.
20.派生类从一个或多个以前定义的该类的基类继承数据和函数.
三,改错题(本大题共5小题,每小题2分,共10分)
21.指出下面程序段中的错误,并说明出错原因.
classA
{
inta,b;
public:
A(intaa,intbb){a=aa;
b=bb;
Ax(2,3),y(4);
//语句出错,因为没有单参数的构造函数(或者y(4)少写了一个参数).
22.指出并改正下面利用类模板的对象定义中的错误.
template<
classTany
Tx,y;
public:
Tany(Ta,Tb){x=a,y=b;
Tsum(){returnx+y;
Tany(int)obj(10,100);
//Tany<
int>
obj(10,100);
23.指出下面程序段中的错误,并说明出错原因.
classone
private:
inta;
voidfunc(two&
);
two尚未声明(或应在classone前加声明语句classtwo;
).
classtwo
intb;
friendvoidone:
func(two&
voidone:
r){a=r.b;
24.指出下面程序段中的错误,并说明出错原因.
#include<
iostream.h>
voidfun(){cout<
〃a.fun〃<
endl;
}
};
classB{
〃b.fun〃<
voidgun(){cout<
〃b.gun〃<
classC:
publicA,publicB
voidgun(){cout<
〃c.gun〃<
voidhun(){fun();
}fun()有二义性
25.指出下面程序段中的错误,并说明出错原因.
classLocation
intX,Y=20;
不能采用这种方式初始化.
protected:
intzeroX,zeroY;
intSetZero(intZeroX,intZeroY);
private:
intlength,height;
floatradius;
voidinit(intinitX,intinitY);
intGetX();
intGetY();
四,完成程序题(本大题共5小题,每小题4分,共20分)根据题目要求,完成程序填空.
26.在下面横线处填上适当字句,完成类中成员函数的定义.
int*a;
A(intaa=0){a=newint(aa);
//用aa初始化a所指向的动态对象}
~A(){deletea;
}//释放动态存储空间
27.下面是一个函数模板,用于计算两个向量的和.在下面横线处填上适当字句,完成函数模板定义.
template<
T*f(T*a,T*b,intn)
T*c=newT[n];
for(inti=0;
i<
n;
i++)c[i]=a[i]+b[i];
returnc;
voidmain()
inta[5]={1,2,3,4,5},b[5]={10,20,30,40},*p;
p=f(a,b,5);
for(inti=0;
5;
i++)
cout<
p[i]<
28.下面是一个用户口令检查程序,在横线处填上适当语句完成程序功能.
string.h>
constchar*PASS=“wolleh“;
//定义由PASS指针所指向的口令wolleh.
charuser[10];
//用于存放输入的口令
cout<
〃pleaseinputyourpassword:
〃<
cin.getline(user,9);
(或cin>
>
user;
)//输入口令
if((strcmp(user,PASS))==0)
〃yourpasswordiscorrect〃<
else
〃yourpasswordiserror〃<
29.下面是类fraction(分数)的定义,其中重载的运算符<
以分数形式输出结果,例如将三分之二输出为2/3.在横线处填上适当字句.
classfraction
intden;
//分子
intnum;
//分母
friendostream&
operator<
(ostream&
fraction);
…};
ostream&
operator<
os,fractionfr)
os<
fr.den<
’/’<
fr.num;
returnos;
30.在下面程序横线处填上适当的字句,使其输出结果为0,56,56.
classbase{public:
___virtual_____int________func(){return0;
}};
classderived:
publicbase
inta,b,c;
____void__________setValue(intx,inty,intz){a=x;
b=y;
c=z;
intfunc(){return(a+b)*c;
voidmain()
{
baseb;
derivedd;
b.func()<
‘,‘;
d.setValue(3,5,7);
d.func()<
base&
pb=d;
pb.func()<
五,程序分析题(本大题共6小题,每小题5分,共30分)给出下面各程序的输出结果.
31.
voidmain()
int*a;
int*&
p=a;
intb=10;
p=&
b;
*a;
输出为:
答案:
10
32.
template<
Tf(T*a,T*b,intn)
Ts=(T)0;
for(inti=0;
i++)
s+=a[i]*b[i];
returns;
doublec[5]={1.1,2.2,3.3,4.4,5.5},d[5]={10.0,100.0,1000.0};
f(c,d,5)<
答案:
3531
33.
iomanip.h>
4;
endl<
setfill(‘‘)<
setw(4-i)<
’0’<
setfill(‘*‘)<
setw(i+i)<
(i>
0?
‘0‘:
‘‘);
0
0*0
0***0
0*****0
34.运行下面的程序,写出当输入25,60时的输出结果.
classgoods
staticinttotalWeight;
intweight;
goods(intw){weigh=w;
totalWeight+=w;
goods(goods&
gd){weight=gd.weight;
totalWeight+=weight;
~goods(){totalWeight-=weight;
intgetwg(){returnweight;
staticintgetTotal(){returntotalWeight;
intgoods:
totalWeight=0;
voidmain()
{
intw;
“Theinitialweightofgoods:
”<
goods:
getTotal()<
cin>
w;
//输入25
goodsg1(w);
//输入60
goodsg2(w);
“Thetotalweightofgoods:
Theinitialweightofgoods:
25
60
85
35.
A(){}
virtualvoidfunc(){cout<
“DestructorA”<
~A(){func();
classB:
B(){}
voidfunc(){cout<
“DestructorB”<
~B(){func();
voidmain(){Bb;
A&
a=b;
DestructorB
DestructorA
36.
#include<
classMyClass
intnumber;
voidset(inti);
intnumber=3;
voidMyClass:
set(inti){number=i;
MyClassmy1;
intnumber=10;
my1.set(5);
my1.number<
my1.set(number);
my1.set(:
number);
my1.number;
5
3
参考答案:
(二)
第一部分选择题(共20分)一,单项选择题(本大题共10小题,每小题2分,共20分)
1.D2.B3.B4.A5.A6.A7.B8.D9.C10.C
第二部分非选择题(共80分)
二,填空题(本大题共10小题,每小题2分,共20分)
11.无参
12.单一(或单)
13.cout<
‘\n‘(或cout<
‘\12‘,或cout<
‘\xA‘,或其它等价形式)
14.访问控制(或其它等价形式)
15.编译时的(或静态,或操作重载)运行时的(或动态,或虚函数)
16.改变(或重新赋值)
17.复制初始化(或拷贝)
18.函数头(或参数表)函数体
19.成员选择运算符(或"
."
)成员访问运算符(或"
->
"
)
20.基类
21.Ax(2,3),y(4);
语句出错,因为没有单参数的构造函数(或者y(4)少写了一个参数).
22.Tany(int)obj(10,100);
出错,应为Tany<
语句.
23.voidfunc(two&
amp;
出错,two尚未声明(或应在classone前加声明语句classtwo;
24.voidhun(){fun();
}出错,C:
fun()有二义性.:
25.intX,Y=20;
出错,不能采用这种方式初始化.
四,完成程序题(本大题共5小题,每小题4分,每空2分,共20分)
26.newint(aa)deletea
27.newint[n]a[i]+b[i](或等价形式)
28.constchar*PASS=〃wolleh〃;
(或constcharPASS[]=〃wolleh〃;
)cin.getline(user,9);
)
29.os<
‘/‘<
fr.numos
30.virtualintvoid
五,程序分析题(本大题共6小题,每小题5分,共30分)
31.10
32.3531
33.00*00***00*****0
34.Theinitialweightofgoods:
02560(这是输入数据)Thetotalweightofgoods:
85
35.DestructorBDestructorA
36.5103
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- c+ 模拟 试题
![提示](https://static.bingdoc.com/images/bang_tan.gif)