计算机类 二级 C++
2014年全国计算机等级《二级C++》考前押密试卷(1) 43 题 含答案 C++
1 单选题 1 / 43
假定int类型变量占用两个字节,其有定义int x[10]={0,2,4};,则数组x在内存中所占字节数是( )。
A 3 B 6 C 10 D 20
查看答案 D. 20
2 单选题 2 / 43
有两个关系R,S如下:
由关系R通过运算得到关系s,则所使用的运算为( )。
A 选择 B 投影 C 插入 D 连接
查看答案 B. 投影
3 单选题 3 / 43
对于循环队列,下列叙述中正确的是( )。
A 队头指针是固定不变的 B 队头指针一定大于队尾指针 C 队头指针一定小于队尾指针 D 队头指针可以大于队尾指针,也可以小于队尾指针
查看答案 D. 队头指针可以大于队尾指针,也可以小于队尾指针
4 单选题 4 / 43
下列有关函数重载的叙述中,错误的是( )。
A 函数重载就是用相同的函数名定义多个函数 B 重载函数的参数列表必须不同 C 重载函数的返回值类型必须不同 D 重载函数的参数可以带有默认值
查看答案 C. 重载函数的返回值类型必须不同
5 单选题 5 / 43
有三个关系R S和T如下
则由关系R和S得到关系T的操作是( )。
A 自然连接 B 并 C 交 D 差
查看答案 D. 差
6 单选题 6 / 43
下面关于类和对象的描述中,错误的是( )。
A 类就是C语言中的结构体类型,对象就是C语言中的结构体变量 B 类和对象之间的关系是抽象和具体的关系 C 对象是类的实例,一个对象必须属于一个已知的类 D 类是具有共同行为的若干对象的统一描述体
查看答案 A. 类就是C语言中的结构体类型,对象就是C语言中的结构体变量
7 单选题 7 / 43
有如下程序: #inClude using namespaCe std; Class test{ private: int a; publiC: test( ){Cout<<”ConstruCtor”<<ENDL;}&NBSP;&NBSP;&NBSP; test(int A.{Cout<<a<<endl;} test(Const test&_test){ a=test.a: Cout<<”Copy ConstruCtor”<<ENDL:&NBSP;&NBSP;&NBSP; } test( ){Cout<<”destruCtor”<<ENDL;} }; int main( ){ test A(3); return 0; } 执行这个程序的输出结果是( )。
A 3 B ConstruCtor destruCtor C Copy ConstruCtor destruCtor D 3 destruCtor
查看答案 D. 3 destruCtor
8 单选题 8 / 43
有如下函数模板: template T east(U u)i return u;} 其功能是将U类型数据转换为T类型数据。已知i为int型变量,下列对模板函数cast的调用中正确的是( )。
A cast(i); B cast<>(i); C east(i); D east(i);
查看答案 D. east(i);
9 单选题 9 / 43
下面程序的运行结果是( )。 #include void fun(int *a,int *B. { int x=*a: *a=*b;*b=X; cout<<*a<<*b<<””: void main() { int X=1,Y=2; fun(&x,&y); cout<<X<<Y< }
A 12 12 B 12 21 C 21 12 D 21 21
查看答案 D. 21 21
10 单选题 10 / 43
在C++语言中,打开一个文件就是将这个文件与一个( )建立关联。
A 流 B 类 C 结构 D 对象
查看答案 A. 流
11 单选题 11 / 43
下列语句中,错误的是( )。
A const int buffer:256; B const int temp; C const double*point; D const double*rt=new double(5.5);
查看答案 B. const int temp;
12 单选题 12 / 43
下列程序的输出结果为( )。 #include void main() { char*a[]={”hell0”,”the”,”world”}; char** pa = a: pa++; cout<<*pa< }
A hello B the C world D hellotheworld
查看答案 B. the
13 单选题 13 / 43
关于运算符重载,下列表述中正确的是( )。
A C++已有的任何运算符都可以重载 B 运算符函数的返回类型不能声明为基本数据类型 C 在类型转换符函数的定义中不需要声明返回类型 D 可以通过运算符重载来创建C++中原来没有的运算符
查看答案 C. 在类型转换符函数的定义中不需要声明返回类型
14 单选题 14 / 43
可以用P.a的形式访问派生类对象P的基类成员a,其中a是( )。
A 私有继承的公有成员 B 公有继承的私有成员 C 公有继承的保护成员 D 公有继承的公有成员
查看答案 D. 公有继承的公有成员
15 单选题 15 / 43
在下列原型所示的C++函数中,按“传值”方式传递参数的是( )。
A void fl(int X); B void t2(int*X); C void f3(Const int*X); D void f4(int&x);
查看答案 A. void fl(int X);
16 单选题 16 / 43
以下关键字不能用来声明类的访问权限的是( )。
A public B static C protected D private
查看答案 B. static
17 单选题 17 / 43
下面程序的运行结果为( )。 #include class A { int hum; public: A(int i){nuln=i;} A(A&A.{num=a.num十+;} void print(){eout( void main() A a(1),b(A.; a.print(); A print();
A 11 B 12 C 21 D 22
查看答案 C. 21
18 单选题 18 / 43
下面是重载为非成员函数的运算符的函数原型,其中错误的是( )。
A Fraction operator+(Fraction,Fraction); B Fraction operator一(Fraction); C Fraction&operator=(Fraction&,Fraction); D Fraction&operator+=(Fraction&,Fraction);
查看答案 C. Fraction&operator=(Fraction&,Fraction);
19 单选题 19 / 43
下列语句中错误的是( )。
A Const int a; B Const int a=10; C Const int * point=0; D Const int * point=new int(10);
查看答案 A. Const int a;
20 单选题 20 / 43
下列关于函数的描述中,错误的是( )。
A 函数可以没有返回值 B 函数可以没有参数 C 函数可以是一个类的成员 D 函数不能被定义为模板
查看答案 D. 函数不能被定义为模板
21 单选题 21 / 43
下列语句都是程序运行时的第1条输出语句,其中一条语句的输出效果与其他三条语句不同,该语句是( )。
A cout<<INTERNAL<<12345; B eout<<LEFT<<12345; C cout<<RIGHT<<12345; D cout<<SETW(6)<
查看答案 D. cout<<SETW(6)<
22 单选题 22 / 43
有三个关系R、S和T如下:
则由关系R和S得到关系T的操作是( )。
A 自然连接 B 差 C 交 D 并
查看答案 B. 差
23 单选题 23 / 43
有如下程序: #include using namespace std; class VAC{ public: intf()const{return 3;} int f(){retum 5;} }; int main() { VAC vl; const VAC v2; cout<<VL.F()< return 0; } 执行这个程序的输出结果是( )。
A 53 B 35 C 55 D 33
查看答案 A. 53
24 单选题 24 / 43
一间宿舍可住多个学生,则实体宿舍和学生之间的联系是( )。
A 一对一 B 一对多 C 多对一 D 多对多
查看答案 B. 一对多
25 单选题 25 / 43
下列关于二叉树的叙述中,正确的是( )。
A 叶子结点总是比度为2的结点少一个 B 叶子结点总是比度为2的结点多一个 C 叶子结点数是度为2的结点数的两倍 D 度为2的结点数是度为1的结点数的两倍
查看答案 B. 叶子结点总是比度为2的结点多一个
26 单选题 26 / 43
有以下语句,则对a数组元素的引用不正确的是(0≤i≤9)( )。 int a[10]={0,1,2,3,4,5,6,7,8,9},*P=a;
A a[P-a] B *(&a[i]) C P[i] D *(*(a+i))
查看答案 D. *(*(a+i))
27 单选题 27 / 43
下列程序的运行结果为( )。 #include void print(double A. { cout<<++a: } void print(int atint B. { cout<<B< } void main() { print(1.2); eout<<””: print(3,4); }
A 1.2 34 B 2.2 34 C 1.2 43 D 2.2 43
查看答案 D. 2.2 43
28 单选题 28 / 43
存在定义int a[10],x,* pa;,若pa=&a[0],下列的( )选项和其他3个选项不是等价的。
A x=*pa; B x=*(a+1); C x=*(pa+l) D x=a[1];
查看答案 A. x=*pa;
29 单选题 29 / 43
下列叙述中正确的是( )。
A 循环队列有队头和队尾两个指针,因此,循环队列是非线性结构 B 在循环队列中,只需要队头指针就能反映队列中元素的动态变化情况 C 在循环队列中,只需要队尾指针就能反映队列中元素的动态变化情况 D 循环队列中元素的个数是由队头指针和队尾指针共同决定
查看答案 D. 循环队列中元素的个数是由队头指针和队尾指针共同决定
30 单选题 30 / 43
通常拷贝构造函数的参数是( )。
A 某个对象名 B 某个对象的成员名 C 某个对象的引用名 D 某个对象的指针名
查看答案 C. 某个对象的引用名
31 单选题 31 / 43
如果在表达式++x/y中,“++”是作为友元函数重载的,…/”是作为成员函数重载的,则该表达式还可为( )。
A (operator++(x)).operator/(Y) B (operator++(0)).operator/(Y) C operator/((operator++(x,0)),Y) D operator/((operator++(0)),Y)
查看答案 A. (operator++(x)).operator/(Y)
32 单选题 32 / 43
一个函数功能不太复杂但要求被频繁调用,应选用( )。
A 内联函数 B 重载函数 C 递归函数 D 嵌套函数
查看答案 A. 内联函数
33 单选题 33 / 43
数据库应用系统中的核心问题是( )。
A 数据库设计 B 数据库系统设计 C 数据库维护 D 数据库管理员培训
查看答案 A. 数据库设计
34 单选题 34 / 43
有如下程序: Class Base{ publiC: int data; }; Class Derivedl:publiC Base{}; Class Derived2:proteCted Base{}; int main( ) { Derivedl dl; Derived2 d2; dl.data=0;//① d2.data=0;//② retum 0; } 下列关于程序编译结果的描述中,正确的是( )。
A ①②皆无编译错误 B ①有编译错误,②无编译错误 C ①无编译错误,②有编译错误 D ①②皆有编译错误
查看答案 C. ①无编译错误,②有编译错误
35 单选题 35 / 43
下列关于基类和派生类关系的叙述中,正确的是( )。
A 每个类最多只能有一个直接基类 B 派生类中的成员可以访问基类中的任何成员 C 基类的构造函数必须在派生类的构造函数体中调用 D 派生类除了继承基类的成员,还可以定义新的成员
查看答案 D. 派生类除了继承基类的成员,还可以定义新的成员
36 单选题 36 / 43
结构化程序所要求的基本结构不包括( )。
A 顺序结构 B GOT0跳转 C 选择(分支)结构 D 重复(循环)结构
查看答案 B. GOT0跳转
37 单选题 37 / 43
将E—R图转换为关系模式时,实体和联系都可以表示为( )。
A 属性 B 键 C 关系 D 域
查看答案 C. 关系
38 单选题 38 / 43
下面是一个模板声明的开始部分: templatedouble…由此可知( )。
A 这可能是一个函数模板的声明 B 这可能是一个类模板的声明 C 这既可能是一个函数模板的声明,也可能是一个类模板的声明 D 这肯定是一个错误的模板声明
查看答案 A. 这可能是一个函数模板的声明
39 单选题 39 / 43
有如下程序: #include using namespace std; class AA{ int k; protected: int n; void setK(int k){this一>k=k;} public: void setN(int n){this一>n=n;} }; class BB:public AA{/*类体略*/}; int main() } BB X; A n=1;//1 B setN(2);//2 C k=3;//3 D setK(4);//4 return 0; } 在标注号码的四条语句中正确的是( )。
A 1 B 2 C 3 D 4
查看答案 B. 2
40 单选题 40 / 43
有如下头文件: int fl(); static int f2(); class MA{ public: int f3(); static int f4(); }; 在所描述的函数中,具有隐含的this指针的是( )。
A fl B f2 C f3 D f4
查看答案 C. f3
41 主观题 41 / 43
请使用VC6或使用【答题】菜单打开考生文件夹projl下的工程projl,该工程中包含程序文件main.epp,其中有类Door(“门”)和主函数main的定义。程序中位于每个“//ERROR****found ****”之后的一行语句有错误,请加以改正。改正后程序的输出结果应为: 打开503号门…门是锁着的,打不开。 打开503号门的锁…锁开了。 打开503号门…门打开了。 打开503号门…门是开着的,无须再开门。 锁上503号门…先关门...门锁上了。 注意:只修改每个“//ERROR***********found **********”下的那一行,不要改动程序中的其他内容。 #include using namespace std; class Door{ int Bum;//门号 bool closed;//true表示门关着 bool locked://true表示门锁着 public: Door(int nHm){ //ERROR***********found*********** nun=this一>ann: closed=locked=true: } bool isClosed()const{rehlrn closed;} //门关着时返回true,否则返回false bool isOpened()const{return!closed;} //门开着时返回true,否则返回false b001 isLocked()const{retum locked;} //门锁着时返回true,否则返回false bool isUnlocked()const{return!locked;} //门未锁时返回true,否则返回false void open(){ //开门 cout<<ENDL<<”打开”<<NNM< //ERROR***********found*********** if(closed) cout<<”门是开着的,无须再开门。”; else if(10cked) cout<<”门是锁着的,打不开。”; else{ closed=false; eout<<”门打开了。”; } } void close(){//关门 cout<<ENDL<<”关上”<<NUM< if(closed) cout<<”门是关着的,无须再关门。”; else{ closed=true; cout<<”门关上了."; } } //ERROR************found************ void lock()const{//锁门 cout<<ENDL<<”锁上”<<NUM< if(locked) cout<<”门是锁着的,无须再锁门。”; else{ if(!closed){ cout<<”先关门...”; closed=true; } locked=true: cout<<”门锁上了。”; } } wild unlock(){//开锁 cout<<ENDL<<”开”<<NUM< if(!locked) cout<<”门没有上锁,无须再开锁。”; else{ locked=false; cout<<”锁开了。”; } }; int main(){ Door door(503); door.open(); door.unlock(); door.open(); door.open(); floor.10ck(); return 0; }
查看答案 (1)this—>num=num; (2)iF(!ClosED) (3)voiD loCk(){
42 主观题 42 / 43
请使用VC6或使用【答题】菜单打开考生文件夹proj2下的工程proj2,该工程中包含一个程序文件 main.cpp,其中有类CPolygon(“多边形”)、CRectangle(“矩形”)、CTriangle(“三角形”)的定义。请在横线处填写适当的代码并删除横线,以实现上述类定义。该程序的正确输出结果应为: 注意:只能在横线处填写适当的代码,不要改动程序中的其他内容,也不要删除或移动“//****found****”。 #include {tout<<——< int area(void){return(width *height);} class CTriangle:public CPolygon{ int length;//三角形一边长 int height;//该边上的高 public: CTriangle(int l,int h):length(1),height(h){} //*********found********* int area(void){return(——)/2;} }; int main(){ CRectangle rect(4,5); CTriangle trgl(4,5); //*********found********* ______ *ppolyl,* ppoly2; ppolyl=&rect; ppoly2=&trgl; ppolyl->printarea(); ppoly2->printarea(); retun 0;
查看答案 (1)virtuAl int ArEA(voiD)=0; (2)ArEA() (3)lEnGth*hEiGht (4)CPolyGon
43 主观题 43 / 43
请使用VC6或使用【答题】菜单打开考生文件夹proj3下的工程proj3,其中声明的DataList类,是一个用于表示数据表的类。s0rt成员函数的功能是将当前数据表中的元素升序排列。请编写这个sort函数。程序的正确输出应为: 排序前:7,1,3,11,6,9,12,10,8,4,5,2 排序后:l,2,3,4,5,6,7,8,9,10,11,12 要求: 补充编制的内容写在“//********33********”与“//********666********”两行之问。不得修 改程序的其他部分。 注意:程序最后将结果输出到文件。ut.dat中。输出函数writeToFile已经编译为。obj文件,并且在本程序 调用。 //DataList.h #inClude using namespaCe std; Class DataList{//数据表类 int len; double*d: publiC: DataList(int len,double data[]=NULL);。DataList(){delete[]d;} int length(Constt retum len;}//数据表长度(即数据元素的个数) double getElement(int i)Const{return d[i];} void sort();//数据表排序 void show()Const;//显示数据表}. void writeToFile(Char*,Const DataList&).//main.Cpp #inClude”DataList.h” DataList::DataList(int len,double data[]):len(1en){ d=new double[1en]; for(int i_0;i<LEN;I++) d[i]=(data==NULL?0.0:data[i]); } void DataList::sort(){//数据表排序//********333******** //********666********} void DataList::show()Const{//显示数据表 for(int i=0;i<LEN一1;I++)COUT<<D[I]<<”,”;&NBSP;&NBSP;&NBSP; } int main(){ double S[]={7,1,3,11,6,9,12,10,8,4,5,2}; DataList list(12,S); Cout<<”排序前:”; list.show(); list.sort(); Cout<<ENDL<<”排序后:”;&NBSP; writeToFile(””,list); return 0; }
查看答案 For(inti=0;i<lErl;++i)//从头遍历数组D for(int j=i;j<len:++j) //从i+1处遍历数组d if(d[i]>d[j]) //d[j]和d[j]比较人,如果大于,就d[i]和d[j]值交换{inttemp=d[i]; //把临时整型变量temp赋值为cJ[i]d[i]=d[j]; //把d[j]赋值给d[i]d[j]=temp;//把temp值赋给d[j] }