帮助
|
留言交流
|
首 页
阅览室
馆友
我的图书馆
来自:
觉悟社心天地
>
馆藏分类
配色:
字号:
大
中
小
模拟试卷
2012-11-21 | 阅:
转:
|
分享
选择题(每小题2分,共20分)
1、一个函数功能不太复杂,但要求被频繁调用,则应把它定义为()
A.嵌套函数B.重载函数C.递归函数D.内联函数
2、关于new运算符的下列描述中,错误的是()
A.它可以用来动态创建对象和对象数组B.使用它创建的对象或对象数组可以使用运算符delete删除
C.使用它创建对象时要调用构造函数D.使用它创建对象数组时必须指定初始值
3、类中的某一函数,其名称与类名完全相同,在类生成对象时系统自动调用,它是()。
A.静态函数B.析构函数C.友元函数D.构造函数
4、在下面有关析构函数特征的描述中,正确的是()。
A.析构函数可以重载B.在类中,程序员如不写出自定义的析构函数,该类中就没有析构函数
C.析构函数中必须写出输出语句D.类中的析构函数只能有一个
5、下列对派生类的描述,()是错误的。
A.派生类是新类B.一个派生类可以作为另一个派生类的基类
C.派生类中可以定义构造函数用于初始化自身的数据成员D.派生类中的构造函数是从基类继承下来的
6、下面叙述错误的是()。
A.无论何种继承方式,派生类中的函数均不可直接访问基类的私有成员
B.无论何种继承方式,派生类中的函数均可直接访问基类的保护成员
C.无论何种继承方式,派生类中的函数均可直接访问基类的公有成员
D.私有继承下,派生类中的函数不可直接访问基类的公有成员
7、下列关于纯虚函数与抽象类的描述中,错误的是()。
A.抽象类可以生成对象B.纯虚函数是一种特殊的函数,它允许没有具体的实现
C.含有纯虚函数的类是抽象类D.抽象类只能作为基类来使用,其纯虚函数的实现由派生类给出
8、复数类Complex中使用成员函数重载+号双目运算符,函数声明正确的是()
A.Complexoperator+()B.Complexoperator+(Complex&T)
C.friendComplexoperator+()D.friendComplexoperator+(Complex&T1,Complex&T2)
9、在C++中,使用流进行输入输出,其中用于屏幕输入()
A.cerrB.cinC.coutD.clog
10、设有函数模板
template
QSum(Qx,Qy)
{return(x)+(y);}
则下列语句中对该函数模板错误的使用是()
A.Sum(10,2);B.Sum(5.0,6.7);C.Sum(15.2f,16.0f);D.Sum(“AB”,”CD”);
二、问答题(每题5分,共20分)
1、根据程序,回答下面问题。
#include
charK(chars)//A1
{charq[2];q[0]=s[0];q[1]=’\0’;
returnq;}
charK(chara,charb)//A2
{returnstrcat(a,b);}
voidmain()
{charx[6]={‘a’,’b’},y[]={”c”};
cout<
cout<
(1)在程序执行到A处和B处时,分别调用A1和A2哪个函数?
(2)在该程序中,如还有一函数,其声明形式为
doubleK(charp)
请问它与其它K函数能构成函数重载吗?为什么?
2、根据程序,回答下面的问题。classMyclass
{protected:
intx;
public: Myclass(){x=0;}
Myclass(Myclass&T)//A
{x=T.x;}
friendvoidDisp(Myclass&m);
};
voidDisp(Myclass&T){
voidmain()
{Myclassm1;
Disp(m1);//C
}
(1)Myclass中存在系统提供的默认构造函数吗? 为什么?
(2)标识行C函数执行时,是否调用A行的函数?为什么?cout<
3、根据程序,回答下面的问题。classM
{public:
staticintx;
public:
staticvoidOK()
{_____________;}
};
intM::x=10;
voidmain()
{M::x=8;
M::OK();//A}
(1)A行语句执行后,x的值变为9,则在横线处填写的语句应是什么?
(2)x是M类的什么数据成员?它是否遵守访问权限的使用规则?
4、根据程序,回答下面的问题。
classComplex
{public:
Complex(doublex,doubley){r=x;i=y;}
Complexoperator-(Complex&T)
{return____________;}
private:doubler,i;};//r表示实部,i表示虚部
(1)复数类Complex“-”号重载是运算符重载的那种形式?运算符重载的另一种方式是什么?
(2)横线上适当的语句是什么?
三、程序分析,写出下面程序的运行结果(每题6分,共30分)
1、#include
class{private:doubleA,B;
public:(doublei,doublej){A=i,B=j;cout<<"C"<
voidprint(){cout<
voidmain(){a1(20,32);
QQQs=newQQQ(8,7);a1print();}
2、#include
classM
{public:
M()
{cout<<”ConstructorM.”<
voidPrint(){cout<<”MM”<
};
classA:publicM
{public:
A(inti)
{a=i;cout<<”ConstructorA.”<
voidPrint()
{M::Print();cout<
private:inta;};
voidmain()
{Aaa(5);
aa.Print();}程序运行结果:
3、#include
template
voidSwap(SomeType&a,SomeType&b){SomeTypetmp;tmp=a;a=b;b=tmp;}
template
Ts(Ta[],intn)
{inti;Tm=a[0];
for(i=1;i
m+=a[i];
voidmain()
{inta=9,b=10;intp[]={3,4,5};
Swap(a,b);cout<
cout<
程序运行结果:
returnm;}
4、OK.txt中没有任何内容,写出下面程序的运行结果。#include
#include
voidmain()
{ofstreamf1(“C:\\OK.txt”,ios::out);
chars1[]={”ab12345”};inti=0;
while(i<=6){
f1<
}
f1.close();}
程序执行后,OK.txt文件存放的字符是:
5、#include
voidmain(){
try{
cout<<"try1:\n";
throw1; }
catch(inti){
cout<<"catchtry1:int"<
catch(doubled){
cout<<"catchtry1:double"<
try{
cout<<"try2:\n";
throw1.2; }
catch(inti){
cout<<"catchtry2:int"<
catch(doubled){
cout<<"catchtry2:double"<
}
运行结果:
四、编程题(第1题8分,第2题10分)
1、编写程序:类Worker描述工人这一概念,其中含有name和salary成员,表示名字和薪水。在类Worker中含有成员函数Disp,用来输出每个Worker对象的名字和薪水。在主函数main中创建一个Worker类对象,调用成员函数输出名字和薪水。(要求写出构造函数)
2、编程实现:FangWu类描述房屋这一概念,其中数据成员L和W表示房屋的长与宽,成员函数Area()计算房屋的面积。PersonFW类描述住户这一概念,它是FangWu的派生类,PersonFW类中新增数据成员number表示房屋所住的人数,成员函数Average()计算人均面积。请用C++代码描述这两个类。在main()函数中生成一个PersonFW类的对象,并计算人均面积。(要求编写派生类的构造函数)
五、综合设计(12分)
类Shape用来计算各类形状的面积,纯虚函数Area提供了计算各类形状面积的接口;类Circle描述圆这一形状,半径radius和计算面积的虚函数Area是其成员;类Triangle描述三角形,底边长width、底边高height和计算面积的虚函数Area是其成员。请用C++描述这三个类,并在main函数中计算一个圆的面积和一个三角形的面积。
命题人:王双立教研室主任(签字):系主任(签字):日期:2011年月
第4页共4页
献花(
0
)
+1
(本文系
觉悟社心天...
首藏
)
类似文章
更多
第八章 多态性和虚函数
重载操作符解析
从生活角度学习c++
c++学习笔记(九):运算符重载进阶
C 模板
第一次上机实验(ACCES)
C++中单冒号与双冒号的用法
静态成员函数怎么引用该类中的非静态成员函数
c 类与c#类的区别
发表评论: