计算机类二级C++

2014年全国计算机等级《二级C++》上机考试冲刺试题(3)

43 题含答案C++
共 43 题返回本类
1单选题1 / 43
下列排序方法中,最坏情况下比较次数最少的是(  )。
查看答案
D. 堆排序
2单选题2 / 43
下面程序的运行结果为( )。
#include
class A
{
public:
A(){tout<<”1”;}
~A(){tout<<”2”;}
};
class B:public A
{
public:
B(){cout<<”3”;}
~B(){cout<<”4”;}
};
void main()
{
B b;
}
查看答案
C. 1342
3单选题3 / 43
以下程序中调用cin函数给变量a输入数值的方法是错误的,其错误原因是( )。
#include
void main()
{int * P,* q,a,b;
P=&a:
eout<<”input a:”;
cin>>P:
查看答案
B. P表示的是变量a的地址,而不是变量a的值
4单选题4 / 43
与语句cout<<ENDL;不等价的是(&NBSP;&NBSP;&NBSP; )。
查看答案
D. cout<<‘\0’:
5单选题5 / 43
如果表达式x * y+z中,“*”是作为友元函数重载的,“+”是作为成员函数重载的,则该表达式还可为 ( )。
查看答案
A. operator+(operator$(X,Y),z)
8单选题8 / 43
有如下函数定义:
void funC(int a,int&B.{a++;b++;} 若执行代码段:
int x=0,Y=1: funC(X,y);
则变量X和y的值分别是( )。
查看答案
C. 0和2
9单选题9 / 43
定义无符号整数类为UInt,下面可以作.为类UInt实例化值的是( )。
查看答案
B. 369
10单选题10 / 43
下列关于类定义的说法中,正确的是(  )。
查看答案
A. 类定义中包括数据成员和函数成员的声明
11单选题11 / 43
有如下程序:
#nclude
using namespace std;
int main()
{
void function(double val);
double val;
function(val);
cout<
return 0;
}
void function(double val)
} val=3;}
编译运行这个程序将出现的情况是(  )。
查看答案
D. 输出一个不确定的数
13单选题13 / 43
下面关于虚函数的描述,错误的是( )。
查看答案
B. 基类中说明了虚函数后,派生类中对应的函数也必须说明为虚数
14单选题14 / 43
有如下程序:
#include
using namespaee std;
int main()
{
void function(double val);
double val:
function(val);
eout<
return 0;
}
void function(double val)
{
val=3;
}
编译运行这个程序将出现的情况是( )。
查看答案
D. 输出一个不确定的数
15单选题15 / 43
面向对象方法中,继承是指( )。
查看答案
D. 类之间共享属性和操作的机制
16单选题16 / 43
下列程序的运行结果为( )。 #include
void main() {
int a=2:
int b=a+1: cout<
查看答案
B. 0
17单选题17 / 43
有如下定义:
int a[5]={1,3,5,7,9},* P=a;
下列表达式中不能得到数值5的是( )。
查看答案
B. a[3]
18单选题18 / 43
C++系统预定义了4个用于标准数据流的对象,下列选项中不属于此类对象的是( )。
查看答案
D. cset
19单选题19 / 43
有如下程序:
#include
using namespace std;
class GA{
public:
virtual int f()t retum l;}
};
class GB:public GA{
public:
virtual int f(){retum 2;}
};
void show(GA g){eout<<9.f();}
void display(GA&g){cout<<9.f();}
int main()
{
GA a;show(A.;display(A.;
GB b;show(B.;display(B.;
return 0;
}
执行这个程序的输出结果是( )。
查看答案
C. 1112
20单选题20 / 43
下列叙述中正确的是( )。
查看答案
B. 只有一个根结点的数据结构不一定是线性结构
21单选题21 / 43
下列关于虚函数的说明中,正确的是(  )。
查看答案
B. 虚函数不得是静态成员函数
22单选题22 / 43
某二叉树共有7个结点,其中叶子结点只有l个,则该二叉树的深度为(假设根结点在第1层)( )。
查看答案
D. 7
23单选题23 / 43
在数据库设计中,将E~R图转换成关系数据模型的过程属于( )。
查看答案
C. 逻辑设计阶段
24单选题24 / 43
下列关于类模板的模板参数的叙述中,错误的是( )。
查看答案
D. 模板参数不能作为成员函数的局部变量的类型
25单选题25 / 43
在软件开发中,需求分析阶段产生的主要文档是( )。
查看答案
B. 软件需求规格说明书
26单选题26 / 43
下面关于模板的描述,错误的是( )。
查看答案
A. 函数模板和类模板的参数可以是任意的数据类型
28单选题28 / 43
下列语句中不是死循环的是( )。
查看答案
A. int i=10;
29单选题29 / 43
为了取代c中带参数的宏,在c++中使用(  )。
查看答案
B. 内联函数
30单选题30 / 43
C++语言对C语言做了很多改进,C++语言相对于C语言的最根本的变化是( )。
查看答案
D. 引进了类和对象的概念
31单选题31 / 43
派生类的成员函数不能访问基类的(  )。
查看答案
C. 私有成员
32单选题32 / 43
下列代码段中声明了3个类:
Class Person{};
Class Student:publiC Person{};
Class Undergraduate:Student{};
下列关于这些类之间关系的描述中,错误的是( )。
查看答案
B. 类Undergraduate从类Student公有继承
33单选题33 / 43
若有下面的函数调用:
fun(fl+b,3,max(n一1,B.)
则fun的实参个数是(  )。
查看答案
A. 3
34单选题34 / 43
有如下两个类定义:
class XX{
private:
double xl;
protected:
double x2;
public:
double x3;
};
class YY:protected XX{
private:
double yl;
protected:
double y2;
public:
double y3;
在类YY中保护成员变量的个数是( )。
查看答案
C. 3
35单选题35 / 43
下列关于运算符重载的描述中,正确的是( )。
查看答案
A. 运算符重载为成员函数时,若参数表中无参数,重载的是一元运算符
36单选题36 / 43
建立派生类对象时,3种构造函数分别是a(基类的构造函数)、b(成员对象的构造函数)、C(派生类)构造函数),这3种构造函数的调用顺序为( )。
查看答案
A. abC
37单选题37 / 43
在下列枚举符号中,用来表示“相对于当前位置”文件定位方式的是(  )。
查看答案
A. ios_base::cur
38单选题38 / 43
当使用ifstream流类定义一个流对象并打开一个磁盘文件时,文件的默认打开方式为(  )。
查看答案
A. ios—base::in
39单选题39 / 43
下列有关运算符重载的叙述中,正确的是(  )。
查看答案
A. 运算符重载是多态性的一种表现
40单选题40 / 43
必须用一对大括号括起来的程序段是(  )。
查看答案
D. 函数的函数体
41主观题41 / 43
请使用VC6或使用【答题】菜单打开考生文件夹projl下的工程projl,该工程含有一个源程序文件pn,jl.cpp。其中位于每个注释“//ERROR 木}}水found}}水木”之后的一行语句存在错误。请改正这些错误,使程序的输出结果为:
The value is 10
注意:只修改注释“//ERROR **** found****”的下一行语句,不要改动程序中的其他内容。
//pmjl.cpp
#include
using namespace std;
class MyClass{
int value;
public:
//ERROR********found*********
void MyClass(int val):value(val){}
int GetValue()const{return value;}
void SetValue(int val);
};
//ERROR********found********
inline void SetValue(int val){value=val;}
int main()
MyClass obj(O);
obj.SetValue(10);
//ERROR********found********下列语句功能是输出obj的成员value的值
tout<<”The value is”<<OBJ.VALUE<
return 0;
}
查看答案
(1)MyClAss(int vAl):vAluE(vAl){}
(2)voiD MyClAss::SEtVAluE(int vAl){vAluE=vAl;}
(3)Cout“”ThE vAluE is”“oBj.GEtVAluE()“EnD1;
42主观题42 / 43
请使用VC6或使用【答题】菜单打开考生文件夹proj2下的工程proj2,其中有矩阵基类MatrixBase、矩阵类Matrix和单位阵UnitMatrix的定义,还有main函数的定义。请在横线处填写适当的代码并删除横线,以实现上述类定义。此程序的正确输出结果应为:
1 2 3 4 5 2 3 4 5 6 3 4 5 6 7 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 注意:只能在横线处填写适当的代码,不要改动程序中的其他内容,也不要删除或移动“//t+++found母
***”。
#nClude using namespaCe std; //矩阵基础类,一个抽象类
Class MatrixBase{ int rows,Cols; publiC:
MatrixBase(int rows,int Cols):roWS(rows),Cow(Cols){} int getRows()Const{retum rows;}//矩阵行数
int getCols()Const{return Cols;}//矩阵列数
virtual double getElement(int r,int C)Const=0;//取第i个元素的值 void show()Const{//分行显示矩阵中所有元素
for(int i=0;i<ROWS;I++){&NBSP;&NBSP;&NBSP;
for(int j=0;j<COLS;J++)&NBSP;&NBSP;&NBSP; }
<<””;    Cout<< **********found**********    /> } }; //矩阵类
Class Matrix:publiC MatfixBase{ double*val;
publiC: //**********found**********
Matrix(int rows,int Cols,double in[]=NULL):——{ //**********found**********
val=;
for(int i=0:i<ROWS*COLS;I++)
val[i]=(m==NULL?0.0:Ill[i]);
}
一Matrix(){delete[]val;} double getElement(int r,int C)Const{retum val[r*getCols()+C];}
};
//单位阵(主对角线元素都是l,其余元素都是0的方阵)类 Class UnitMatrix:publiC MatrixBase{
publiC:
UnitMatrix(int rOWS):MatrixBase(rows,rows){} //单位阵行数列数相同
double getElement(int r,int C)Const{ //**********found**********
if(_____)retum l.0; retum 0.0;
} }; int main(){
MatrixBase*m;
double d[][5]={{1,2,3,4,5},{2,3,4,5,6},{3,4,5,6,7}}; ITI=new Matrix(3,5,(double*)d);
m→show(); delete m;
Cout<
m=new UnitMatrix(6); Ill→show();
delete m; retum0; }
查看答案
(1)GEtElEmEnl(1,i)
(2)MAtrixBAsE(rows,Cols)
(3)FlEw DouBlE[rows*Cols]
(4)r==C
43主观题43 / 43
请使用VC6或使用【答题】菜单打开考生文件夹proj3下的工程proj3,其中声明的CDeepCopy是一个用于表示矩阵的类。请编写这个类的赋值运算符成员函数0perator=,以实现深层复制。
要求:
补充编制的内容写在“//************333************”与“//****************666*************”之间。不得修改程序的其他部分。
注意:程序最后将结果输出到文件out.dat中。输出函数writeToFile已经编译为obj文件,并且在本程序中调用。
//CDeepCopy.h
#include
#include
using namespace std;
class CDeepCopy
{
public:
int n;//动态数组的元素个数
int *p;//动态数组首地址
CDeepCopy(int);
~CDeepCopy();
CDeepCopy&operator=(const CDeepCopy&r);//赋值运算符函数
};
void writeToFile(char});
//main.cpp
#include”CDeepCopy.h”
CDeepCopy::一CDeepCopy(){delete[]P;}
CDeepCopy::CDeepCopy(int k){n=k;p=new int[n];}//构造函数实现
CDeepCopy&CDeepCopy::0perator=(const CDeepCopy&r)//赋值运算符函数实现
{
//***********333*********
//***********666***********
}
int main()
{
CDeepCopy a(2),d(3);
a.p[O]=1;d.p[O]=666;//对象a,d数组元素的赋值
{
CDeepCopy b(3);//调用赋值运算符函数
a.p[O]=88;b=a;
cout<
}
cout<
cout<<”d fade away;\n”;
cout<
writeToFile(””);
return 0;
}
查看答案
lq=r.n;//把对象r字符长度赋值给n
delete[]P;//删除动态数组P
P=new int[n];//给动态数组P分配空间为n
for(int i=0;i<n;i++)
//遍历对象r中的数组PP[i]=r.P[i];//把r.
P[i]赋值给P[i]
retum*this://返回被赋值的对象
← 上一卷下一卷 →