配色: 字号:
模拟试卷
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、#includeclass{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;}

templateTs(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
(本文系觉悟社心天...首藏)