国家二级(C++)机试模拟试卷509
选择题
1.若执行以下程序时从键盘上输入9,则输出结果是( )。
main()
{int n;
cin>>n;
if(n++<10)cout<<n<<endl;
else cout<<n–<<endl;
}(B)
A. 11
B. 10
C. 9
D. 8
解析:本题考查的是后置自增运算符的知识,这类题考生往往做错,主要原因是不能正确拆解。题中if语句可以拆解为:if(9<10),n+1=10,cout<<10<<endl;,自增所代表的加1操作要紧跟在原表达式后面,而不是原语句后面。
2.有如下程序:
#include
using namespace std;
class Base{
protected:
Base(){cout<<‘Base’;}
Base(char c){cout<<c;}
};
class Derived:public Base{
public:
Derived(char C{cout<<c;}
};
int main(){
Derived d(‘Derived’);
return 0:
}
执行这个程序屏幕上将显示输出( )。(C )
A. Derived
B. DerivedBase
C. BaseDerived
D. DerivedDerived
解析:派生类Derived由基类Base公有派生,在派生类构造函数声明时系统会自动调用基类的缺省构造函数。调用Derived d(Derived);后,执行类Derived构造函数的Derived(charc),系统自动调用基类的缺省构造函数Base(),输出字母Base;再执行派生类的构造函数Derived(char c),输出字母Derived。
3.在函数中,可以用auto、extern、register和static这四个关键字中的一个来说明变量的存储类型,如果不说明存储类型,则默认的存储类型是( )。(A)
A. auto
B. extem
C. register
D. static
解析:变量的存储方法分为静态存储和动态存储两大类,包含4种:自动的(auto)、静态的(static)、寄存器的(register)、外部的(extern)。变量如果没有说明存储类型,那么默认就是auto。
4.下面类的声明中的几个语句,正确的是(设定语句是主函数中的语句)( )。
class TestClass
{
private:
int data;
public:
TestClass(int g_data)
{
data=g_data;
}
void show(){cout<<data<<endl;}
};(A)
A. TestClass*p;
B. TestClass m;
C. TestClass.data=8;
D. TestClass.show();
解析:C++中,若没有类的显式声明构造函数则系统会为其提供一个默认的构造函数,若提供了构造函数则会将系统提供的默认的构造函数覆盖。调用构造函数时,实参必须与形参匹配。但是如果声明一个对象指针时,不是定义一个对象,不调用对象的构造函数。
5.在公有继承的情况下,允许派生类直接访问的基类成员包括( )。(B)
A. 公有成员
B. 公有成员和保护成员
C. 公有成员、保护成员和私有成员
D. 保护成员
解析:本题考查公用继承对基类成员的访问属性。在公用继承中,基类的公用成员和保护成员在派生类中保持原有的访问属性,其私有成员仍为基类私有。所以本题答案为B。
6.数据结构中,与所使用的计算机无关的是数据的( )。(C )
A. 存储结构
B. 物理结构
C. 逻辑结构
D. 线性结构
解析:数据的逻辑结构反映的是数据元素之间的逻辑关系,与使用的计算机无关。
7.有以下程序,输出结果( )。
#include
using namespace std;
class Complex
{
public:
Complex(double r=0,double i=0):re(r),im(i){)
double real()const{return re;}
double imagoconst{return im;)
Complex operator+(Complex c)const{return
Complex(re+c.re,im+c.im);}
private:
double re,im;
};
int main()
{
Complex a=Complex(1,1)+Complex(5);
cout<<a.real()<<’+’<<a.imag0<<’i’<<endl;
return 0:
}(C)
A. 6+i
B. 2i+5
C. 6+1i
D. 1i+5
解析:由主函数入手,调用“Complex a=Complex(1,1)+Complex(5): ”, 实际是“Complex a=Complex (1,1)+Complex(5,0); ”, 调用 “returnComplex(re+c.re,im+c.im),;”结果为:6+li。
8.关系表中的每一行记录称为一个( )。(B )
A. 字段
B. 元组
C. 属性
D. 关键码
解析:在关系表中,每一列称为一个属性,对应表中的一个字段;每一行称为一个元组,对应表中的一条记录。
9.以下程序的输出结果是( )。
#include
main()
{int m=5;
ifj(m++>5)
cout<<m;
else cout<<m–;
}(B)
A. 7
B. 6
C. 5
D. 4
解析:此题中,因为m++>5成立(此时m的值变为6),所以执行语句cout<<m;输出结果为6。
10.类的析构函
本文档预览:3600字符,共15747字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载