C++模拟试题笔试13文档格式.docx
《C++模拟试题笔试13文档格式.docx》由会员分享,可在线阅读,更多相关《C++模拟试题笔试13文档格式.docx(22页珍藏版)》请在冰点文库上搜索。
C、队列
D、二叉树
已知函数FA调用FB,若要把这两个函数定义在同一个文件中,则______。
A、FA必须定义在FB之前
B、FB必须定义在FA之前
C、若FA定义在FB之后,则FA的原型必须出现在FB的定义之前
D、若FB定义在FA之后,则FB的原型必须出现在FA的定义之前
有如下程序:
#include<
iostream>
usingnamespacestd;
classAA{
public:
AA(){cout<
<
'
1'
;
}
};
classBB:
publicAA{
intk;
BB():
k(0){cout<
'
2'
BB(intn):
k(n){cout<
3'
intmain(){
BBb(4),c;
return0;
运行时的输出结果是______。
A、1312
B、132
C、32
D、1412
将运算符重载为类成员函数时,其参数表中没有参数,说明该运算符是______。
A、不合法的运算符
B、一元运算符
C、无操作数的运算符
D、二元运算符
下列字符串中可以用作C++标识符的是______
A、2009var
B、goto
C、test-2009
D、_123
有如下程序段:
inti=1;
while
(1){
i++;
if(i==10)break;
if(i%2==0)cout<
*'
执行这个程序段输出字符*的个数是______。
A、10
B、3
C、4
D、5
下列关于虚基类的描述中,错误的是______。
A、使用虚基类可以消除由多继承产生的二义性
B、构造派生类对象时,虚基类的构造函数只被调用一次
C、声明"
classB:
virtualpublicA"
说明类B为虚基类
D、建立派生类对象时,首先调用虚基类的构造函数
在下列枚举符号中,用来表示"
相对于当前位置"
文件定位方式的是______。
A、ios_base:
:
cur
B、ios_base:
beg
C、ios_base:
out
D、ios_base:
end
计算斐波那契数列第n项的函数定义如下:
intfib(intn){
if(n==0)return1;
elseif(n==1)return2;
elsereturnfib(n-1)+fib(n-2);
若执行函数调用表达式fib
(2),函数fib被调用的次数是______。
A、1
B、2
C、3
D、4
Sample是一个类,执行下面语句后,调用Sample类的构造函数的次数是______。
Samplea[2],*p=newSample;
A、0
B、1
C、2
D、3
有如下模板声明:
template<
typenameT1,typenameT2>
classA;
下列声明中,与上述声明不等价的是______。
A、template<
classT1,classT2>
B、template<
classT1,typenameT2>
C、template<
typenameT1,classT2>
D、template<
typenameT1,T2>
className{
charname[20];
Name(){
strcpy(name,"
"
);
cout<
?
}
Name(char*fname){
strcpy(name,fname);
Namenames[3]={Name("
张三"
),Name("
李四"
)};
运行此程序输出符号?
的个数是______。
下列关于运算符重载的描述中,错误的是______。
A、:
运算符不能重载
B、类型转换运算只能作为成员函数重载
C、将运算符作为非成员函数重载时必须定义为友元
D、重载[]运算符应完成"
下标访问"
操作
有如下两个类定义:
classAA{};
classBB{
AAv1,*v2;
BBv3;
int*v4;
其中有一个成员变量的定义是错误的,这个变量是______。
A、v1
B、v2
C、v3
D、v4
有如下类定义:
classA{
char*a;
A():
a(0){}
A(char*aa){//把aa所指字符串拷贝到a所指向的存储空间
a=______;
strcpy(a,aa);
~A(){delete[]a;
横线处应填写的表达式是______。
A、newchar[strlen(aa)+1]
B、char[strlen(aa)+1]
C、char[strlen(aa)]
D、newchar[sizeof(aa)-1]
下列关于运算符函数的描述中,错误的是______。
A、运算符函数的名称总是以operator为前缀
B、运算符函数的参数可以是对象
C、运算符函数只能定义为类的成员函数
D、在表达式中使用重载的运算符相当于调用运算符重载函数
#include<
classC1{
~C1(){cout<
1;
classC2:
publicC1{
~C2(){cout<
2;
C2cb2;
C1*cb1;
A、121
B、21
C、211
D、12
下列枚举类型的定义中,包含枚举值3的是______。
A、enumtest{RED,YELLOW,BLUE,BLACK};
B、enumtest{RED,YELLOW=4,BLUE,BLACK};
C、enumtest{RED=-1,YELLOW,BLUE,BLACK};
D、enumtest{RED,YELLOW=6,BLUE,BLACK};
下列关于模板形参的描述中,错误的是______。
A、模板形参表必须在关键字template之后
B、模板形参表必须用括弧()括起来
C、可以用class修饰模板形参
D、可以用typename修饰模板形参
下列关于C++流的描述中,错误的是______。
A、cout>
>
A'
表达式可输出字符A
B、eof()函数可以检测是否到达文件尾
C、对磁盘文件进行流操作时,必须包含头文件fstream
D、以ios_base:
out模式打开的文件不存在时,将自动建立一个新文件
classXX{
intxdata;
XX(intn=0):
xdata(n){}
classYY:
publicXX{
intydata;
YY(intm=0,intn=0):
XX(m),ydata(n){}
YY类的对象包含的数据成员的个数是______。
classPublication{//出版物类
charname[30];
Publication(char*name="
未知名称"
){
strcpy(this->
name,name);
constchar*getName()const{returnname;
virtualconstchar*getType()const{return"
未知类型"
classBook:
publicPublication{//书类
Book(char*name):
Publication(name){}
书"
voidshowPublication(Publication&
p){
p.getType()<
:
p.getName()<
endl;
Bookbook("
精彩人生"
showPublication(book);
A、未知类型:
未知名称
B、未知类型:
精彩人生
C、书:
D、书:
classToy{
Toy(char*_n){strcpy(name,_n);
count++;
~Toy(){count--;
char*GetName(){returnname;
staticintgetCount(){returncount;
private:
charname[10];
staticintcount;
intToy:
count=0;
Toyt1("
Snoopy"
),t2("
Mickey"
),t3("
Barbie"
t1.getCount()<
D、运行时出错
A(inti):
r1(i){}
voidprint(){cout<
E'
r1<
-'
voidprint()const{cout<
C'
r1*r1<
intr1;
Aa1
(2);
constAa2(4);
a1.print();
a2.print();
A、运行时出错
B、E2-C16-
C、C4-C16-
D、E2-E4-
已知数组arr的定义如下:
intarr[5]={1,2,3,4,5};
下列语句中输出结果不是2的是______。
A、cout<
*arr+1<
B、cout<
*(arr+1)<
C、cout<
arr[1]<
D、cout<
*arr<
iomanip>
ints[]={123,234};
right<
setfill('
)<
setw(6);
for(inti=0;
i<
i++){cout<
s[i]<
A、123
234
B、***123
C、***123
***234
D、***123
234***
某二叉树有5个度为2的结点以及3个度为1的结点,则该二叉树中共有______个结点。
二叉树的性质3:
在任意一棵二叉树中,度为0的结点(即叶子结点)总是比度为2的结点多一个。
本题中度为0的结点数为5+1=6,该二叉树中的总结点数为5+3+6=14。
软件开发过程主要分为需求分析、设计、编码与测试四个阶段,其中______阶段产生"
软件需求规格说明书"
。
软件需求规格说明书是需求分析阶段产生的最后成果,是软件开发中的重要文档之一。
人员基本信息一般包括:
身份证号,姓名,性别,年龄等。
其中可以作为主关键字的是______。
主关键字能惟一标识每条记录。
主关键字可以是一个字段,也可以是一组字段。
本题中能惟一标识一条记录的是身份证号。
程序流程图中的菱形框表示的是______。
程序流程图是一种传统的、应用广泛的软件过程设计表示工具,通常也称为程序框图,箭头表示控制流,矩形表示加工步骤,菱形表示逻辑条件。
在数据库技术中,实体集之间的联系可以是一对一或一对多或多对多的,那么"
学生"
和"
可选课程"
的联系为______。
两个实体间的联系可以归纳为3种类型:
一对一联系:
一对一的联系表现为主表中的每一条记录只与相关表中的一条记录相关联。
一对多联系或多对一:
一对多的联系表现为主表中的每一条记录与相关表中的多条记录相关联。
多对多联系:
多对多的联系表现为一个表中的多个记录在相关表中同样有多个记录与其匹配。
一个学生可以选修多门课程,一门课程可以被多个学生选修,所以学生和可选课程之间的联系为多对多。
classGrandChild{
GrandChild(){strcpy(name,"
Unknown"
constchar*getName()const{returnname;
virtualchar*getAddress()const=0;
classGrandSon:
publicGrandChild{
GrandSon(char*name){}
char*getAddress()const{return"
Shanghai"
GrandChild*gs=newGrandSon("
Feifei"
gs->
getName()<
住在"
getAddress()<
deletegs;
运行时的输出结果是______。
本题主要考查了虚函数和多态性。
基类GrandChild中声明了虚函数getAddress(),这个虚函数在派生类GrandSon中被重定义,无论是否用virtual修饰,重定义的函数仍然是一个虚函数。
在C++中,一个基类指针可以用于指向它的派生类对象,而且通过这样的指针调用虚函数时,被调用的是该指针实际所指向的对象类的那个重定义版本。
在main()函数中,第一条语句定义基类指针gs,gs指向动态创建的派生类对象,根据创建派生类对象时,构造函数执行顺序:
先调用基类构造函数,使基类数据成员name指向字符串"
;
然后执行派生类构造函数。
函数getName()是实函数,在实函数的情况下,通过基类指针gs所调用的只能是基类的那个函数版本,因此gs->
getName()的返回值为"
,gs->
getAddress()调用的是派生类的那个重定义版本,返回值为"
,因此程序运行时的输出结果是Unknown住在Shanghai。
请将下列模板类Data补充完整。
typenameT>
classData{
public:
voidput(Tv){val=v;
______get()//返回数据成员val的值,返回类型不加转换
{returnval;
private:
Tval;
本题主要考查了类模板。
根据题意,横线处应填函数get的返回值类型。
根据函数体语句returnval;
以及该语句的注释,函数get的返回值类型应为数据成员val的类型T。
因此横线处应填T。
有如下循环语句:
for(inti=50;
i>
20;
i-=2)cout<
'
运行时循环体的执行次数是______次。
本题主要考查了for循环。
循环初始值为50,步长值为-2,终止值为21。
循环次数=int((终值-初值)/步长)+1=int((21-50)/(-2))+1=15。
如下程序定义了"
单词"
类Word,类中重载了<
运算符,用于比较"
的大小,返回相应的逻辑值。
程序的输出结果为:
AfterSorting:
HappyWelcome,请将程序补充完整。
string>
classWord{
Word(strings):
str(s){}
stringgetstr(){returnstr;
______const{return(str<
w.str);
friendostream&
operator<
(ostream&
output,constWord&
w)
{output<
w.str;
returnoutput;
stringstr;
Wordw1("
Happy"
),w2("
Welcome"
Aftersorting:
"
if(w1<
w2)cout<
w1<
w2;
elsecout<
w2<
w1;
本题主要考查了运算符重载。
C++把重载的运算符视为特殊的函数,称为运算符函数,函数名就是在运算符前加上保留字operator,因此运算符<
的函数名为operator<
由函数体语句return(str<
可知:
①运算符函数的返回值类型为bool,②str为成员函数所属对象的数据成员,对象w为运算符函数的参数,故运算符<
被重载为成员函数。
运算符重载为成员函数时,因为此成员函数所属的对象可成为运算符的一个运算分量,所以形参个数一般为运算符的元数减1,故横线处应填booloperator<
(Wordw)。
图形"
类Shape中定义了纯虚函数CalArea(),"
三角形"
类Triangle继承了类Shape,请将Triangle类中的CalArea函数补充完整。
classShape{
virtualintCalArea()=0;
classTriangle:
publicShape{
Triangle(ints,inth):
side(s),height(h){}
______{returnside*height/2;
intside;
intheight;
本题主要考查了纯虚函数。
纯虚函数是一个在基类中声明的虚函数,它在该基类中没有定义具体的操作内容,要求各派生类根据实际需要定义自己的版本。
派生类的虚函数应与基类的虚函数有相同的名称、相同的参数个数及相同的对应参数类型,以及相同的返回值或满足类型兼容规则的指针、引用型的返回值。
因此横线处应填intCalArea()或virtualintCalArea()。
类Sample的构造函数将形参data赋值给数据成员data。
请将类定义补充完整。
classSample{
Sample(intdata=0);
intdata;
Sample:
Sample(intdata){
______
本题主要考查了变量的作用域和可见性。
类Sample的私有数据成员data具有类作用域,其构造函数形参data具有块作用域,该类作用域包含块作用域,因为在两个或多个具有包含关系的作用域中声明了同名标识符,则外层标识符在内层不可见,所以在构造函数中直接使用data引用的是形参变量data,而不是Sample类的数据成员data。
此时,有两个方法可以引用到Sample类的数据成员:
一是通过this指针,在类的成员函数中,this指针是成员函数所属对象的指针,它指向类对象的地址,故本题可以填this->
data=data;
二是通过作用域运算符"
明确指出访问的是Sample类的成员,故还可以填Sample:
利用表达式a[i]可以访问int型数组a中下标为i的元素。
在执行了语句int*p=a;
后,利用指针p也可访问该元素,相应的表达式是______。
本题主要考查了指针与数组。
在C++中,数组的名字就是指向该数组第一个元素(下标为0)的指针,即该数组第一个元素的地址,也即数组的首地址。
一般情况下,一个数组元素的下标访问a[i]等价于相应的指针访问*(a+i),所以利用指针p访问a[i]的表达式为p[i]或*(p+i)。
下面是一个递归函数,其功能是使数组中的元素反序排列。
请将函数补充完整。
voidreverse(int*a,intsize){
if(size<
2)return;
intk=a[0];
a[0]=a[size-1];
a[size-1]=k;
reverse(a+1,______);
本题主要考查了递归