return0;
}
运行时的输出结果是
A〕5
B〕7
C〕9
D〕12
〔24〕假设要对类BigNumber中重载的类型转换运算符long进行声明,以下选项中正确的选项是
A〕operatorlong()const;
B〕operatorlong(BigNumber);
C〕longoperatorlong()const;
D〕longoperatorlong(BigNumber);
〔25〕有如下函数模板定义:
template T1FUN(T2n){returnn*5.0;}
假设要求以int型数据9作为函数实参调用该模板,并返回一个double型数据,那么该调用应表示为
A〕FUN(9)
B〕FUN<9>
C〕FUN(9)
D〕FUN<9>(double)
〔26〕以下语句都是程序运行时的第1条输出语句,其中一条语句的输出效果与其他三条语句不同,该语句是
A〕cout<<12345;
B〕cout<<12345;
C〕cout<<12345;
D〕cout< 〔27〕以下关于析构函数的描述中,错误的选项是
A〕析构函数可以重载
B〕析构函数由系统自动调用
C〕每个对象的析构函数只被调用一次
D〕每个类都有析构函数
〔28〕以下关于构造函数的描述中,错误的选项是
A)构造函数名与类名相同
B〕构造函数可以有返回值
C)构造函数可以重载
D〕每个类都有构造函数
〔29〕假设PAT是一个类,那么程序运行时,语句“PAT(*ad)[3];〞调用PAT的构造函数的次数是
A〕0
B〕1
C〕2
D〕3
〔30〕以下描述中,错误的选项是
A〕公有继承时基类中的公有成员在派生类中仍是公有成员
B〕公有继承时基类中的保护成员在派生类中仍是保护成员
C〕保护继承时基类中的公有成员在派生类中仍是公有成员
D〕保护继承时基类中的保护成员在派生类中仍是保护成员
〔31〕生成派生类对象时,派生类构造函数调用基类构造函数的条件是
A〕无需任何条件
B〕基类中显式定义了构造函数
C〕派生类中显式定义了构造函数
D〕派生类构造函数明确调用了基类构造函数
〔32〕以下关于派生类和基类的描述中,正确的选项是
A〕派生类成员函数只能访问基类的公有成员
B〕派生类成员函数只能访问基类的公有和保护成员
C〕派生类成员函数可以访问基类的所有成员
D〕派生类对基类的默认继承方式是公有继承
〔33〕有如下类模板定义:
template classBigNumber{
longn;
public:
BigNumber(Ti):
n(i){}
BigNumberoperator+(BigNumberb){
returnBigNumber(n+b.n);
}
};
己知b1、b2是BigNumber的两个对象,那么以下表达式中错误的选项是
A〕bl+b2
B〕b1+3
C〕3+b1
D〕3+3
〔34〕以下关于文件流的描述中,正确的选项是
A〕文件流只能完成针对磁盘文件的输入输出
B〕建立一个文件流对象时,必须同时翻开一个文件
C〕假设输入流要翻开的文件不存在,将建立一个新文件
D〕假设输出流要翻开的文件不存在,将建立一个新文件
〔35〕有如下程序:
#include usingnamespacestd;
classPair{
intm,n;
public:
Pair(intj,intk):
m(j),n(k){}
intget(){returnm;}
intget()const{returnm+n;}
};
intmain(){
Paira(3,5);
constPairb(3,5);
cout+a.get()< return0;
}
运行时的输出结果是
A〕33
B〕38
C〕83
D〕88
二、填空题
〔1〕有序线性表能进行二分查找的前提是该线性表必须是【1】存储的。
〔2〕一棵二叉树的中序遍历结果为DBEAFC,前序遍历结果为ABDECF。
那么后序遍历结果为【2】。
〔3〕对软件设计的最小单位(模块或程序单元)进行的测试通常称为【3】测试。
〔4〕实体完整性约束要求关系数据库中元组的【4】属性值不能为空。
〔5〕在关系A(S,SN,D)和关系B(D,CN,NM)中,A的主关键字是S,B的主关键字是D,那么称【5】是关系A的外码。
〔6〕假设有定义语句“intx=10,y=20,z=20;〞,那么表达式x>z&&y==z的值为【6】。
〔7〕有如下语句序列:
intx=-10;while(++x){}
运行时while循环体的执行次数为【7】。
〔8〕有如下语句序列:
intarr[2][2]={{9,8},{7,6}};
int*p=arr[0]+1;cout<<*p< 运行时的输出结果是【8】。
〔9〕函数fun的功能是将一个数字字符串转换为一个整数,请将函数补充完整。
intfun(char*str){
intnum=0;
while(*str){
num*=10;
num+=【9】;
str++;
}
returnnum;
}
〔10〕假设要将函数“voidFriFun();〞声明为类MyClass的友元函数,那么应在类MyClass的定义中参加语句【10】。
〔11〕以下程序的输出结果为012,请根据注释将横线处的缺失局部补充完整。
#include usingnamespacestd;
classTest{
public:
Test(inta){data=a;}
~Test(){}
voidprint(){cout< private:
intdata;
};
intmain(){
Testt[3]={【11】};//对有3个元素的Test类对象数组t初始化t[i].print();
for(inti=0;i<3;i++)
return0;
}
〔12〕请在横线处填写派生类Derived的继承方式,使得程序的输出结果为Base。
#include usingnamespacestd;
classBase{
public:
voidprint(){cout<<"Base";}
};
classDerived:
【12】Base{};
intmain(){
Derivedd;
d.print();
return0;
}
〔13〕以下程序的输出结果为12.324.6,请将横线处的缺失局部补充完整。
#include usingnamespacestd;
classBase{
public:
Base(inta):
idata(a){}
voidprint(){cout<<'';}
private:
intidata;
};
classDerived:
publicBase{
public:
Derived(inta;doubleb):
【13】,ddata(b){}
voidprint(){Base:
:
print();cout<<'';}
private:
doubleddata;
};
intmain(){
Deriveddl(1,2.3),d2(2,4.6);
d1.print();
d2.print();
return0;
}
〔14〕以下程序的输出结果为-5/8-3/4,请将横线处的缺失局部补充完整。
#include usingnamespacestd;
classFraction{//“分数〞类
public:
Fraction(doublea,doubleb):
num(a),den(b){}
~Fraction(){}
//重载取负运算符“-〞,返回一个分数对象,其分子是原来分子的相反数。
Fractionoperator-(){
【14】
returnf;
}
voidprint(){cout<<'
<?
;> private:
doublenum;//分子
doubleden;//分母
};
intmain(){
Fractionf1(5;8),f2(3,4);
(-f1).print();(-f2).print();
return0;
}
〔15〕函数Min的功能是返回具有n个元素的数组array中的最小值。
请将横线处的缺失局部补充完整,使得程序的输出结果为1.24。
#include usingnamespacestd;
template TMin(T*array,intn){
Tmin=array[0];
for(inti=1;i if(array[i] returnmin;
}
intmain(){
doublearr[8]={5.2,48.45,41.01,42,51.2,1.24,14.12,42};
cout<<【15】;
return0;
}