};
下列选项中,输出结果为A0的语句是
A)YYy1(0,0);
B)YYy2
(1);
C)YY y3(0);
D)YY y4;
(32)有如下程序:
#include
Usingnamespacestd;
classA{
public:
virtualvoidf(){cout+1;}
voidg(){cout<<2;}
};
classB:
publicA{
public:
virtualvoidf(){cout<<3;}
voidg(){ecut<<4;}
};
voidshow(A&a){a.f();a.g();}
intmain(){
Bb;
show(b);
return0;
}
运行时的输出结果是
A)12
B)34
C)14
D)32
(33)有如下程序:
#include
usingnamespacestd;
classPair{
intm;
intn;
public:
Pair(inti,intj):
m(i),n(j){}
bootoperator>(pairp)const; //须在类体外给出定义
};
intmain(){
PairAl(3,4),p2(4,3);p3(4,5);
Cout<<(pl>p2)<<(P2>P1)<<(p2>p3)<<(p3>p2);
return0;
}
运算符函数。
operator>的功能是比较两个Pair对象的大小,当左边对象大时,返回true,否则返回false。
比较规则是首先比较两对象的m成员,m大者为大;当m相等时比较n,n大者为大。
程序输出0101,下列对运算符重载函数的正确定义是
A)boolPair:
:
operator>(Pairp)const
{if(m!
=p.m)returnm>p.m;returnn>p.n;}
B)boolPair:
;operator>(Pairp)
{if(m!
=p.m)returnm>p.m;returnn>p.n;}
C)boolPair:
:
operator>(Pairp)const
{if(m>p.m)returntrue;returnn>p.n;}
D)boolPair:
;operator>(Pairp)
{if(m>p.m)returntrue;returnn>p.n;}
(34)假定下列语句都是程序运行后首次执行的输出语句,其中输出结果与另外三条语句不同的语句是
A)cout< B)cout< C)cout<<123< D)cout< (35)有如下程序:
#include
usingnamespacestd;
classONE{
intc;
public:
ONE():
c(0){cout<<1;}
ONE(intn):
c(n){cout<<2;}
};
classTWO{
ONEonel;
ONEone2;
public:
TWO(intm):
one2(m){cout<<3;}
};
intmain()t
TWOt(4)
return0
}
运行时的输出结果是
A)3
B)23
C)123
D)213
二、填空题(每空2分,共30分)
(6)有如下程序段:
intx=1,Y=2,z=3;
x=x^z;
y=y^z;
z=x^y;
cout< 执行这个程序段的输出是【6】。
(7)有如下程序段:
fer(inti=1;i<=50;i++){
if(i%3!
=0)
continue;
else
if(i%5!
=0)
continue;
tout<
}
执行这个程序段的输出是【7】。
(8)有如下程序段:
Char c[20]=“examination”;
c[4]=0;
cout< 执行这个程序段的输出是【8】。
(9)下面的函数利用递归实现了求1+2+3+……+n的功能:
intsum(intn){
if(n==0)
return0;
else
returnn+sum(n-1);
}
在执行sum(10)的过程中,递归调用sum函数的次数是【9】。
(10)非成员函数应该声明为类【10】函数才能访问该类的私有成员。
(11)有如下程序:
#include
usingnamespacestd;
classMonitor{
public:
Monitor(chart):
type(t){}
voidprint()const
{cout<<“Thetypeofmonitoris”< private:
chartype;
};
classComputer{
public:
Computer(inti,charc):
【11】{}
voidPrint()const
{cout<<“Thecomputeris”< private:
intid;
Monitormon;
};
constComputermyComputer(101,'B‘);
myComputer.Print();
return0;
}
请将程序补充完整,使程序在运行时输出:
Thecomputeris101
'Thetypeofmonitori.s8
(12)有如下程序:
#include
usingnamespacestd
classAnimal{
public:
virtualchar*getType()const{return“Animal”;}
virtualchar*getVoice()const{return“Voice”;}
};
ClassDog:
publicAnimal{
public:
char*getType()const{return“Dog”;}
char*getVoice()const{return“Woof”}
};
voidtype(Animal&a){cout< voidspeak(Animala){cout< intmain(){
Dogd;type(d);cout<<“speak”;speak(d);cout< return0;
}
运行时的输出结果是【12】。
(13)补充完整下面的类定义:
constdoublePI=3.14;
classCircle{ //圆形物体的抽象基类
protected:
doubler; //半径
public:
Circle(doubleradius=0):
r(radius){}
【13】;//计算圆形物体表面积的纯虚函数声明
};
classCylinder:
publicCircle{ //圆柱体类
doubleh; //高度
public:
Cylindr(doubleradius=0,doubliheight=0):
Circle(radius),h(height){}
VirtualdoubleArea(){//计算圆柱体的表面积
return2*PI*r*(r+h);
}
};
(14)补充完整下面的类定义:
classXCH{
char*a;
public:
XCH(char*as){//构造函数
a=newchar[strlen(aa)+1];
strcpy(a,aa);
}
XCH&operator=(constXCH&x) //重载赋值函数
Delele[]a;
A=newchar[strlen(x.a)+l];
strcpy(a,x.a)
【14】;
}
~XCH(){delete[]a;}
};
(15)补充完整下面的模板定义:
template //Type为类型参数
classXtwo{ //由两个Type类型的数据成员构成的模板类
Typea;
Typeb;
public:
Xtwe(Typeaa=0,Typebb=0):
a(aa),b(bb){}
intCcmpare (){//比较a和b的大小
if(a>b)returm1;
elseif(a==b)return0;
elsereturn-1;
}
TypeSnm(){returna+b;}//返回a和b之和
TypeMult(); //函数声明,返回a和b之乘积
};
Template
【15】:
:
Mult(){returna*b;}//Mult函数的类外定义
参考答案
一、 选择题:
(11)D (12)B (13)A (14)B (15)B (16)A (17)B (18)C (19) A (20)D (21)D (22)B (23)A (24)B (25)C (26)B (27)A (28)B (29)