国家二级(C++)机试模拟试卷496
选择题
1.阅读以下程序:
#include<iostream.h>
void maim()
{
static int a[][2]={5,3,1,2};
int i,j,s1=0;
for(i=0;i<2;i.++)
fort(j=0;j<2.j++)
{
if(i==j)
s1=s1+a[i][j];
}
cout<<s1<<endl;
}
则该程序的输出结果为( )。(B)
A. 6
B. 7
C. 8
D. 9
解析:程序中“staticint a[][2]={5,3,1,2};”定义了一个2*2的整型矩阵。两个for循环读取数组元素。“if(i==j)”语句中的条件是取矩阵的正对角线上的元素。对角线上的元素为5,2,所以“sl=sl+a[i][i]”的计算结果为7。
2.设有以下定义和程序:
#include
class TestClass 1
{
public:
void showl0
{
cout<<“TestClassl”<<endl;
}
};
class Test Class2:TestClass1
{
public:
void show2()
{
cout<<”TestClass2”<<endl;
}
}:
class TestClass3:prOtected YestClass2
{
public:
void show3(1
{
cout<<”TestClass 3”<<endl;
}
};
void main()
{
TestClassl objl:
TestClass2 obj2;
TestClass3 obj3;
}
则以下小合语法的调用语句是( )。(C )
A. obj1.showl0;
B. obj2.Showl0;
C. obj3.showl0;
D. obj2.show20;
解析:TestClass1为FestClass2的私有基类,所以派生类TestClass2中继承过来的show1()为私有的。TestClass3为TestClass2的受保护派生类。所以TestClass3定义的对象不能访问TestClass中的showl()。
3.下列程序在构造函数和析构函数中申请和释放类的数据成员int*a,申请时使用形参b初始化a,横线处应填写的语句是( )。
class A
{
public:
A(int b);
~A();
private:
int*a;
};
A::A(int b)
{
________;
}
A::~A()
{
delete a;
}(A)
A. a=new int(b)
B. b=new int(a)
C. a=int(b)
D. b=int(a)
解析:C++中new和delete的使用有如下几种方式:①a=new int;delete a;②a=new int(10);delele a;③a=new int[10];delete[]a;。
4.有如下程序:
#include
using namespace std;
class AA{
int n:
public:
AA(int k):n(k){}
int get(){retum n;}
int getOconst{retum n+1;}
};
int main()
{
AA a(5);
const AA b(6);
cout<<a.get0<<b.get();
retum 0:
}
执行后的输出结果是( )。(B )
A. 55
B. 57
C. 75
D. 77
解析:语句AAa(5)调用的是AA(/ntk):n(k){},a.get()调用int get(){return n;},结果会输出5:而常对象const AA b(6),b.get()调用的是intget()const{return+1;},会输出结果7。
5.有如下程序:
#include
using namespace std;
class Base1
{
public:
Basel(int d){cout<<d;}
~Basel(){}
}; i
class Base2
{
public:
Base2(int d){cout<<d;}
~Base2(){}
};
class Derived:public Base1,Base2
{
public:
Derived(int a,int b,int C,int d):Base1(b),Base2(a),b1(d),b2(C){}
private:
int b1:
int b2:
};
int main()
{
Derived d(1,2,3,4);
return 0;
}
执行这个程序的输出结果是( )。(D)
A. 1234
B. 2134
C. 12
D. 21
解析:本题考查派生类的构造函数和析构函数,在定义一个派生类的对象时,先调用基类的构造函数,然后再执行派生类的构造函数,对象释放时,先执行派生类的析构函数,再执行基类的
本文档预览:3600字符,共18693字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载