国家二级(C++)机试模拟试卷300
选择题
1.冒泡排序算法在最好的情况下的元素交换次数为( )次。(A)
A. 0
B. 1
C. 2
D. 3
解析:根据冒泡排序算法的思想:若待排序的初始序列为正序序列,则只需进行一趟排序,在排序过程中进行n-1次关键字间的比较,且不移动和交换记录,这种情况是冒泡排序的最好情况,故冒泡排序算法在最好的情况下的元素交换次数为0次。
2.执行语句:{cout<<setfill(’*’)<<setw(10)<<setfill(’#’)<<left<<123<<“OK”<<endl;return ();)后将输出( )。(B)
A. 123*******OK
B. 123#######0K
C. 123********OK********
D. 123######OK#######
解析:cout.fill()用于设置或返回输出的填充字符,默认是空格,fill()函数的设置一直有效,直到下一个fill()函数改变该值为止。setw(int n)作用是设置输入输出的宽度,此设置只对一次输入或输出有效,在完成一次数据的输入或输出后,宽度设置自动恢复为0。注意:默认为输出数据在指定宽度内右对齐。
3.在函数中,可以用auto、extern、register和static这四个关键字中的一个来说明变量的存储类型,如果不说明存储类型,则默认的存储类型是( )。(A)
A. auto
B. extem
C. register
D. static
解析:变量的存储方法分为静态存储和动态存储两大类,包含4种:自动的(auto)、静态的(static)、寄存器的(register)、外部的(extern)。变量如果没有说明存储类型,那么默认就是auto。
4.下列不能作为类的成员的是( )。(B)
A. 自身类对象的指针
B. 自身类对象
C. 自身类对象的引用
D. 另一个类的对象
解析:类的定义,如果有自身类对象,会使其循环定义,选项B)错误。在类中具有自身类的指针,可以实现链表的操作,当然也可以使用对象的引用,类[],可以何另一个类的对象,即成员对象。
5.关于函数重载,下列叙述中错误的是( )。(C)
A. 重载函数的函数名必须相同
B. 重载函数必须在参数个数或类型上有所不同
C. 重载函数的返回值类型必须相同
D. 重载函数的函数体可以有所不同
解析:所谓函数重载是指同一个函数名可以对应多个函数的实现。每种实现对应一个函数体,这些函数的名字相同,其参数类型或个数不同,但不能出现函数返回值类型不同而参数类型和个数完全相同的重载。所以本题答案为C。
6.下面叙述错误的是( )。(D)
A. 对基类成员的访问能力在private派生类中和public派生类中是相同的
B. 基类的private成员在public派生类中不可访问
C. 基类中的public成员在protected派生类中是protected的
D. 基类中的public成员在protected派生类中仍然是public的
解析:基类的公有成员和保护成员在保护派生类中都成了保护成员,其私有成员仍为基类私有。
7.面向对象方法中,继承是指( )。(D)
A. 一组对象所具有的相似性质
B. 一个对象具有另一个对象的性质
C. 各对象之间的共同性质
D. 类之间共享属性和操作的机制
解析:继承是面向对象的方法的一个主要特征,是使用已有的类的定义作为基础建立新类的定义技术。广义的说,继承是指能够直接获得已有的性质和特征,而不必重复定义它们,所以说继承是指类之间共享属性和操作的机制。
8.有如下函数模板定义:
template<typename T1,typename T2>T1-FUN(T2 n){return n*5,0;}
若要求以int型数据9作为函数实参调用该模板,并返回一个double型数据,则该调用应表示为( )。(C)
A. FUN(9)
B. FUN
C. FUN(9)
D. FUN(double)
解析:函数返回类型是double型,则T1为double型,T2为int型才符合函数模板的定义。
9.有如下类定义:
class Vechicle{ //基类
public:
Vechicle(string s):name(S){}
protected:
string name;
};
{ //Vechicle的派生类
public:
Bicycle(string name):Vechicle(name){}
};
横线处缺失部分为( )。(C)
A. class Vechicle:public Bicycle
B. class Bicycle:class Vechicle
C. class Bicycle:public Vechicle
D. class Bicycle:public class Vechicle
解析:本题考查如何定义派生类以及派生类对基类成员的访问,声明派生类的一般形式为:
class派生类名:[继承方式]基类名题目中只有公有继承才能使用基类中name成员,所以C选项正确。
10.有如下程序:
#include<iostream>
#include<string>
using namespace std;
class Instrument{
public:
InStrument(string t=”乐器”,string n=”无名”):type(t),Dame(n){}
virtual string GetType()const{return”乐器”;}
virtual string GetName()const{return”无名”;}
protected:
string type,name;
};
class Piano:public Instrument{
public:
Piano(string n,string t=”钢琴”):Instrument(t,n){}
string GetType()const{return”钢琴”;}
string GetName()const{retum name;}
};
int main(){
Imtnnnent*pi=new Piano(”星空”);
cout<<pi一>GetType()<<’一’<<pi一>GetName();
delete pi;
return 0;
}
运行时的输
本文档预览:3600字符,共19192字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载