国家二级(C++)机试模拟试卷514
选择题
1.有如下程序:
int x=3;
do {
x-=2;
cout<<x;
} while(!(–x));
执行这个程序的输出结果是( )。(C)
A. 1
B. 30
C. 1-2
D. 死循环
解析:本题考查do…while语句,执行do…while语句时,先执行循环体内的语句,然后判断while中表达式的值,表达式为非零时,返回重新执行循环体语句。在本题中,先执行循环体内的语句,输出1,然后判断表达式,为非零,且此时x为0;再次执行循环体时,输出-2,然后判断表达式为0,不执行,退出,所以答案为C。
2.分析下面程序,该程序的运行结果是( )。
#include
class TestClass
}
public:
static int m;
TestClass ()
{
m++;
{
TestClass(int n)
{
m=n;
}
static void test()
{
m++;
}
};
int TestClass∷m=0;
void main()
{
TestClass A;
TestClass B(3);
A.test();
TestClass∷test();
cout<<\\(C)
A. m=3
B. m=4
C. m=5
D. m=6
解析:由主函数main入手,首先定义TestClass对象A,B:对象B构造函数值为3,构造函数中m++,所以这时m=4。主函数中调用A.test(),因为“static int m;”,m被定义为类TestClass静态成员变量,当它的值改变后,则在各对象中这个数据成员的值都同时改变了。所以这里执行“A.test();”中的m为前面进行加1操作后的4,即m现在的值为5。
3.以下程序的输出的结果是( )。
#inelude
void main()
{
int a,b,C,d(5);
e=2,c+=10;
a=b=10:
a*=2:
b/=2:
c%=2;
cout<<a<<“,”<<b<<“,”<<c<<endl;
}(A )
A. 20,5,0
B. 20,7,0
C. 20,5,1
D. 5,20,0
解析:c+=10使得c=12;a=b=10,a*=2使得a=20;b/=2,b=10/2,使得b=5;c=12%2=0,所以输出值20,5,0。
4.派生类的构造函数的成员初始化列表中,不能包含( )。(C )
A. 基类的构造函数
B. 派生类中子对象的初始化
C. 基类中子对象的初始化
D. 派生类中一般数据成员的初始化
解析:在定义派生类的构造函数时,除了对自己的数据成员进行初始化外,还必须负责调用基类的构造函数使基类的数据成员得以初始化。如果派生类中还有子对象,还应包含对子对象初始化的构造函数。
5.下列选项中,不属于“软件危机”产生的主要原因的是( )。(A)
A. 计算机硬件发展速度缓慢致使软件开发受限
B. 软件开发过程中很难进行质量管理和进度控制
C. 随着问题的复杂度增加,软件开发效率下降
D. 对软件需求分析的重要性认识不够
解析:软件危机产生的主要原因是选项B、C、D,不包括选项A。
6.有如下程序:
#include<iostream>
using narnespace std;
classA
{
public:
A(){cout<<’’A’’;}
};
class B { public:B(){cout<<’’B’’;}};
class C:public A
{
B b;
public:
C0{cout<<’’C’’;}
};
intmain(){C obj;return 0;}
执行后的输出结果是( )。(A)
A. ABC
B. BAC
C. ACB
D. CBA
解析:C++程序中的执行子类,首先执行基类的构造函数,然后执行数据成员类的构造函数,最后执行子类本身的构造函数,所以输出结果为ABC。
7.以下关键字不能用来声明类的访问权限的是( )。(B)
A. public
B. static
C. protected
D. private
解析:类的成员访问权限有3种:public(公用)、protected(保护)、private(私有)。
8.在E-R图中,用来表示实体联系的图形是( )。(C)
A. 椭圆形
B. 矩形
C. 菱形
D. 三角形
解析:在E-R图中实体集用矩形,属性用椭圆,联系用菱形。
9.下列关于运算符重载的描述中,正确的是( )。(A)
A. 运算符重载为成员函数时,若参数表中无参数,重载的是一元运算符
B. 一元运算符只能作为成员函数重载
C. 二元运算符重载为非成员函数时,参数表中有一个参数
D. C++中可以重载所有的运算符
解析:运算符重载为成员函数时,会省略一个参数,如果无参数,表明是一元运算符。一元运算符既可以作为成员函数重载,也可以作为非成员函数重载。二元运算符如果作为非成员函数,则参数表中必须有两个参数。C++有5个运算符不能重载,它们是:.(成员访问运算符)、.*(成员指针访问运算符)、::(域运算符)、sizeof(长度运算符)和?:(条件运算符)。故本题答案为A。
10.有如下程序:
#include
using namespace std;
class MyClass{
public:
MyClass(int i=0){cout<<l;}
MyClass(const MyClass&x){cout<<2;}
MyClass&operator:(const MyClass&x){cout<<3;re
本文档预览:3600字符,共19077字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载