计算机类 二级 C++
2014年全国计算机等级《二级C++》上机考试冲刺试题(2) 43 题 含答案 C++
1 单选题 1 / 43
有如下程序: #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
查看答案 C. DBB
2 单选题 2 / 43
下面描述中错误的是( )。
A 系统总体结构图支持软件系统的详细设计 B 软件设计是将软件需求转换为软件表示的过程 C 数据结构与数据库设计是软件设计的任务之一 D PAD图是软件详细设计的表示工具
查看答案 A. 系统总体结构图支持软件系统的详细设计
3 单选题 3 / 43
已知函数FA调用函数FB,若要把这两个函数定义在同一个文件中,则( )。
A FA必须定义在FB之前 B FB必须定义在FA之前 C 若FA定义在FB之后,则FA的原型必须出现在FB的定义之前 D 若FB定义在FA之后,则FB的原型必须出现在FA的定义之前
查看答案 D. 若FB定义在FA之后,则FB的原型必须出现在FA的定义之前
4 单选题 4 / 43
有如下函数定义: 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
查看答案 C. 0和2
5 单选题 5 / 43
下面程序的输出结果是( )。 #include class example { int a; public: example(int B.{a=b++;} void print(){a=a+1;eout<<A<<””;} void print()const{cout<<A<<””;} }; 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
查看答案 C. 4 2
6 单选题 6 / 43
下列有关类继承的叙述中,错误的是( )。
A 继承可以实现软件复用 B 虚基类可以解决由多继承产生的二义性问题 C 派生类构造函数要负责调用基类的构造函数 D 派生类没有继承基类的私有成员
查看答案 D. 派生类没有继承基类的私有成员
7 单选题 7 / 43
下面程序的运行结果是( )。 #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<<FUN(A,3)< }
A 12 B 15 C 20 D 60
查看答案 C. 20
8 单选题 8 / 43
下列叙述中正确的是( )。
A 在栈中,栈中元素随栈底指针与栈顶指针的变化而动态变化 B 在栈中,栈顶指针不变,栈中元素随栈底指针的变化而动态变化 C 在栈中,栈底指针不变,栈中元素随栈顶指针的变化而动态变化 D 以上说法都不正确
查看答案 C. 在栈中,栈底指针不变,栈中元素随栈顶指针的变化而动态变化
9 单选题 9 / 43
在满足实体完整性约束的条件下( )。
A 一个关系中应该有一个或多个候选关键字 B 一个关系中只能有一个候选关键字 C 一个关系中必须有多个候选关键字 D 一个关系中可以没有候选关键字
查看答案 A. 一个关系中应该有一个或多个候选关键字
10 单选题 10 / 43
下面关于c+十语言变量的叙述错误的是( )。
A c++语言中变量分为aut0、static、extem和register4种存储类型 B 自动变量和外部变量的作用域为整个程序 C 内部静态变量的作用域是定义它的函数 D 外部静态变量的作用域是定义它的文件
查看答案 B. 自动变量和外部变量的作用域为整个程序
11 单选题 11 / 43
下面程序的运行结果是( )。 #include void main() { int num=1: int&ref=num; ref=ref+2: cout< }
A 13 B 16 C 36 D 33
查看答案 C. 36
12 单选题 12 / 43
有以下程序: #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
查看答案 B. 9
13 单选题 13 / 43
下列运算符中,不能被重载的是( )。
A && B != C . D ++
查看答案 C. .
14 单选题 14 / 43
算法的空间复杂度是指( )。
A 算法在执行过程中所需要的计算机存储空间 B 算法所处理的数据量 C 算法程序中的语句或指令条数 D 算法在执行过程中所需要的临时工作单元数
查看答案 A. 算法在执行过程中所需要的计算机存储空间
15 单选题 15 / 43
c++语言类体系中,不能被派生类继承的有( )。
A 转换函数 B 构造函数 C 虚函数 D 静态成员函数
查看答案 B. 构造函数
16 单选题 16 / 43
对C++编译器区分重载函数无任何意义的信息是( )。
A 参数类型 B 参数个数 C 返回值类型 D 常成员函数关键字Const
查看答案 C. 返回值类型
17 单选题 17 / 43
对类成员访问权限的控制,是通过设置成员的访问控制属性实现的,下列不是访问控制属性的是( )。
A 公有类型 B 私有类型 C 保护类型 D 友元类型
查看答案 D. 友元类型
18 单选题 18 / 43
下列程序的运行结果为( )。 #include int i=0; class A{ public: A(){i++;} }; void main() { A a,b[3],*C; C=b; cout<<I< }
A 2 B 3 C 4 D 5
查看答案 C. 4
19 单选题 19 / 43
以下关键字不能用来声明类的访问权限的是( )。
A publiC B statiC C proteCted D private
查看答案 B. statiC
20 单选题 20 / 43
设有定义int a=1;float f=1.2;char C='a';,则下列表示错误的是( )。
A ++a; B f一一; C c++; D 8++;
查看答案 D. 8++;
21 单选题 21 / 43
下列不是描述类的成员函数的是( )。
A 构造函数 B 析构函数 C 友元函数 D 复制构造函数
查看答案 C. 友元函数
22 单选题 22 / 43
有如下程序: int x=3: do{ x-=2; COU[< }while(!(--X)); 执行这个程序的输出结果是( )。
A 1 B 3 0 C 1—2 D 死循环
查看答案 C. 1—2
23 单选题 23 / 43
下列选项中属于面向对象设计方法主要特征的是( )。
A 继承, B 自顶向下 C 模块化 D 逐步求精
查看答案 A. 继承,
24 单选题 24 / 43
对于类定义 class A{ public: void func2(){} }; class B:public A{ public: w)id funcl()| cout<<"class B func l”<<ENDL:} virtual voiIl fimc2(){cout<<"class B func 2" <<ENDL:} }; 下面正确的叙述是( )。
A A::rune2()和B::funcl()都是虚函数 B A::func2()和B::funel()都不是虚函数 C B::funcl()是虚函数,而A::func2()不是虚函数 D B::funcl()不是虚函数,而A::func2()是虚函数
查看答案 C. B::funcl()是虚函数,而A::func2()不是虚函数
25 单选题 25 / 43
语句ofstream f(”SALARY.DAT”,ios::app|ios::binary);的功能是建立流对象f,试图打开文件SALA-RY.DAT并与之连接,并且( )。
A 若文件存在,将文件写指针定位于文件尾;若文件不存在,建立一个新文件 B 若文件存在,将其置为空文件;若文件不存在,打开失败 C 若文件存在,将文件写指针定位于文件首;若文件不存在,建立一个新文件 D 若文件存在,打开失败;若文件不存在,建立一个新文件
查看答案 A. 若文件存在,将文件写指针定位于文件尾;若文件不存在,建立一个新文件
26 单选题 26 / 43
下列有关继承和派生的叙述中,正确的是( )。
A 如果一个派生类公有继承其基类,则该派生类对象可以访问基类的保护成员 B 派生类的成员函数可以访问基类的所有成员 C 基类对象可以赋值给派生类对象 D 如果派生类没有实现基类的一个纯虚函数,则该派生类是一个抽象类
查看答案 D. 如果派生类没有实现基类的一个纯虚函数,则该派生类是一个抽象类
27 单选题 27 / 43
下列符号中可以用做C++标识符的是( )。
A _radius B f00~bar C else D 3room
查看答案 A. _radius
28 单选题 28 / 43
有如下程序: #include using namespace std; classBase{ public: void fun(){ __________________ cout<<”Base::fun”<<ENDL;} }; class Derived:public Base{ public: voidfun(){ cout<<”Derived::fun”< } }; int main(){ Derived d; A fun(); return 0; } 已知其执行后的输出结果为: Base::fun Derived::fun 则程序中下画线处应填入的语句是( )。
A Base.fun(); B Base::fun(); C Base—>fun(); D fun();
查看答案 B. Base::fun();
29 单选题 29 / 43
以下各选项组中,均是C++语言关键字的组是( )。
A public operator this B shod string static C it while>= D prirate cout printf
查看答案 A. public operator this
30 单选题 30 / 43
要想使23.78965421的输出为23.7887,应用的语句是( )。
A cout<<23.78965421; B cout<<FIXED<<23.78965421; C cout<<23.78965421—0.001; D cout<<FIXED<
查看答案 C. cout<<23.78965421—0.001;
31 单选题 31 / 43
在软件开发中,需求分析阶段产生的主要文档是( )。
A 软件集成测试计划 B 软件详细设计说明书 C 用户手册 D 软件需求规格说明书
查看答案 D. 软件需求规格说明书
32 单选题 32 / 43
下列关于类定义的说法中,正确的是( )。
A 类定义中包括数据成员和函数成员的声明 B 类成员的缺省访问权限是保护的 C 数据成员必须被声明为私有的 D 成员函数只能在类体外进行定义
查看答案 A. 类定义中包括数据成员和函数成员的声明
33 单选题 33 / 43
下列关于数据库设计的叙述中,正确的是( )。
A 在需求分析阶段建立数据字典 B 在概念设计阶段建立数据字典 C 在逻辑设计阶段建立数据字典 D 在物理设计阶段建立数据字典
查看答案 A. 在需求分析阶段建立数据字典
34 单选题 34 / 43
下列选项,不正确的是( )。
A for(int a=1;a<=10;a++); B int a=1; do { a++: }while(a<=10); C int a=1; while(a<=10) { a++: } D for(int a=1;a<=10;a++)a++;
查看答案 B. int a=1; do { a++: }while(a<=10);
35 单选题 35 / 43
下列关于栈叙述正确的是( )。
A 栈顶元素最先能被删除 B 栈顶元素最后才能被删除 C 栈底元素永远不能被删除 D 栈底元素最先被删除
查看答案 A. 栈顶元素最先能被删除
36 单选题 36 / 43
下列关于运算符重载的描述中,正确的是( )。
A 运算符重载为成员函数时,若参数表中无参数,重载的是一元运算符 B 一元运算符只能作为成员函数重载 C 二元运算符重载为非成员函数时,参数表中有一个参数 D c++中可以重载所有的运算符
查看答案 A. 运算符重载为成员函数时,若参数表中无参数,重载的是一元运算符
37 单选题 37 / 43
下面关于C++语言的描述错误的是( )。
A C++语言支持数据封装 B C++语言中引入友元,没有破坏封装性 C C++语言允许函数名和运算符重载 D C++语言支持动态联编
查看答案 B. C++语言中引入友元,没有破坏封装性
38 单选题 38 / 43
在c++语言程序中,对象之间的相互通信通过( )。
A 继承实现 B 调用成员函数实现 C 封装实现 D 函数重载实现
查看答案 B. 调用成员函数实现
39 单选题 39 / 43
下列叙述中正确的是( )。
A 循环队列是队列的一种链式存储结构 B 循环队列是队列的一种顺序存储结构 C 循环队列是非线性结构 D 循环队列是一种逻辑结构
查看答案 B. 循环队列是队列的一种顺序存储结构
40 单选题 40 / 43
下面不属于需求分析阶段任务的是( )。
A 确定软件系统的功能需求 B 确定软件系统的性能需求 C 需求规格说明书评审 D 制定软件集成测试计划
查看答案 D. 制定软件集成测试计划
41 主观题 41 / 43
请使用VC6或使用【答题】菜单打开考生文件夹progl下的工程progl,该工程中包含程序文件main. cpp,其中有Salary(“工资”)类和主函数main的定义。程序中位于每个“//ERROR ****found****”之后的一行语句行有错误,请加以改正。改正后程序的输出结果应为: 应发合计:3500应扣合计:67.5实发工资:3432.5 注意:只修改每个“//ERROR ****found****”下的那一行,不要改动程序中的其他内容。 #include using namespace std; class Salary{ public: Salary(const char *id,double the_base,double the bonus,double the_tax) //ERROR **********found********** :the_base(base),the_bonus(bonus),the_tax(tax) { staff_id=new char[strlen(id)+1]; strcpy(staff_id,id); } //ERROR **********found********** ~Salary(){delete * staff_id;} double getGmssPay()const{retum base+bonus;}//返回应发项合计 double getNetPay()const}retum getGmssPay()-tax;}//返回实发工资额 private: char * staff id;//职工号 double base;//基本工资 double bonus;//奖金 double tax;//代扣个人所得税 }; int main(){ Salary pay(”888888”,3000.0,500.0,67.50); cout<<”应发合计:”<<PAY.GETGROSSPAY()<<" cout<<”应扣合计:”<<PAY.GETGROSSPAY()一PAY.GETNETPAY()<<””; //ERROR**********found********** cout<<”实发工资:”<<PAY::GETNETPAY()<<ENDL; return 0; }
查看答案 (1)BAsE(thE—BAsE),Bonus(thE—Bonus),tAx(thE—tAx) (2)SAlAry(){DElEtE[]stAFF_iD;} (3)Cout<<”实发工资:”<<pAy.GEtNEtPAy()<<EnD1;
42 主观题 42 / 43
请使用VC6或使用【答题】菜单打开考生文件夹proj2下的工程proj2,此工程包含有一个源程序文件proj2.cpp,其中定义了Stack类和ArrayStack类。 Stack是一个用于表示数据结构“栈”的类,栈中的元素是字符型数据。Stack为抽象类,它只定义了栈的用户接口,如下所示: 公有成员函数 功能 push 入栈:在栈顶位置添加一个元素 pop 退栈:取出并返回栈顶元素 ArrayStack是Stack的派生类,它实现了Stack定义的接口。ArrayStack内部使用动态分配的字符数组作为栈元素的存储空间。数据成员maxSize表示的是栈的最大容量,top用于记录栈顶的位置。成员函数push和pop分别实现具体的入栈和退栈操作。 请在程序中的横线处填写适当的代码,然后删除横线,以实现上述功能。此程序的正确输出结果应为: a,b,C C,b,a 注意:只在指定位置编写适当代码,不要改动程序中的其他内容,也不要删除或移动“//****料found****”。 //proj2.cpp #include using namespacc std; class Stack{ public: virtual void push(char C)=0; virtual char pop()=0; }; class ArrayStack:public Stack{ char*P; int maxSizc; int top; public: ArravStack(int s) { top=0; maxSize=s: //*********found********* P=______; } ~ArrayStack() { //*********found********* _______; } void push(char c) } if(top==maxSize){ cerr<<”Overflow! \n”: return; } //*********found********* _______; top++: } char pop() { if(top==0){ cerr<<”Underflow!、n”; return‘\0’; } Top--; //*********found********* ______; } }; void f(Stack&sRef) { char ch[]={‘a’,‘b’,‘c’}; cout<<CH[0]<<”,”<<CH[1]<<”,”<<CH[2]< sRef.push(oh[0]);sRef.push(ch[1]);sRef.push(ch[2]); cout<<SREF.POP()< cout<<SREF.POP()< cout<<SREF.POP()< } int main() { ArrayStack as(10); f(as): return 0: }
查看答案 (1)IlEw ChAr[s] (2)DElEtE[]P (3)P[top]=E (4)rEturn P[top]
43 主观题 43 / 43
请使用【答题】菜单命令或直接用VC6打开考生文件夹下的工程prog3,其中声明了ValArray类,该类在内部维护一个动态分配的整型数组。ValArray类的复制构造函数应实现对象的深层复制。请编写ValArray类的复制构造函数。在main函数中给出了一组测试数据,此种情况下程序的输出应该是: ValArray vl={1,2,3,4,5} ValArray v2={1,2,3,4,5} 要求: 补充编制的内容写在“//*********333*********”与“//*********666*********”之间,不得修改程序的其他部分。 注意:程序最后将结果输出到文件out.dat中。输出函数write To File已经编译为boj文件,并且在本程序中调用。 //ValArray.h #include using namespace std; class ValArray{ int *v: int size; public: ValArray(const int * P,int n):size(n) { v=new int[size]; for(int i=0;i<SIZE;I++)&NBSP;&NBSP;&NBSP; < p v[i]="P[i];">
查看答案 sizE=othe].size; v=liEw int[size]: For(int i=0;i<size;i++) setAtTAy(i,other.v[ij);