计算机类 二级 C++
2014年全国计算机等级《二级C++》考前押密试卷(3) 43 题 含答案 C++
1 单选题 1 / 43
在E—R图中,用来表示实体联系的图形是( )。
A 椭圆形 B 矩形 C 菱形 D 三角形
查看答案 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; } 执行这个程序的输出结果是( )。
A 123321 B 213312 C 213 D 123123
查看答案 B. 213312
3 单选题 3 / 43
没有定义int x;float Y;,则10+x+y值的数据类型是( )。
A int B double C float D 不确定
查看答案 C. float
4 单选题 4 / 43
有如下类定义: class Point{ private: static int how_many; }; ___________how_many=0; 要初始化Point类的静态成员how_many,下画线处应填入的内容是( )。
A int B static int C int Point:: D static int Point::
查看答案 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: 在标注号码的行中,能被正确编译的是( )。
A ① B ② C ③ D ④
查看答案 D. ④
6 单选题 6 / 43
某系统总体结构图如下图所示:
该系统总体结构图的深度是( )。
A 7 B 6 C 3 D 2
查看答案 C. 3
7 单选题 7 / 43
有如下类定义: Class AA{ int a; publiC: AA(int n=0):a(n){} }; Class BB:publiC AA{ publiC: BB(int n)—— }; 其中横线处缺失的部分是( )。
A :a(n){} B :AA(n)|} C {a(n);} D {a=n;}
查看答案 B. :AA(n)|}
8 单选题 8 / 43
有如下类定义: class MyClass{ int value; public: MyClass(int n):value(n){} int getValue()const{retum value;} }; 则类MyClass的构造函数的个数是( )。
A 1个 B 2个 C 3个 D 4个
查看答案 B. 2个
9 单选题 9 / 43
下列关于派生类构造函数和析构函数的说法中,错误的是( )。
A 派生类的构造函数会隐含调用基类的构造函数 B 如果基类中没有缺省构造函数,那么派生类必须定义构造函数 C 在建立派生类对象时,先调用基类的构造函数,再调用派生类的构造函数 D 在销毁派生类对象时,先调用基类的析构函数,再调用派生类的析构函数
查看答案 D. 在销毁派生类对象时,先调用基类的析构函数,再调用派生类的析构函数
10 单选题 10 / 43
下列叙述中正确的是( )。
A 栈是一种先进先出的线性表 B 队列是一种后进先出的线性表 C 栈与队列都是非线性结构 D 以上三种说法都不对
查看答案 D. 以上三种说法都不对
11 单选题 11 / 43
关于关键字class和typename,下列表述中正确的是( )。
A 程序中的typename都可以替换为class B 程序中的class都可以替换为typename C 在模板形参表中只能用{ypename来声明参数的类型 D 在模板形参表中只能用class或typenanle来声明参数的类型
查看答案 A. 程序中的typename都可以替换为class
12 单选题 12 / 43
数据库管理系统是( )。
A 操作系统的一部分 B 在操作系统支持下的系统软件 C 一种编译系统 D 一种操作系统
查看答案 B. 在操作系统支持下的系统软件
13 单选题 13 / 43
软件生命周期是指( )。
A 软件产品从提出、实现、使用维护到停止使用退役的过程 B 软件从需求分析、设计、实现到测试完成的过程 C 软件的开发过程 D 软件的运行维护过程
查看答案 A. 软件产品从提出、实现、使用维护到停止使用退役的过程
14 单选题 14 / 43
下列符号中不属于C++关键字的是( )。
A friend B namespaee C Continue D byte
查看答案 D. byte
15 单选题 15 / 43
下面关于数组的初始化正确的是( )。
A char str[]={’a’,’b’,’C’} B char str[2]={’a’,’b’,’c’} C char str[2][3]={{’a’,’b’},{’C’,’d’},{’e’,’f’}} D char str()={~a,~b,~C}
查看答案 A. char str[]={’a’,’b’,’C’}
16 单选题 16 / 43
下列叙述中正确的是( )。
A 顺序存储结构的存储一定是连续的,链式存储结构的存储空间不一定是连续的 B 顺序存储结构只针对线性结构,链式存储结构只针对非线性结构 C 顺序存储结构能存储有序表,链式存储结构不能存储有序表 D 链式存储结构比顺序存储结构节省存储空间
查看答案 A. 顺序存储结构的存储一定是连续的,链式存储结构的存储空间不一定是连续的
17 单选题 17 / 43
下列各组类型声明符中,含义相同的一组是( )。
A unsigned long int和long B signed short int和short C unsigned short和short D short int和int
查看答案 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 B 3120 C 0312 D 3012
查看答案 A. 0123
19 单选题 19 / 43
下列描述正确的是( )。
A 表示m>n为true或mn&&m<N&NBSP;&NBSP;&NBSP; B switCh语句结构中必须有default语句 C if语句结构中必须有else语句 D 如果至少有一个操作数为true,则包含“If”运算符的表达式为true
查看答案 D. 如果至少有一个操作数为true,则包含“If”运算符的表达式为true
20 单选题 20 / 43
下列运算符函数中肯定不属于类FunNumber的成员函数的是( )。
A int operator一(FunNumber); B FunNumber operator一(); C FunNumber operator一(int); D int operator一(FunNumber,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< }
A 00 B 23 C 34 D 25
查看答案 B. 23
22 单选题 22 / 43
关于函数重载,下列叙述中错误的是( )。
A 重载函数的函数名必须相同 B 重载函数必须在参数个数或类型上有所不同 C 重载函数的返回值类型必须相同 D 重载函数的函数体可以有所不同
查看答案 C. 重载函数的返回值类型必须相同
23 单选题 23 / 43
在c++语言中,数据封装要解决的问题是( )。
A 数据的规范化 B 便于数据转换 C 避免数据丢失 D 防止不同模块之间数据的非法访问
查看答案 D. 防止不同模块之间数据的非法访问
24 单选题 24 / 43
在C++中,Cin是一个( )。
A 类 B 对象 C 模板 D 函数
查看答案 B. 对象
25 单选题 25 / 43
在公有派生情况下,有关派生类对象和基类对象的关系,下列叙述不正确的是( )。
A 派生类的对象可以赋给基类的对象 B 派生类的对象可以初始化基类的引用 C 派生类的对象可以直接访问基类中的成员 D 派生类的对象的地址可以赋给指向基类的指针
查看答案 C. 派生类的对象可以直接访问基类中的成员
26 单选题 26 / 43
要建立文件流并打开当前目录下的文件6le.dat用于输入,下列语句中错误的是( )。
A ifstream fin=ffstream.open(”file.dat”); B ifstream*fin=new ifstream(”file.dat”); C ifstream fin;fin.open(”file.dat”); D ifstream*fin=new ifstream();fin->open(”file.dat”);
查看答案 A. ifstream fin=ffstream.open(”file.dat”);
27 单选题 27 / 43
某二叉树有5个度为2的结点,则该二叉树中的叶子结点数是( )。
A 10 B 8 C 6 D 4
查看答案 C. 6
28 单选题 28 / 43
下面的语句中错误的是( )。
A int a=5;int x[a]; B eonst int a=5;int x[a]; C int n=5;int *P=new int[a]; D const int n=5;int *p=new int[a];
查看答案 A. int a=5;int x[a];
29 单选题 29 / 43
if语句的语法格式可描述为: 格式l:if(<条件>)<语句> 或 格式2:if(<条件>)<语句l> else<语句2> 关于上面的语法格式,下列表述中错误的是( )。
A <条件>部分可以是一个if语句,例如if(if(a==0)…)… B <语句>部分可以是一个if语句,例如if(…)if(…)… C 如果在<条件>前加上逻辑非运算符!并交换<语句l>和<语句2>的位置,语句功能不变 D <语句>部分可以是一个循环语句,例如if(…)while(…)…
查看答案 A. <条件>部分可以是一个if语句,例如if(if(a==0)…)…
30 单选题 30 / 43
结构化程序设计的基本原则不包括( )。
A 多态性 B 自顶向下 C 模块化 D 逐步求精
查看答案 A. 多态性
31 单选题 31 / 43
下列有关继承和派生的叙述中,正确的是( )。
A 派生类不彘访问基类的保护成员 B 作为虚基类的类不能被实例化 C 派生类应当向基类的构造函数传递参数 D 虚函数必须在派生类中重新实现
查看答案 C. 派生类应当向基类的构造函数传递参数
32 单选题 32 / 43
下列关于this指针的描述中,正确的是( )。
A 类的成员函数都有this指针 B 类的友元函数都有this指针 C 任何与类相关的函数都有this指针 D 类的非静态成员函数都有this指针
查看答案 D. 类的非静态成员函数都有this指针
33 单选题 33 / 43
已知函数f的原型是void f(int*a,long&B.;,变量v1、v2的定义是: int v1;long:v2; 下列调用语句中正确的是( )。
A f(v1,&v2); B f(v1,v2); C f(&v1,&v2); D f(&v1,v2);
查看答案 D. f(&v1,v2);
34 单选题 34 / 43
设有表示学生选课的三张表,学生s(学号,姓名,性别,年龄,身份证号),课程c(课号,课名),选课Sc(学号,课号,成绩),则表Sc的关键字(键或码)为( )。
A 课号,成绩 B 学号,成绩 C 学号,课号 D 学号,姓名,成绩
查看答案 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 B 232 C 221 D 122
查看答案 A. 121
36 单选题 36 / 43
数据流图中带有箭头的线段表示的是( )。
A 控制流 B 事件驱动 C 模块调用 D 数据流
查看答案 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; }
A 6.1 15.2 B 6 15 C 6 15.2 D 6.1 15
查看答案 B. 6 15
38 单选题 38 / 43
下列选项中不属于结构化程序设计原则的是( )。
A 可封装 B 自顶向下 C 模块化 D 逐步求精
查看答案 A. 可封装
39 单选题 39 / 43
有三个关系R,S和T如下:
其中关系T由关系R和s通过某种操作得到,该操作为( )。
A 选择 B 投影 C 交 D 并
查看答案 D. 并
40 单选题 40 / 43
下列控制格式输入/输出的操作符中,能够设置浮点数精度的是( )。
A setpreCision B setw C setfill D showpoint
查看答案 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];