计算机类二级C++

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

43 题含答案C++
共 43 题返回本类
1单选题1 / 43
一个教师可讲授多门课程,一门课程可由多个教师讲授。则实体教师和课程间的联系是( )。
查看答案
D. m:n联系
2单选题2 / 43
Tilil程序的运行结果是( )。
#include void main()
{
int i=1:
while(i<=8)
if(++i%3 1=2)continue: else eout<
}
查看答案
C. 258
3单选题3 / 43
下列关于线性链表的叙述中,正确的是( )。
查看答案
C. 进行插入与删除时,不需要移动表中的元素
4单选题4 / 43
对于一个类定义,下列叙述中错误的是( )。
查看答案
B. 如果没有定义缺省的构造函数,编译器一定将生成一个缺省的构造函数
5单选题5 / 43
为了使类中的某个成员不能被类的对象通过成员操作符访问,则不能把该成员的访问权限定义为( )。
查看答案
A. public
6单选题6 / 43
下列关于运算符函数的描述中,错误的是( )。
查看答案
C. 运算符函数只能定义为类的成员函数
7单选题7 / 43
一个栈的初始状态为空。现将元素1、2、3、4、5、A、B、C、D、E依次入栈,然后再依次出栈,则元素出栈的顺序是(  )。
查看答案
B. EDCBA54321
8单选题8 / 43
在数据管理技术发展的三个阶段中,数据共享最好的是(  )。
查看答案
C. 数据库系统阶段
9单选题9 / 43
下面程序的运行结果为( )。
#include
void main() {
char a=’3’: switch(8)
{
case '3':cout<<”3”:
case '2':cout<<”2”;break; default:cout<<”l”;
}
}
查看答案
D. 32
10单选题10 / 43
数据库设计中反映用户对数据要求的模式是( )。
查看答案
C. 外模式
13单选题13 / 43
下列关于运算符重载的叙述中,错误的是( )。
查看答案
B. 所有的运算符都可以通过重载而被赋予新的含义
14单选题14 / 43
F列关于栈的叙述正确的是( )。
查看答案
B. 栈按“先进后出”组织数据
15单选题15 / 43
软件生命周期中的活动不包括( )。
查看答案
A. 市场调研
16单选题16 / 43
下面对静态数据成员的描述中,正确的是( )。
查看答案
A. 静态数据成员是类的所有对象共享的数据
17单选题17 / 43
软件按功能可以分为:应用软件、系统软件和支撑软件(或工具软件)。下面属于应用软件的是(  )。
查看答案
C. 教务管理系统
18单选题18 / 43
下面叙述中错误的是(  )。
查看答案
A. 软件测试的目的是发现错误并改正错误
19单选题19 / 43
层次型、网状型和关系型数据库划分原则是( )。
查看答案
D. 数据之间的联系方式
20单选题20 / 43
下面程序的运行结果为( )。
#include void swap(int&a,int B. int temp;
temp=a++: a=b:
b=temp;
}
void main()
{
im a=2,b=3; swap(a,B.;
eout<<A<<”,”<<B<
}
查看答案
D. 3,3
21单选题21 / 43
有如下程序:
#inClude using namespaCe std; Class MyClass{
publiC:
MyClass(int X):val(X){}
void Print()Const}tout<<”Const:val=”<<VAL<<’\T’;}&NBSP;&NBSP;&NBSP; Print(){tout< private:
int val; };
int main(){
Const MyClass objl(10); MyClass obj2(20);
objl.Print(); obj2.Print(); retum 0;
}
执行这个程序的输出结果是( )。
查看答案
C. Const:val=10 val=20
22单选题22 / 43
一个工作人员可以使用多台计算机,而一台计算机可被多个人使用,则实体工作人员与实体计算机之间 的联系是( )。
查看答案
C. 多对多
23单选题23 / 43
下列程序的运行结果是( )。
#include class Loeation{
private:
int X,Y;
public: void init(int=0,int=0);
void valueX(int val){X=val;} int valueX(){returnx;}
void valueY(int val){Y=val;} int valueY(){return Y;}};
void Location::init(int initX,int initY) {X=initX;
Y=initY4}
void main(X
{Location A,B;
查看答案
A. init();
24单选题24 / 43
下面程序的运行结果为( )。
#include class A
static int n;
public:
A(){n=1;}
A(int num){n=hum;} void print(){cout<<N;}&NBSP;&NBSP;&NBSP;
int A::n=2;
void main() {
A a,b(3); a.print(); b.print();
cout<
查看答案
D. 33
25单选题25 / 43
负责数据库中查询操作的数据库语言是( )。
查看答案
C. 数据操纵语言
26单选题26 / 43
已知枚举类型声明语句为:
enum COl,OR{WHITE,YELLOW,GREEN=5,RED,BLACK=10};
则下列说法中错误的是( )。
查看答案
D. 枚举常量WHITE的值为1
27单选题27 / 43
有如下程序:
#include
using namespace std;
class Base
{
public:
void funl(){cout<<”Base\n”;}
virtual void fun2(){eout<<”Base\n”;}
};
class Derived:public Base{
public:
void funl(){eout<<”Derived、n”;}
void fura(){eout<.<”Derived\n”;}
};
void f(Base&B.}b.funl();b.ftm2();}
int main()
{
Derived obj;
f(obj);
return 0;
}
执行这个程序的输出结果是(  )。
查看答案
B. Base
Derived
28单选题28 / 43
有如下类声明:
class SAMPLE
{
int n:
public:
SAMPLE(int i=0):n(i){}
void setValue(int nO);
};
下列关于9etValue成员函数的定义中,正确的是(  )。
查看答案
B. void SAMPLE::setValue(int胡){n=n0;
29单选题29 / 43
下列关于c++函数的说明中,正确的是( )。
查看答案
C. 标准c++要求在调用一个函数之前,必须先声明其原型
30单选题30 / 43
有如下程序:
#inClude using namespaCe std; Class MusiC{
publiC:
void setTitle(Char*str){strCpy(title,str);} proteCted:
Char type[10]; private:
Char title[20];
Class Jazz:publiC MusiC{ publiC:
void set(Char*str){
strCpy(type,”Jazz'’);//① strCpy(title,str);//②
} }; 下列叙述中正确的是(  )。
查看答案
C. 程序编译时语句②出错
31单选题31 / 43
在公有继承的情况下,允许派生类直接访问的基类成员包括(  )。
查看答案
B. 公有成员和保护成员
32单选题32 / 43
有三个关系R、S和T如下:
  
由关系R和S通过运算得到关系T,则所使用的运算为(  )。
查看答案
D. 自然连接
33单选题33 / 43
有如下类定义:
class MyClass
{
public:
private:
______________________________________
int data;
};
若要为MyClass类重载流输入运算符“>>”,使得程序中可以“cin>>obj;”的形式改变MyClass类的对象0bj中数据成员data的值,则横线处的声明语句应为( )。
查看答案
A. friend istream& operator>>(istream&is,MyClass&A.;
34单选题34 / 43
有如下程序:
#inClude using namespaCe std; Class Sample{
friend long fun(Sample S); publiC:
Sample(10ng A.{x=a;} private:
long X;
}; long fun(Sample S){
if(S.x<2)return l;
return S.X*fun(Sample(s.x-1)); }
int main(  ) {
int sum=0;
for(int i=0;i<6;i++) {sum+=fun(Sample(i));}
Cout<<SUM:&NBSP;&NBSP;&NBSP;
}
执行这个程序的输出结果是(  )。
查看答案
C. 154
35单选题35 / 43
有如下程序:
#inClude using namespaCe std; Class Book{
publiC:
Book(Char*t=””){strCpy(title,t);}
private:
Char titlel40]; };
Class Novel:publiC Book{ publiC:
Novel(Char*t=””):Book(t){}
Char*Category(  )Const{return”文学”;} };
int main(  ){ Book * pb; pb=new Novel(  );
Cout<
return 0; }
若程序运行时输出结果是“文学”,则横线处缺失的语句是(  )。
查看答案
D. virtual Char*Category(  )Const=0;
36单选题36 / 43
有如下头变件:
int f1()
StatiCintf2( ); Class MA
publiC: intf3();
1statiC int f4();
};
在所描述的函数中,具有隐含的this指针的是( )。
查看答案
C. B
37单选题37 / 43
下面对静态数据成员的描述中,正确的是( )。
查看答案
D. 静态数据成员可以直接用类名调用
39单选题39 / 43
下列说法正确的是( )。
查看答案
B. 内联函数在编译时是将该函数的目标代码插入每个调用该函数的地方
40单选题40 / 43
下面对于友元函数描述正确的是( )。
查看答案
C. 友元函数破坏了类的封装性和隐藏性
41主观题41 / 43
请使用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.” <<ENDL;}
//ERROR**********found********** MyClass(eonst MyClass P)
{
value = P.value;
eout<<”Copy ConstruCtor Called.”<
}
void Print()
{Cout<<”The value is” <<VALUE<<ENDL;}
//ERROR**********found********* void-MyClass()
{Cout<<”DestruCtor Called.”<<ENDL;}
private:
int value;
}; int main()
{ MyChas objl
owl.Print();
MyClmss obj2(owl); obj2.Print();
retum 0;
查看答案
(1)MyClAss(int i=10)
(2)MyClAss(Eonst MyClAss&P)
(3)~MyClAss()
42主观题42 / 43
请使用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<<”职工号:”<<STAFF.GETID()<
cout<<”姓名:”<<STAFF.GETNAME()<<"
cout<<”部门:”<<STAFF.GETDEPARTMENT().GETNAME()<<"
cout<<”办公室:”<<STAFF.GETDEPARTMENT().GETOFFICE()<<ENDL;&NBSP;&NBSP;&NBSP; }
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; }
查看答案
(1)strCpy(this_>oFFiCE,oFFiCE);
(2)rEturn oFFiCE;
(3)DEpt(my_DEpt)
(4)DEpt.ChAnGEOFFiCETo(”311”);
43主观题43 / 43
请使用VC6或使用【答题】菜单打开考生文件夹proj3下的工程proj3,其中包含了类IntegerSet和主函数main的定义。一个IntegerSet对象就是一个整数的集合,其中包含0个或多个无重复的整数;为了便于进行集合操作,这些整数按升序存放在成员数组elem的前若干单元中。成员函数add的作用是将一个元素添加到集合中(如果集合中不存在该元素),成员函数remove从集合中删除指定的元素(如果集合中存在该元素)。请编写成员函数remove。在main函数中给出了一组测试数据,此时程序的正确输出结果应为:
2 3 4 5 27 28 31 66 75
2 3 4 5 6 27 28 31 56 75
2 3 4 5 6 19 27 28 31 66 75
3 4 5 6 19 27 28 31 66 75
3 4 5 6 19 27 28 31 66 75
要求:
补充编制的内容写在“//***********333***********”与“//***********666***********”之间,不得修改程序的其他部分。
注意:程序最后将结果输出到文件out.dat中。输出函数writeToFile已经编译为obj文件,并且在本程序中调用。
//IntegorSet.h
#ifndef INTEGERSET
#define INTEGERSET
#include
using namespace std;
const int MAXELEMENTS=100;
//集合最多可拥有的元素个数
class IntegerSet{
int elem[MAXELEMENTS];
//用于存放集合元素的数组
int counter; //用于记录集合中元素个数的计数器
puhlic:
IntegerSet():counter(0){}
//创建一个空集合
IntegerSet(int data[],int size);
//利用数组提供的数据创建一个整数集合
void add(int element);
//添加一个元素到集合中
void remeve(int element);
//删除集合中指定的元素
int getCount()const{return counter;}
//返回集合中元素的个数
int getElement(int i)const{retum elem[i];}//返回集合中指定的元素
void show()const;
};
void WriteToFile(char*);
#endif
//main.cpp
#include”IntegerSet.h”
#include
IntegerSet::IntegerSet(int data[],int size):counter(0){
for(int i=0;i<SIZE;I++)
add(data[i]);
}
}
void IntegerSet::add(int element){
int j;
//从后往前寻找第一个小于等于element的元素
for(j=counter;j>0;j-)
if(element>=elem[j一1])break;
//如果找到的是等于element的元素,说明要添加的元素已经存在,直接返回
if(j>0)
if(element==elem[j-1])return;
//如果找到的是小于element的元素,j就是要添加的位置
//该元素及其后面的元素依次后移,腾出插入位置
for(int k=counter;k>j;k一)
elem[k]=elem[k一1];
elem[j]=element;//将element插入到该位置
counter++; //计数器加l
}
void IntegerSet::remove(int element){
//***************333***************
//***************666***************
void IntegerSet::show()const{
for(int i=0;i<GETCOUNT();I++)
cout<<SETW(4)<
cout<
}
int main(){
int d[]={5,28,2,4,5,3,2,75,27,66,31};
IntegerSet S(d,11);S.show();
S.add(6); s.show();
S.add(19); S.show();
S.remove(2); s.show();
S.add(4); S.show();
writeToFile(””);
return 0;
}
查看答案
For(int i=0:i<CountEr;i++)
//遍历整个集合(数组elem)
if(element==elem[i])
//女il果element等于elem[i]
{
for(intj=i;j<counter-1;j++)
//从i开始遍历集合elem
etem[j]=elem[j+1];
//把elemi i+1]赋值给elem[j]
counter--;//elem长度自减
re|urn;//返吲
← 上一卷下一卷 →