资源描述
年9月打算机等考二级C++口试试题
一、选择题〔〔1〕-〔10〕、〔21〕-〔40〕每题2分,〔11〕-〔20〕每题1分,共70分〕
〔1〕以下数据构造中,属于非线性构造的是
A〕循环行列
B〕带链行列
C〕二叉树
D〕带链栈
〔2〕以下数据结果中,可以按照“提高后出〞原那么存取数据的是
A〕循环行列
B〕栈
C〕行列
D〕二叉树
〔3〕关于循环行列,以下表达中精确的选项是
A〕队头指针是结实波动的
B〕队头指针肯定大年夜于队尾指针
C〕队头指针肯定小于队尾指针
D〕队头指针可以大年夜于队尾指针,也可以小于队尾指针
〔4〕算法的空间复杂度是指
A〕算法在实行过程中所需求的打算机存储空间
B〕算法所处理的数据量
C〕算法次序中的语句或指令条数
D〕算法在实行过程中所需求的临时义务单元数
〔5〕软件方案平分不模块的一个准那么是
A〕低内聚低耦合
B〕高内聚低耦合
C〕低内聚高耦合
D〕高内聚高耦合
〔6〕以下选项中不属于构造化次序方案原那么的是
A〕可封装
D〕自顶向下
C〕模块化
D〕逐步求精
〔11〕已经清楚函数FA调用FB,假设要把这两个函数定义在一致个文件中,那么
A〕FA必须定义在FB之前
B〕FB必须定义在FA之前
C〕假设FA定义在FB之后,那么FA的原型必须出现在FB的定义之前
D〕假设FB定义在FA之后,那么FB的原型必须出现在FA的定义之前
〔12〕有如下两个类定义
classAA{};
classBB{
AAv1,*v2;
BBv3;
int*v4;
};
其中有一个成员变量的定义是差错的,谁人变量是
A〕v1
B〕v2
C〕v3
D〕v4
〔13〕有如下类定义:
classXX{
intxdata;
public:
XX(intn=0): xdata(n){}
};
classYY:publicXX{
intydata;
public:
YY(intm=0,intn=0):XX(m),ydata(n){}
};
YY类的东西包括的数据成员的个数是
A〕1
B〕2
C〕3
D〕4
〔14〕以下有关运算符函数的描画中,差错的选项是
A〕运算符函数的名称总是以operator为前缀
B〕运算符函数的参数可以是东西
C〕运算符函数只能定义为类的成员函数
D〕在表达式中应用重载的运算符相当于调用运算符重载函数
〔15〕以下关于模板形参的描画中,差错的选项是
A〕模板形参表必须在关键字template之后
B〕模板形参表必须用括弧()括起来
C〕可以用class修饰模板形参
D〕可以用typename修饰模板形参
〔16〕在以下列举标志中,用来表示“相关于当前位置〞文件定位办法的是
A〕ios_base::cur
B〕ios_base::beg
C〕ios_base::out
D〕ios_base::end
〔17〕以下字符串可以用作C++标识符的是
A〕var
B〕goto
C〕test-
D〕_123
〔18〕以下列举典范的定义中,包括列举值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};
〔19〕有如下次序段:
inti=1;
while(1){
i++;
if(i==10) break;
if(i%2==0) cout<<‘*’;
}
实行谁人次序段输出字符*的个数是
A〕10
B〕3
C〕4
D〕5
〔20〕已经清楚数组arr的定义如下:
intarr[5]={1,2,3,4,5};
以下语句中输出结果不是2的是
A〕cout<<*arr+1<<endl;
B〕cout<<*(arr+1)<<endl;
C〕cout<<arr[1]<<endl;
D〕cout<<*arr<<endl;
〔21〕打算斐波那契数列第n项的函数定义如下:
intfib(intn){
if(n==0) return1;
elseif(n==1) return2;
else returnfib(n-1)+fib(n-2);
}
假设实行函数调用表达式fib(2),函数fib被调用的次数是
A〕1
B〕2
C〕3
D〕4
〔22〕Sample是一个类,实行下面语句后,调用Sample类的构造函数的次数是
Samplea[2],*p=newSample;
A〕0
B〕1
C〕2
D〕3
〔23〕以下关于虚基类的描画中,差错的选项是
A〕应用虚基类可以消除由多承袭发作的二义性
B〕构造派生类东西时,虚基类的构造函数只被调用一次
C〕声明“classB:virtualpublicA〞说明类B为虚基类
D〕树破派生类东西时,起首调用虚基类的构造函数
〔24〕将运算符重载为类成员函数时,其参数表中不参数,说明该运确实是
A〕不合法的运算符
B〕一元运算符
C〕无把持数的运算符
D〕二元运算符
〔25〕有如下模板声明:
template<typenameT1,typenameT2>classA;
以下声明中,与上述声明不等价的是
A〕template<classT1,classT2>classA;
B〕template<classT1,typenameT2>classA;
C〕template<typenameT1,classT2>classA;
D〕template<typenameT1,T2>classA;
〔26〕以下关于C++流的描画中,差错的选项是
A〕cout>>’A’表达式可输出字符A
B〕eof()函数可以检测是否到达文件尾
C〕对磁盘文件停顿流把持时,必须包括头文件fstream
D〕以ios_base::out方式打开的文件不存在时,将自动树破一个新文件
〔27〕有如下次序:
#include<iostream>
usingnamespacestd;
classToy{
public:
Toy(char*_n){strcpy(name,_n);count++;}
~Toy(){count--;}
char*GetName(){returnname;}
staticintgetCount(){returncount;}
private:
charname[10];
staticintcount;
};
intToy::count=0;
intmail(){
Toyt1(“Snoopy〞),t2(“Mickey〞),t3(“Barbie〞);
cout<<t1.getCount()<<endl;
return0;
}
运行时的输出结果是
A〕1
B〕2
C〕3
D〕运行时出错
〔28〕有如下次序
#include<iostream>
usingnamespacestd;
classA{
public:
A(inti):rl(i){}
voidprint(){cout<<’e’<<r1<<’-‘;}
voidprint()const{cout<<’C’<<rl*rl<<’-‘;}
private:
intrl;
};
intmain(){
Aal(2); constAa2(4);
Al.print();a2.print();
Return0;
}
运行时的输出结果是
A〕运行时出错
B〕E2-C16-
C〕C4-C16-
D〕E2-E4-
〔29〕有如下次序:
#include<iostream>
usingnamespacestd;
className{
charname[20];
public:
Name(){
strcpy(name,〞〞); cout<<’?’;
}
Name(char*fname){
strcpy(name,fname); cout<’?’;
}
};
intmain(){
Namenames[3]={Name(“张三〞),Name(“李四〞)};
Return0;
}
运行此次序输出标志?的个数是
A〕0
B〕1
C〕2
D〕3
〔30〕有如下次序:
#include<iostream>
usingnamespacestd;
public:
AA(){cout<<’1’;}
};
classBB:publicAA{
intk;
public:
BB():k(0){cout<<’2’;}
BB(intn):k(n){cout<<’3’;}
}
intmain(){
BBb(4),c;
return0;
}
运行时的输出结果是
A〕1312
D〕132
C〕32
D〕1412
〔31〕有如下次序:
#include<iostream>
usingnamespacestd;
classC1{
public:
~C1(){cout<<1;}
};
ClassC2:publicc1{
public:
~c2(){cout<<2;}
};
intmain(){
C2cb2;
C1*cb1;
return0;
}
运行时的输出结果是
A〕121
B〕21
C〕211
D〕12
〔32〕有如下次序
#include<iostream>
usingnamespacestd;
classPublication{//出版物类
charname[30];
public:
Publication(char*name=〞未知名称〞){
strcpy(this->name,name);
}
constchar*getName()const{returnname;}
virtualconstchar*getType()const{return“未知典范〞;}
};
classBook:publicPublication{//书类
public:
Book(char*name):Publication(name){}
virtualconstchar*getType()const{return“书“;}
};
voidshowPublication(Publication&p){
cout<<p.getType()<<〞:〞<<p.getName()<<endl;
}
intmain(){
Bookbook(“杰出人生〞);
showPublication(book);
return0;
}
运行时的输出结果是
A〕未知典范:未知名称
B〕未知典范:杰出人生
C〕书:未知名称
D〕书:杰出人生
〔33〕以下关于运算符重载的描画中,差错的选项是
A〕::运算符不克不迭重载
B〕典范转换运算符只能作为成员函数重载
C〕将运算符作为非成员函数重载时必须定义为友元
D〕重载[]运算符应完成“下标访征询〞把持
〔34〕有如下次序:
#include<iostream>
#include<iomanip>
Usingnamespacestd;
intmain(){
ints[]={123,234};
cout<<right<<setfill(‘*’)<<setw(6);
for(inti=0;i<2;i++){cout<<s[i]<<endl;}
return0;
}
运行时的输出结果是
A〕123
234
B〕***123
234
C〕***123
***234
D〕***123
234***
〔35〕有如下类定义
classA{
char*a;
public:
A():a(0){}
A(char*aa){ //把aa所指字符串拷贝到a所指向的存储空间
a= ;
strcpy(a,aa);
strcpy(a,aa);
}
~A(){delete[]a;}
};
横线处应填写的表达式是
A〕neschar[strlen(aa)+1]
B〕char[strlen(aa)+1]
C〕char[strlen(aa)]
D〕newchar[sizeof(aa)-1]
二、填空题(每题2分,共30分〕
〔1〕某二叉树有5个度为2的结点以及3个度为1的结点,那么该二叉树中共有 【1】个结点。
〔2〕次序流程图中的菱形框表示的是【2】。
〔3〕软件开拓过程要紧分为需求分析、方案、编码与测试四个阶段,其中【3】发作“软件需求规格说明书〞。
〔4〕在数据库技能中,实体集之间的联系可以是一对一或一对多或多对多的,那么“老师〞跟“可选课程〞的联系为【4】。
〔5〕人员全然信息一般包括:身份证号,姓名,性不,年岁等。其中可以作为要紧害字的是【5】。
〔6〕假设表达式(x+(y-z)*(m/n))+3中的变量均为double型,那么表达式值的典范为【6】。
〔7〕有如下循环语句:
For(inti=50;i>20;i-=2) cout<<i<<’,’;
运行时循环体的实行次数是【7】。
〔8〕使用表达式a[i]可以访征询int型数组a中下标为i的元素。在实行了语句int*p=a;后,使用指针p也可访征询该元素,呼应的表达式是【8】。
〔9〕下面是一个递归函数,其功能是使数组中的元素反序摆设。请将函数补偿残缺。
voidreverse(int*a,intsize){
if(size<2)return;
intk=a[0];
a[0]=a[size-1];
a[size-1]=k;
reverse(a+1, 【9】);
}
〔10〕类Sample的构造函数将形参data赋值给数据成员data。请将类定义补偿残缺。
classSample{
public:
Sample(intdata=0);
Private:
intdata;
};
Sample::Sample(intdata){
【10】
}
〔11〕有如下类定义:
classSample{
public:
Sample();
~Sample();
Private:
staticintdate;
};
将静态数据成员data初始化为0的语句是【11】。
〔12〕“图形〞类Shape中定义了纯虚函数CalArea(),“三角形〞类Triangle承袭了类Shape,请将Triangle类中的CalArea函数补偿残缺。
classShape{
public:
virtualintCalArea()=0;
}
classTriangle:publicShape{
public:
Triangle{ints,inth}:side(s),height(h){}
【12】{returnside*height/2;}
private:
intside;
intheight;
};
〔13〕有如下次序:
#include<iostream>
usingnamespacestd;
classGrandChild{
public:
GrandChild(){strcpy(name,〞Unknown〞);}
constchar*getName()const{returnname;}
virtualchar*getAddress()const=0;
private:
charname[20];
};
classGrandSon:publicGrandChild{
public:
GrandSon{char*name}{}
Char*getAddress()const{return“Shanghai〞;}
};
intmain(){
GrandChild*gs=newGrandSon(“Feifei〞);
cout<<gs->getName()<<〞住在〞<<gs->getAddress()<<endl;
deletegs;
return0;
}
运行时的输出结果是【13】。
〔14〕如下次序定义了“单词〞类word,类中重载了<运算符,用于比较“单词〞的大小,前去呼应的逻辑值。次序的输出结果为:AfterSorting:HappyWelcome,请将次序补偿残缺。
#include<iostream>
#include<string>
usingnamespacestd;
classWord{
public:
Word(strings):str(s){}
stringgetStr(){returnstr;}
【14】const{return(str<w.str);}
friendostream&operator<<(ostream&output,constWord&w)
{output<<w.str;returnoutput;}
private:
stringstr;
};
intmain(){
Wordw1(“Happy〞),w2(“Welcome〞);
Cout<<〞Aftersorting:“;
if(w1<w2)cout<<w1<<’’<<w2;
elsecout<<w2<<’‘<<w1;
return0;
}
〔15〕请将以下模板类Data补偿残缺。
template<typenameT>
classData{
public:
voidput(Tv){val=v;}
【15】get() //前去数据成员val的值,前去典范不加转换
{returnval;}
private:
Tval;
};
展开阅读全文