计算机类二级C++

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

43 题含答案C++
共 43 题返回本类
1单选题1 / 43
在E—R图中,用来表示实体联系的图形是( )。
查看答案
C. 菱形
2单选题2 / 43
有如下程序:
#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;
}
执行这个程序的输出结果是( )。
查看答案
B. 213312
4单选题4 / 43
有如下类定义:
class Point{
private:
static int how_many;
};
___________how_many=0;
要初始化Point类的静态成员how_many,下画线处应填入的内容是( )。
查看答案
C. int Point::
5单选题5 / 43
有如下类定义:
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:
在标注号码的行中,能被正确编译的是(  )。
查看答案
D. ④
7单选题7 / 43
有如下类定义:
Class AA{ int a; publiC: AA(int n=0):a(n){}
};
Class BB:publiC AA{ publiC:
BB(int n)—— };
其中横线处缺失的部分是( )。
查看答案
B. :AA(n)|}
8单选题8 / 43
有如下类定义:
class MyClass{
int value;
public:
MyClass(int n):value(n){}
int getValue()const{retum value;}
};
则类MyClass的构造函数的个数是( )。
查看答案
B. 2个
9单选题9 / 43
下列关于派生类构造函数和析构函数的说法中,错误的是(  )。
查看答案
D. 在销毁派生类对象时,先调用基类的析构函数,再调用派生类的析构函数
10单选题10 / 43
下列叙述中正确的是( )。
查看答案
D. 以上三种说法都不对
11单选题11 / 43
关于关键字class和typename,下列表述中正确的是(  )。
查看答案
A. 程序中的typename都可以替换为class
12单选题12 / 43
数据库管理系统是(  )。
查看答案
B. 在操作系统支持下的系统软件
13单选题13 / 43
软件生命周期是指( )。
查看答案
A. 软件产品从提出、实现、使用维护到停止使用退役的过程
15单选题15 / 43
下面关于数组的初始化正确的是( )。
查看答案
A. char str[]={’a’,’b’,’C’}
16单选题16 / 43
下列叙述中正确的是(  )。
查看答案
A. 顺序存储结构的存储一定是连续的,链式存储结构的存储空间不一定是连续的
17单选题17 / 43
下列各组类型声明符中,含义相同的一组是( )。
查看答案
B. signed short int和short
18单选题18 / 43
下面程序的运行结果是( )。
#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<
查看答案
A. 0123
19单选题19 / 43
下列描述正确的是( )。
查看答案
D. 如果至少有一个操作数为true,则包含“If”运算符的表达式为true
20单选题20 / 43
下列运算符函数中肯定不属于类FunNumber的成员函数的是(  )。
查看答案
D. int operator一(FunNumber,FunNumber);
21单选题21 / 43
下列程序的运行结果是( )。
#include
class A
{
int a;
public:
A(){a=0;}
A(int aA.
{
a=aa;
cout<
}
};
void main()
{
A X,Y(2),z(3);
cout<
}
查看答案
B. 23
22单选题22 / 43
关于函数重载,下列叙述中错误的是( )。
查看答案
C. 重载函数的返回值类型必须相同
23单选题23 / 43
在c++语言中,数据封装要解决的问题是( )。
查看答案
D. 防止不同模块之间数据的非法访问
25单选题25 / 43
在公有派生情况下,有关派生类对象和基类对象的关系,下列叙述不正确的是( )。
查看答案
C. 派生类的对象可以直接访问基类中的成员
26单选题26 / 43
要建立文件流并打开当前目录下的文件6le.dat用于输入,下列语句中错误的是(  )。
查看答案
A. ifstream fin=ffstream.open(”file.dat”);
28单选题28 / 43
下面的语句中错误的是( )。
查看答案
A. int a=5;int x[a];
29单选题29 / 43
if语句的语法格式可描述为:
格式l:if(<条件>)<语句>
或
格式2:if(<条件>)<语句l>
else<语句2>
关于上面的语法格式,下列表述中错误的是( )。
查看答案
A. <条件>部分可以是一个if语句,例如if(if(a==0)…)…
31单选题31 / 43
下列有关继承和派生的叙述中,正确的是( )。
查看答案
C. 派生类应当向基类的构造函数传递参数
32单选题32 / 43
下列关于this指针的描述中,正确的是(  )。
查看答案
D. 类的非静态成员函数都有this指针
33单选题33 / 43
已知函数f的原型是void f(int*a,long&B.;,变量v1、v2的定义是:
int v1;long:v2;
下列调用语句中正确的是( )。
查看答案
D. f(&v1,v2);
34单选题34 / 43
设有表示学生选课的三张表,学生s(学号,姓名,性别,年龄,身份证号),课程c(课号,课名),选课Sc(学号,课号,成绩),则表Sc的关键字(键或码)为( )。
查看答案
C. 学号,课号
35单选题35 / 43
有如下程序:
#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;
}
执行这个程序的输出结果是( )。
查看答案
A. 121
36单选题36 / 43
数据流图中带有箭头的线段表示的是(  )。
查看答案
D. 数据流
37单选题37 / 43
下列程序的运行结果为( )。
#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; }
查看答案
B. 6 15
38单选题38 / 43
下列选项中不属于结构化程序设计原则的是( )。
查看答案
A. 可封装
39单选题39 / 43
有三个关系R,S和T如下:
  
其中关系T由关系R和s通过某种操作得到,该操作为( )。
查看答案
D. 并
40单选题40 / 43
下列控制格式输入/输出的操作符中,能够设置浮点数精度的是(  )。
查看答案
A. setpreCision
41主观题41 / 43
清使用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<
查看答案
(1)this一>typE=typE;
(2)DElEtE[]nAmE;
(3)strEpy(this->nAmE,s.nAmE);
42主观题42 / 43
请使用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;
查看答案
(1)Eonst Point&P
(2)pl(p1),p2(p2)
(3)Point pl,Point p2,Point p3
(4)(1EnGthl()+lEnGth2()+lEnGth3())/2
43主观题43 / 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:
查看答案
F0T(int i=0;i<lEn;++i)//遍历对象list中的数组和D数组,把对应的值相加后放到数组DD中。
DD[i]=D[i]+list.D[i];
← 上一卷下一卷 →