国家二级(C++)机试模拟试卷282
选择题
1.下面是重载为非成员函数的运算符的函数原型,其中错误的是( )。(C)
A. Fraction operator+(Fraction,Fraction);
B. Fraction operator-(Fraction);
C. Fraction&operator=(Fraction&,Fraction);
D. Fraction&operator+=(Fraction&,Fraction);
解析:本题考查四种运算符作为非成员函数的重载的使用方法,根据重载规则,本题答案为c,c项正确原型为:Fraction operator=(Fraction&)。
2.关于函数重载,下列叙述中错误的是( )。(C)
A. 重载函数的函数名必须相同
B. 重载函数必须在参数个数或类型上有所不同
C. 重载函数的返回值类型必须相同
D. 重载函数的函数体可以有所不同
解析:所谓函数重载是指同一函数名可以对应多个函数实现。进行函数重载时,要求同名函数在参数个数上不同,或者参数类型上不同。但函数的返回类型不能作为判断重载的依据。
3.下面关于算法的叙述中,正确的是( )。(B)
A. 算法的执行效率与数据的存储结构无关
B. 算法的有穷性是指算法必须能在执行有限个步骤之后终止
C. 算法的空间复杂度是指算法程序中指令(或语句)的条数
D. 以上三种描述都正确
解析:算法在运行过程中需辅助存储空间的大小称为算法的空间复杂度。算法的有穷性是指一个算法必须在执行有限的步骤以后结束。
4.有如下程序:
#include
using namespace std;
class Instrument {
public:
virtual void Display()=0;
};
class Piano:public Instrument {
public:
void Display(){/*函数体略*/}
};
int main(){
Instrument s;
Instrument *p=0;
//…;
return 0;
}
下列叙述中正确的是( )。(B)
A. 语句“Insturment *p=0;”编译时出错
B. 语句“Instrument s;”编译时出错
C. 类Piano中的Display函数不是虚函数
D. 类Instrument是一个虚基类
解析:本题考查纯虚函数和抽象类,纯虚函数是在声明虚函数时被“初始化”为0的函数,包含纯虚函数的类为抽象类,抽象类不能被实例化,所以语句“Instrument s;”在编译时出错。
5.假定MyClass为一个类,则该类的拷贝构造函数的声明语句为( )。(B)
A. MyClass(MyClass x);
B. MyClass(MyClass&x);
C. MyClass(&x);
D. MyClass(x);
解析:拷贝构造函数也是构造函数,所以函数名字为MyClass,但它只有一个参数,这个参数是本类的对象,即x;而且采用对象的引用的形式,也就是&x。所以本题答案是B)。
6.关于运算符重载,下列表述中正确的是( )。(C)
A. C++已有的任何运算符都可以重载
B. 运算符函数的返回类型不能声明为基本数据类型
C. 在类型转换符函数的定义中不需要声明返回类型
D. 可以通过运算符重载来创建C++中原来没有的运算符
解析:重载运算符的规则如下:
①C++不允许用户自己定义新的运算符,只能对已有的C++运算符进行重载;
②C++不能重载的运算符只有5个;
③重载不能改变运算符运算对象的个数;
④重载不能改变运算符的优先级和结合性;
⑤重载运算符的函数不能有默认的参数;
⑥重载的运算符必须和用户定义的自定义类型的对象一起使用,至少应有一个是类对象,即不允许参数全部是C++的标准类型。故本题答案为C。
7.以下程序的执行结果是( )。
#include
class TestC lass2
{
public:
TestClass2(){};
TestClass2(int i,int j);
void printb0;
private:
int a,b;
);
class TestClass 1
{
public:
TestClassl(){}
TestClass 1 fint i,int j);
void printa();
private:
TestClass2 c:
};
TestClass 1::TestClass I(int i,int j):c(i,j)
{}
void TestClass 1::printa()
{
c.printb0;
}
TestClass2::TestClass2(int i,int j)
{
a=i:
b=j;
}
void TestClass2::printb()
{
cout<<“a=”<<a<<\\(C )
A. a=7,b=8
B. a=8,b=7
C. a=7,b=9
D. a=8,b=9
解析:由主函数main入手,定义了restClassl的对象m,其中参数为7和9。“m.printa();”中TestClassl中printa为\\
8.开发软件所需高成本和产品的低质量之间有着尖锐的矛盾,这种现象称做( )。(B)
A. 软件矛盾
B. 软件危机
C. 软件藕合
D. 软件产生
解析:随着计算机软件规模的扩大,软件本身的复杂性不断增加,研制周期显著变长,正确性难以保证,软件开发费用上涨,生产效率急剧下降,从而出现了入们难以控制软件发展的局面,即所谓的“软件危机”。
9.下列数据结构中,属于非线性结构的是( )。(C)
A. 循环队列
B. 带链队列
C. 二叉树
D. 带链栈
解析:树是简单的非线性结构,所以二叉树作为树的一种也是一种非线性结构。
10.有如下程序:
#include
using namespace std;
本文档预览:3600字符,共17298字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载