一、选择题(每小题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++;
21、 下列不是描述类的成员函数的是( )。
A.构造函数
B.析构函数
C.友元函数
D.复制构造函数
22、 有如下程序:
int x=3:
do{
x-=2;
COU[< }while(!(--X));
执行这个程序的输出结果是( )。
A.1
B.3 0
C.1—2
D.死循环
23、 下列选项中属于面向对象设计方法主要特征的是( )。
A.继承,
B.自顶向下
C.模块化
D.逐步求精
24、 对于类定义 class A{
public:
void func2(){}
};
class B:public A{ public:
w)id funcl()| cout<<"class B func l”< virtual voiIl fimc2(){cout<<"class B func 2" < };
下面正确的叙述是( )。
A.A::rune2()和B::funcl()都是虚函数
B.A::func2()和B::funel()都不是虚函数
C.B::funcl()是虚函数,而A::func2()不是虚函数
D.B::funcl()不是虚函数,而A::func2()是虚函数
25、 语句ofstream f(”SALARY.DAT”,ios::app|ios::binary);的功能是建立流对象f,试图打开文件SALA-RY.DAT并与之连接,并且( )。
A.若文件存在,将文件写指针定位于文件尾;若文件不存在,建立一个新文件
B.若文件存在,将其置为空文件;若文件不存在,打开失败
C.若文件存在,将文件写指针定位于文件首;若文件不存在,建立一个新文件
D.若文件存在,打开失败;若文件不存在,建立一个新文件
26、 下列有关继承和派生的叙述中,正确的是( )。
A.如果一个派生类公有继承其基类,则该派生类对象可以访问基类的保护成员
B.派生类的成员函数可以访问基类的所有成员
C.基类对象可以赋值给派生类对象
D.如果派生类没有实现基类的一个纯虚函数,则该派生类是一个抽象类
27、 下列符号中可以用做C++标识符的是( )。
A._radius
B.f00~bar
C.else
D.3room
28、有如下程序:
#include
using namespace std;
classBase{
public:
void fun(){
__________________
cout<<”Base::fun”< };
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();
29、 以下各选项组中,均是C++语言关键字的组是( )。
A.public operator this
B.shod string static
C.it while>=
D.prirate cout printf
30、 要想使23.78965421的输出为23.7887,应用的语句是( )。
A.cout<<23.78965421;
B.cout
31、 在软件开发中,需求分析阶段产生的主要文档是( )。
A.软件集成测试计划
B.软件详细设计说明书
C.用户手册
D.软件需求规格说明书
32、 下列关于类定义的说法中,正确的是( )。
A.类定义中包括数据成员和函数成员的声明
B.类成员的缺省访问权限是保护的
C.数据成员必须被声明为私有的
D.成员函数只能在类体外进行定义
33、 下列关于数据库设计的叙述中,正确的是( )。
A.在需求分析阶段建立数据字典
B.在概念设计阶段建立数据字典
C.在逻辑设计阶段建立数据字典
D.在物理设计阶段建立数据字典
34、 下列选项,不正确的是( )。
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++;
35、 下列关于栈叙述正确的是( )。
A.栈顶元素最先能被删除
B.栈顶元素最后才能被删除
C.栈底元素永远不能被删除
D.栈底元素最先被删除
36、 下列关于运算符重载的描述中,正确的是( )。
A.运算符重载为成员函数时,若参数表中无参数,重载的是一元运算符
B.一元运算符只能作为成员函数重载
C.二元运算符重载为非成员函数时,参数表中有一个参数
D.c++中可以重载所有的运算符
37、 下面关于C++语言的描述错误的是( )。
A.C++语言支持数据封装
B.C++语言中引入友元,没有破坏封装性
C.C++语言允许函数名和运算符重载
D.C++语言支持动态联编
38、 在c++语言程序中,对象之间的相互通信通过( )。
A.继承实现
B.调用成员函数实现
C.封装实现
D.函数重载实现
39、 下列叙述中正确的是( )。
A.循环队列是队列的一种链式存储结构
B.循环队列是队列的一种顺序存储结构
C.循环队列是非线性结构
D.循环队列是一种逻辑结构
40、 下面不属于需求分析阶段任务的是( )。
A.确定软件系统的功能需求
B.确定软件系统的性能需求
C.需求规格说明书评审
D.制定软件集成测试计划
二、基本操作题(18分)
41、
请使用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<<”应发合计:”< cout<<”应扣合计:”< //ERROR**********found**********
cout<<”实发工资:”< return 0;
}
三、简单应用题(24分)
42、
请使用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< sRef.push(oh[0]);sRef.push(ch[1]);sRef.push(ch[2]);
cout< cout< cout< }
int main()
{
ArrayStack as(10);
f(as):
return 0:
}
四、综合应用题(18分)
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
正在阅读:
2016年计算机二级《C++》上机考前冲刺试题(2)05-04
五年级作文漫画老师500字幽默风趣09-06
中秋节微信朋友圈祝福语简短10-25
我是一只松毛虫作文800字07-25
2022年8月-9月江苏苏州普通话报名时间、条件及入口【7月29日起】07-28
以感谢为主题的作文600字06-23
长城游记作文400字08-20
荷兰移民局mvv签证周期|荷兰移民局批复周期的常识08-08
美丽的最良江作文400字10-06