2014年全国计算机等级《二级C++》考前押密试卷(3)

时长:120分钟 总分:100分

65浏览 0人已完成答题

题型介绍
题型 单选题 简答题
数量 40 3
一、选择题(每小题1分,共40分)
1.
在E—R图中,用来表示实体联系的图形是( )。
问题详情




2.
有如下程序:
#jnClude
using namespaCe std; Class Part{
publiC:
Part(int x=0):val(X){Cout<<VAL;}&NBSP; ~Part(){Cout<<val;}
private:
int val; t };
Class Whole{ publiC:
Whole(int x,int Y,int z=0):p2(x),pl(y),val(z){Cout<<VAL;}&NBSP;&NBSP;&NBSP; ~Whole(){eout<<val;}
private:
Part pl,p2; int val;
};
int main() {
Whole obj(1,2,3); return 0;
}
执行这个程序的输出结果是( )。
问题详情




3.
没有定义int x;float Y;,则10+x+y值的数据类型是( )。
问题详情




4.
有如下类定义:
class Point{
private:
static int how_many;
};
___________how_many=0;
要初始化Point类的静态成员how_many,下画线处应填入的内容是( )。
问题详情




5.
有如下类定义:
class Test
{
public:
Test(){a=0;c=0;}//①
int f(im A.const{this->a=a;}//②
static int g(){return a;f//③
void h(int B.{Test:.b=b;};//④
private:
int a;
static int b;
const int C;
};
int Test::b=0:
在标注号码的行中,能被正确编译的是(  )。
问题详情




6.
某系统总体结构图如下图所示:
  
该系统总体结构图的深度是( )。
问题详情




7.
有如下类定义:
Class AA{ int a; publiC: AA(int n=0):a(n){}
};
Class BB:publiC AA{ publiC:
BB(int n)—— };
其中横线处缺失的部分是( )。
问题详情




8.
有如下类定义:
class MyClass{
int value;
public:
MyClass(int n):value(n){}
int getValue()const{retum value;}
};
则类MyClass的构造函数的个数是( )。
问题详情




9.
下列关于派生类构造函数和析构函数的说法中,错误的是(  )。
问题详情




10.
下列叙述中正确的是( )。
问题详情




11.
关于关键字class和typename,下列表述中正确的是(  )。
问题详情




12.
数据库管理系统是(  )。
问题详情




13.
软件生命周期是指( )。
问题详情




14.
下列符号中不属于C++关键字的是(  )。
问题详情




15.
下面关于数组的初始化正确的是( )。
问题详情




16.
下列叙述中正确的是(  )。
问题详情




17.
下列各组类型声明符中,含义相同的一组是( )。
问题详情




18.
下面程序的运行结果是( )。
#include class base{
protected: int a; public:
base(){cout<<”0”;}
}; class basel:virtual base{
public:
basel(){cout<<”1”;}
};
class base2:virtual base i public: base2(){cout<<”2”;}
};
class derived:public basel,public base2{ public:
derived(){cout<<”3”;}
};
void main()
derived obj;
cout<
问题详情




19.
下列描述正确的是( )。
问题详情




20.
下列运算符函数中肯定不属于类FunNumber的成员函数的是(  )。
问题详情




21.
下列程序的运行结果是( )。
#include
class A
{
int a;
public:
A(){a=0;}
A(int aA.
{
a=aa;
cout<
}
};
void main()
{
A X,Y(2),z(3);
cout<
}
问题详情




22.
关于函数重载,下列叙述中错误的是( )。
问题详情




23.
在c++语言中,数据封装要解决的问题是( )。
问题详情




24.
在C++中,Cin是一个(  )。
问题详情




25.
在公有派生情况下,有关派生类对象和基类对象的关系,下列叙述不正确的是( )。
问题详情




26.
要建立文件流并打开当前目录下的文件6le.dat用于输入,下列语句中错误的是(  )。
问题详情




27.
某二叉树有5个度为2的结点,则该二叉树中的叶子结点数是(  )。
问题详情




28.
下面的语句中错误的是( )。
问题详情




29.
if语句的语法格式可描述为:
格式l:if(<条件>)<语句>

格式2:if(<条件>)<语句l>
else<语句2>
关于上面的语法格式,下列表述中错误的是( )。
问题详情




30.
结构化程序设计的基本原则不包括( )。
问题详情




31.
下列有关继承和派生的叙述中,正确的是( )。
问题详情




32.
下列关于this指针的描述中,正确的是(  )。
问题详情




33.
已知函数f的原型是void f(int*a,long&B.;,变量v1、v2的定义是:
int v1;long:v2;
下列调用语句中正确的是( )。
问题详情




34.
设有表示学生选课的三张表,学生s(学号,姓名,性别,年龄,身份证号),课程c(课号,课名),选课Sc(学号,课号,成绩),则表Sc的关键字(键或码)为( )。
问题详情




35.
有如下程序:
#inClude using namespaCe耐: Class MyClass{
publiC:
MyClass(){++Count;}
~MyClass(){--Count;}
statiC int getCount(){retum Count;} private:
statiC int Count;
}; ‘ int MyClass::Count=0;
int main() {
MyClass obj;
Cout<
MyClass+ptr=new MyClass: Cout<<MYCLASS::9ETCOUNT();&NBSP;
Cout<<MYCLASS::9ETCOUNT();&NBSP;&NBSP;&NBSP;
}
执行这个程序的输出结果是( )。
问题详情




36.
数据流图中带有箭头的线段表示的是(  )。
问题详情




37.
下列程序的运行结果为( )。
#include template
class FF
{TT al,a2,a3; public:
FF(TT bl,TT b2,TT b3){al=bl;a2=b2;a3=b3;} TT Sum(){return al+a2+a3;};
}
void main()
{ FFx(int(1.1),2,3),Y(int(4.2),5,6); cout<<X.SUM()<<''<<Y.SUM()<<ENDL;&NBSP;&NBSP;&NBSP; }
问题详情




38.
下列选项中不属于结构化程序设计原则的是( )。
问题详情




39.
有三个关系R,S和T如下:
  
其中关系T由关系R和s通过某种操作得到,该操作为( )。
问题详情




40.
下列控制格式输入/输出的操作符中,能够设置浮点数精度的是(  )。
问题详情




二、基本操作题(18分)
41.
清使用VC6或使用【答题】菜单打开考生文件夹projl下的工程projl,此工程中包含了类Pets(“宠物”) 和主函数main的定义。程序中位于每个“//ERROR****found ****”之后的一行语句有错误,请加以改 正。改正后程序的输出结果应为:
Name:sonny Type:dog
Name:John Type:dog
Name:Danny Typc:cat
Name:John Type:dog
注意:只修改每个“//ERROR ****found ****”下的那一行,不要改动程序中的其他内容。
#include
using namespace sm; enum Pets_type{d09,cat,bird,fish};
class Pets{ private:
char *name; Pets_type type; public:
Pets(const char *name=”sonny”,Pets_type type=dog);
Pets&operator=(const Pets&s);
~Pets();
void show()eonst;};
Pets::Pets(eonst char$naIne,Pets_type type)
//构造函数 {
This ->name=new char[strlen(name)+1];
strcpy(this一>name,name);
//ERROR *********found********* type=type;
}{ Pets::~Pets()//析构函数,释放name所指向的字符串
{ //ERROR *********found********* name=’/0‘;
}
Pets&Pets::0perator=(const Pets&s){
if(&s==this)//确保不要向自身赋值 return *this;
delete[]name;
name=new char[strlen(S.name)+1];//ERROR *********found*********
strcpy(this一>nmne,name); type=S.type:
return *this;}
void Pets::show()const
cout<<“Name:”<<NAME<
问题详情
三、简单应用题(24分)
42.
请使用VC6或使用【答题】菜单打开考生文件夹proj2下的工程proj2,该工程中包含一个程序文件main.Cpp,其中有坐标点类point、线段类Line和三角形类Triangle的定义.还有main函数的定义。程序中两  
Side l:9.43398 Side 2:5
Side 3:8 area:20 注意:只在横线处填写适当的代码,不要改动程序中的其他内容,也不要删除或移动“//****found****”。
#inClude #nClude using namespaCe std;
Class Point{//坐标点类 publiC:
Const double x,y;
Point(double x=0.0,double Y=0.0):x(x),Y(Y){} //**********found**********
double distanCeTo(_____) Const{
//到指定点的距离
return sqrt((x-P.X)*(x-P.x)+(Y-P.Y)*(Y-P.Y)); }
};
Class Line{//线段类 publiC:
eonst Point pl,p2;//线段的两个端点
//**********found**********
Line(Point pl,Point p2):——{}
double length()eonst/retum pl.distanCeTo(p2);}//线段的长度 };
Ct彝SS Triangle{//三角形类 publiC:
Const Point pl,p2,p3;//三角形的三个顶点 //**********found**********
Triangle(_____):pl(p1),p2(p2),p3(p3){} double lengthl()Const{//边pl,p2的长度
retum Line(pl,p2).1ength(); }
double length2()Const{//边p2,p3的长度 return Line(p2,p3).1ength();
}
double length3()Const{//边p3,pl的长度 returnLine(p3,pl).1ength();
}
double area()Const{//三角形面积
//**********found********** double s=_____;
return sqrt(s{(S-lengthl())*(s-length2())*(s—length3())); }
};
int main(){
Triangle r(Point(0.0,8.0),Point(5.0,0.0),Point(0.0,0.0)); Cout<<”Side l:”<<R.1ENGTHL()<
Cout<<”Side 2:”<<R.1ENGTH2()<<ENDL;&NBSP;&NBSP;&NBSP;
retum 0;
问题详情
四、综合应用题(18分)
43.
请使用VC6或使用【答题】菜单打开考生文件夹proj3下的工程proj3,其中声明的DataList类,是一个用于表示数据表的类。DataList的重载运算符函数0perator+,其功能是求当前数据表与另一个相同长度的数据表之和;即它返回一个数据表,其每个元素等于相应两个数据表对应元素之和。请编写这个operator+函数。程序的正确输出应该是:
两个数据表: 1,2,3,4,5,6 3,4,5,6,7,8 两个数据表之和:
4,6,8,10,12,14 要求:
补充编制的内容写在“//********333********”与“//********666********”之间,不得修改程序
的其他部分。
注意:程序最后将结果输出到文件。ut.dat中。输出函数writeToFile已经编译为。bj文件,并且在本程序中调用。
//DataList.h
#inClude using namespaCe std;
ClaSS DataList{//数据表类 intfen;
double*d; publiC:
DataList(int len,double data[]=NULL); DataList(DataList&data);
int length()Const{retum len;}
double getElement(int i)Constt return d[i];}
DataList operator+(Const DataList&list)Const;//两个数据表求和 void show()Const;//显示数据表
};
void writeToFile(Char$,Const DataList&); //main.Cpp
#inClude”DataList.h”
DataList::DataList(int len,double data[]):len(ien){ d=new double[1en];
for(int i=0;i<LEN;I++)
d㈨i=(data==NULL?0.0:data[i]);
}
DataList::DataList(DataList&data):len(data.1en){ d=new double[1en];
for(int i=0;i<LEN;I++)&NBSP;&NBSP;&NBSP;
DataList DataList::0perator+(Con8t DataList&list,)Const{//两个数据表求和 double*dd=new double[1ist.1ensth()];
//********333********
//********666********
return DataList(1ist.1ength(),dd); }
void DataList::show()Const{//显示数据表 f()r(int。i=0;i<LEN-1;I++)
eout<<D[I]<
Cout<<D[1EN-1]<
int main(){
double sl[]={1,2,3,4,5,6};
double s2[]={3,4,5,6,7,8};
DataList list1(6,sl),list2(6,s2);//定义两个数据表对象 eout<<”两个数据表:”<
listl.show(): list2.show(); eout<<ENDL<<”两个数据表之和:”<
(1istl+list2).show();
writeToFile(””,listl+list2); return 0:
问题详情