2017年计算机二级C++考试试题
C++是C语言的继承,它既可以进行C语言的过程化程序设计,又可以进行以抽象数据类型为特点的基于对象的程序设计,还可以进行以继承和多态为特点的面向对象的程序设计。以下是yjbys小编收集的计算机二级C++考试试题,希望大家认真阅读!
一、选择题(每小题1分,共40分)
1、有如下程序:
#inClude using namespaCe std; Class B{
publiC:
virtual void show(){Cout<<”B”;} };
Class D:publiC B{ . publiC:
void show(){Cout<<”D”;} };
void funl(B * ptr){ptr一>show();} void fUN2(B&ref){ref.show();}
voidfhIl3(B B.{b.show();} int main()
{
B b,* P=new D; D d;
funl(P); fun2(B.; fun3(D);
delete P; return 0; }
执行这个程序的输出结果是( )。
A.BBB
B.BBD
C.DBB
D.DBD
2、下面描述中错误的是( )。
A.系统总体结构图支持软件系统的详细设计
B.软件设计是将软件需求转换为软件表示的过程
C.数据结构与数据库设计是软件设计的任务之一
D.PAD图是软件详细设计的表示工具
3、已知函数FA调用函数FB,若要把这两个函数定义在同一个文件中,则( )。
A.FA必须定义在FB之前
B.FB必须定义在FA之前
C.若FA定义在FB之后,则FA的原型必须出现在FB的定义之前
D.若FB定义在FA之后,则FB的原型必须出现在FA的定义之前
4、有如下函数定义:
void funC(int a,int&B. {a++;b++;}
若执行代码段:
int x=0,Y = 1; funC(X,Y);
则变量x和y的值分别是( )。
A.0和1
B.1和1
C.0和2
D.1和2
5、下面程序的输出结果是( )。
#include
class example
{
int a;
public:
example(int B.{a=b++;}
void print(){a=a+1;eout< void print()const{cout< };
void main()
{
example x(3);
const example Y(2);
A print();
B print();
}
A.2 2
B.4 3
C.4 2
D.3 2
6、下列有关类继承的叙述中,错误的是( )。
A.继承可以实现软件复用
B.虚基类可以解决由多继承产生的二义性问题
C.派生类构造函数要负责调用基类的构造函数
D.派生类没有继承基类的私有成员
7、下面程序的运行结果是( )。
#include
int fun(int a[],int n) {
int resuh=1;
for(inl i=1;i<11;1‘++)
result=result * a[i];
retum result;
} void main()
int a[3]={3,4,5}:
cout< }
A.12
B.15
C.20
D.60
8、下列叙述中正确的是( )。
A.在栈中,栈中元素随栈底指针与栈顶指针的变化而动态变化
B.在栈中,栈顶指针不变,栈中元素随栈底指针的变化而动态变化
C.在栈中,栈底指针不变,栈中元素随栈顶指针的变化而动态变化
D.以上说法都不正确
9、在满足实体完整性约束的条件下( )。
A.一个关系中应该有一个或多个候选关键字
B.一个关系中只能有一个候选关键字
C.一个关系中必须有多个候选关键字
D.一个关系中可以没有候选关键字
10、下面关于c+十语言变量的叙述错误的是( )。
A.c++语言中变量分为aut0、static、extem和register4种存储类型
B.自动变量和外部变量的作用域为整个程序
C.内部静态变量的作用域是定义它的函数
D.外部静态变量的`作用域是定义它的文件
11、 下面程序的运行结果是( )。
#include void main()
{
int num=1:
int&ref=num; ref=ref+2:
cout< }
A.13
B.16
C.36
D.33
12、 有以下程序:
#include float tun(int X,int Y) {return(X+Y);} void main()
{int a=2,b=5,c=8;
cout< 程序运行后的输出结果是( )。
A.编译出错
B.9
C.21
D.9.0
13、 下列运算符中,不能被重载的是( )。
A.&&
B.!=
C..
D.++
14、 算法的空间复杂度是指( )。
A.算法在执行过程中所需要的计算机存储空间
B.算法所处理的数据量
C.算法程序中的语句或指令条数
D.算法在执行过程中所需要的临时工作单元数
15、 c++语言类体系中,不能被派生类继承的有( )。
A.转换函数
B.构造函数
C.虚函数
D.静态成员函数
16、 对C++编译器区分重载函数无任何意义的信息是( )。
A.参数类型
B.参数个数
C.返回值类型
D.常成员函数关键字Const
17、 对类成员访问权限的控制,是通过设置成员的访问控制属性实现的,下列不是访问控制属性的是( )。
A.公有类型
B.私有类型
C.保护类型
D.友元类型
18、 下列程序的运行结果为( )。
#include int i=0;
class A{ public: A(){i++;}
};
void main() {
A a,b[3],*C; C=b;
cout< }
A.2
B.3
C.4
D.5
19、 以下关键字不能用来声明类的访问权限的是( )。
A.publiC
B.statiC
C..proteCted
D.private
20、 设有定义int a=1;float f=1.2;char C='a';,则下列表示错误的是( )。
A.++a;
B.f一一;
C.c++;
D.8++;
二、基本操作题(18分)
1、请使用VC6或使用【答题】菜单打开考生文件夹projl下的工程projl,此工程中含有一个源程碍文件 projl.epp。其中位于每个注释“//ERROR ****found****”之后的一行语句存在错误。请改正这些错误,使程序的输出结果为:
ConstruCtor Called. The value is 10
Copy ConstruCtor Called. The value is 10
DestruCtor Called. DestruCtor Called. 注意:只修改注释“//ERROR ****found****”的下一行语句,不要改动程序中的其他内容。
//pwjl.Cpp
#inClude ’using namespaCe std; Class MyClass{
publiC:
//ERROR**********found**********
MyClass(int i)
{value=i;Cout<<”ConstruCtor Called.” < //ERROR**********found********** MyClass(eonst MyClass P)
{
value = P.value;
eout<<”Copy ConstruCtor Called.”< }
void Print()
{Cout<<”The value is” < //ERROR**********found********* void-MyClass()
{Cout<<”DestruCtor Called.”< private:
int value;
}; int main()
{ MyChas objl
owl.Print();
MyClmss obj2(owl); obj2.Print();
retum 0;
三、简单应用题(24分)
1、请使用VC6或使用【答题】菜单打开考生文件夹pr092下的工程pros2。此工程中包含一个程序文件main.cpp,其中有“部门”类Department和“职工”类Staff的定义,还有主函数main的定义。在主函数中定义了两个“职工”对象,他们属于同一部门。程序展示,当该部门改换办公室后,这两个人的办公室也同时得到改变。请在程序中的横线处填写适当的代码并删除横线,以实现上述类定义。此程序的正确输出结果应为:
改换办公室前:
职工号:0789姓名:张三部门:人事处办公室:521
职工号:0513姓名:李四部门:人事处办公室:521
改换办公室后:
职工号:0789姓名:张三部门:人事处办公室:311
职工号:0513姓名:李四部门:人事处办公室:311
注意:只在横线处填写适当的代码,不要改动程序中的其他内容,也不要删除或移动“//****found****”。
#include
using namespace std;
class Department{ //“部门”类
public:
Department(const char*name,const char*office){
strcpy(this一>name,nanle);
//**********found**********
}
const char*getName()const{return name;}//返回部门名称
//**********found**********
const char*getOffice()const{________} //返回办公室房号
void changeOfficeTo(const char*office){ //改换为指定房号的另一个办公室
strcpy(this一>office,office);
}
private:
char name[20];//部门名称
char office[20];//部门所在办公室房号
};
class staff{//“职工”类
public:
//**********found**********
Staff(const char*my—id,const char木my_name,Department&my_dept):——{
strcpy(this一>staff id,my_id);
strcpy(this一>name,my_name);
}
const char*getlD()const{return staff_id;}
const char*getName()consl{return name;}
Department getDepartment()const{return dept;} char staff=id[10];//职工号
char name[20];//姓名
Department&dept;//所在部门
}; void showStaff(Staff&staff){
cout<<”职工号:”< cout<<”姓名:”< cout<<”部门:”< cout<<”办公室:”< int main(){
Department dept(”人事处”,”521”);
Staff Zhang(”0789”,”张三”,dept),Li(”0513”,”李四”,dept);
cout<<”改换办公室前:”< showStaff(Zhang); showStaff(Li);
//人事处办公室由521搬到311 //**********found********** ———————————————————————一
cout<<”改换办公室后:”< showStaff(Zhang); showStaff(Li);
return 0; }
【2017年计算机二级C++考试试题】相关文章: