计算机类二级C++

2014年全国计算机等级《二级C++》上机考试冲刺试题(2)

43 题含答案C++
共 43 题返回本类
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; }
执行这个程序的输出结果是( )。
查看答案
C. DBB
2单选题2 / 43
下面描述中错误的是( )。
查看答案
A. 系统总体结构图支持软件系统的详细设计
3单选题3 / 43
已知函数FA调用函数FB,若要把这两个函数定义在同一个文件中,则( )。
查看答案
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的值分别是(  )。
查看答案
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();
}
查看答案
C. 4 2
6单选题6 / 43
下列有关类继承的叙述中,错误的是( )。
查看答案
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)<
}
查看答案
C. 20
8单选题8 / 43
下列叙述中正确的是( )。
查看答案
C. 在栈中,栈底指针不变,栈中元素随栈顶指针的变化而动态变化
9单选题9 / 43
在满足实体完整性约束的条件下( )。
查看答案
A. 一个关系中应该有一个或多个候选关键字
10单选题10 / 43
下面关于c+十语言变量的叙述错误的是( )。
查看答案
B. 自动变量和外部变量的作用域为整个程序
11单选题11 / 43
下面程序的运行结果是( )。
#include void main()
{
int num=1:
int&ref=num; ref=ref+2:
cout<
}
查看答案
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<
程序运行后的输出结果是( )。
查看答案
B. 9
14单选题14 / 43
算法的空间复杂度是指( )。
查看答案
A. 算法在执行过程中所需要的计算机存储空间
15单选题15 / 43
c++语言类体系中,不能被派生类继承的有( )。
查看答案
B. 构造函数
16单选题16 / 43
对C++编译器区分重载函数无任何意义的信息是( )。
查看答案
C. 返回值类型
17单选题17 / 43
对类成员访问权限的控制,是通过设置成员的访问控制属性实现的,下列不是访问控制属性的是( )。
查看答案
D. 友元类型
18单选题18 / 43
下列程序的运行结果为(  )。
#include int i=0;
class A{ public: A(){i++;}
};
void main() {
A a,b[3],*C; C=b;
cout<<I<
}
查看答案
C. 4
19单选题19 / 43
以下关键字不能用来声明类的访问权限的是(  )。
查看答案
B. statiC
20单选题20 / 43
设有定义int a=1;float f=1.2;char C='a';,则下列表示错误的是( )。
查看答案
D. 8++;
21单选题21 / 43
下列不是描述类的成员函数的是( )。
查看答案
C. 友元函数
22单选题22 / 43
有如下程序:
int x=3:
do{
x-=2;
COU[<
}while(!(--X));
执行这个程序的输出结果是( )。
查看答案
C. 1—2
23单选题23 / 43
下列选项中属于面向对象设计方法主要特征的是( )。
查看答案
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:}
};
下面正确的叙述是( )。
查看答案
C. B::funcl()是虚函数,而A::func2()不是虚函数
25单选题25 / 43
语句ofstream f(”SALARY.DAT”,ios::app|ios::binary);的功能是建立流对象f,试图打开文件SALA-RY.DAT并与之连接,并且( )。
查看答案
A. 若文件存在,将文件写指针定位于文件尾;若文件不存在,建立一个新文件
26单选题26 / 43
下列有关继承和派生的叙述中,正确的是(  )。
查看答案
D. 如果派生类没有实现基类的一个纯虚函数,则该派生类是一个抽象类
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
则程序中下画线处应填入的语句是(  )。
查看答案
B. Base::fun();
29单选题29 / 43
以下各选项组中,均是C++语言关键字的组是( )。
查看答案
A. public operator this
30单选题30 / 43
要想使23.78965421的输出为23.7887,应用的语句是( )。
查看答案
C. cout<<23.78965421—0.001;
31单选题31 / 43
在软件开发中,需求分析阶段产生的主要文档是( )。
查看答案
D. 软件需求规格说明书
32单选题32 / 43
下列关于类定义的说法中,正确的是( )。
查看答案
A. 类定义中包括数据成员和函数成员的声明
33单选题33 / 43
下列关于数据库设计的叙述中,正确的是( )。
查看答案
A. 在需求分析阶段建立数据字典
34单选题34 / 43
下列选项,不正确的是( )。
查看答案
B. int a=1;
do
{
a++:
}while(a<=10);
35单选题35 / 43
下列关于栈叙述正确的是( )。
查看答案
A. 栈顶元素最先能被删除
36单选题36 / 43
下列关于运算符重载的描述中,正确的是( )。
查看答案
A. 运算符重载为成员函数时,若参数表中无参数,重载的是一元运算符
37单选题37 / 43
下面关于C++语言的描述错误的是( )。
查看答案
B. C++语言中引入友元,没有破坏封装性
38单选题38 / 43
在c++语言程序中,对象之间的相互通信通过( )。
查看答案
B. 调用成员函数实现
39单选题39 / 43
下列叙述中正确的是( )。
查看答案
B. 循环队列是队列的一种顺序存储结构
40单选题40 / 43
下面不属于需求分析阶段任务的是( )。
查看答案
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);
← 上一卷下一卷 →