计算机二级C++上机练习题及答案

  下半年的计算机等级考试已经快到了,对于考生来说,C++绝对是一个难关。滕门教育计算机等级考试栏目为大家分享“计算机二级C++上机练习题及答案”,一起来做做吧。

  计算机二级C++上机练习题及答案

  1下列有关内联函数的叙述中,正确的是( )。

  A.内联函数在调用时发生控制转移

  B.内联函数必须通过关键字inline来定义

  C.内联函数是通过编译器来实现的

  D.内联函数函数体的最后一条语句必须是return语句

  参考答案:C

  参考解析:一般函数进行调用时,要将程序执行权转到被调用函数中,然后再返回到调用它的函数中;而内联函数在调用时,是将调用表达式用内联函数体来替换,所以在调用时不发生控制转移。在类内部实现的函数都是内联函数,可以不用inline定义;只有函数外部定义的内联函数才必须加关键字inline。编译系统并非对内联函数必须使用内联,而且根据具体情况决定。内联函数不是必须要有返回值的。

  2语句int*P=&k;定义了指针P,与这个语句等效的语句序列是( )。

  A.int* p;P=&k;B.int * P;P=k;C.int * p;* P=&k;D.int * p;* P=k;

  参考答案:A

  参考解析:本题考查指针和地址,题目中定义了一个指向变量k的一个指针p,那么与题目中等效的表达式A选项,即先定义一个指向整型的指针,然后指向k的地址。

  3有如下程序:

  #include

  using namespace std;

  class A

  {

  public:

  A(){cout<<”A”;}

  -A(){cout<<”-A”;}

  };

  class B:public A

  {

  A*P;

  public:

  B(){cout<<”B”;P=new A();}

  -B(){cout<<”~B”;delete p;}

  };

  int main()

  {

  B obj;

  return 0;

  }

  执行这个程序的输出结果是( )。

  A.BAA~A~B~AB.ABA~B~A~AC.BAA~B~A~AD.ABA~A~B~A

  参考答案:B

  参考解析:本题考查派生类的构造函数和析构函数,在定义一个派生类的对象时,先调用基类的构造函数,然后再执行派生类的构造函数。对象释放时,先执行派生类的析构函数,再执行基类的析构函数。所以本题答案为B。

  4有如下类定义:

  class AA

  {

  im a:

  public:

  int getRef()const{return&a;}//①

  int getValue()const{return a;}//②

  void set(int n)const{a=n;}//③

  friend void show(AA aA.const{cout<

  };

  其中四个函数的定义中正确的是(  )。

  A.①B.②C.③D.④

  参考答案:B

  参考解析:本题考查常成员函数,常成员函数只能引用本类中的数据成员,而不能修改它。所以本题答案为B。

  5若要对Data类中重载的加法运算符成员函数进行声明,下列选项中正确的是( )。

  A.Data+(DatA.;B.Data operator+(DatA.;C.Data+operator(DatA.;D.operator+(Data,DatA.;

  参考答案:B

  参考解析:根据重载加法运算符的格式,只有B选项正确。

  6有如下数组声明:int num[10];,下标值引用错误的是( )。

  A.num[10]B.num[5]C.num[3]D.hum[o]

  参考答案:A

  参考解析:数组定义中的数字指的是数组的大小,而下标是从0开始的,所以本题中数组的最后一个元素是num[9]。

  7将前缀运算符“–”重载为非成员函数,下列原型中能正确用于类中说明的是(  )。

  A.DeCr&operator–(int);B.DeCr operator–(DeCr&,int);C.friend DeCr&operator–(DeCr&);D.friend DeCr operator–(DeCr&,int);

  参考答案:C

  参考解析:把“–”运算符重载为非成员(友元)函数格式:friend<返回类型>operator–()是前缀的格式;friend<返回类型>operator–(int)是后缀的格式。当然也可以有参数如题中C选项所示。

  8如果派生类以proteCted方式继承基类,则原基类的proteCted成员和publiC成员在派生类中的访问属性分别是( )。

  A.publiC和publiCB.publiC和proteCtedC.proteCted和publiCD.proteCted和proteCted

  参考答案:D

  参考解析:本题考查保护继承中派生类对基类的访问属性,在受保护继承中,基类的公用成员和保护成员在派生类中成了保护成员,其私有成员仍为基类私有,所以本题答案为D。

  9在函数中,可以用aut0、extem、register和static这四个关键字中的一个来说明变量的存储类型,如果不说明存储类型,则默认的存储类型是(  )。

  A.autoB.externC.registerD.static

  参考答案:A

  参考解析:变量的存储方法分为静态存储和动态存储两大类,包含4种:自动的(auto)、静态的(static)、寄存器的(register)、外部的(extem)。变量如果没有说明存储类型,那么默认就是aut0。

  10下列程序的输出结果是( )。

  #include

  int rain(iltl a,int B)

  {

  if(a

  else retum b;

  retum 0;

  }

  void main()

  {

  eout<

  }

  A.0B.1C.2D.3

  参考答案:B

  参考解析:本题考查的是函数的调用,第一次调用min(2,3),因为2<3,所以返回值为2,第二次调用min(1,2),因为l<2,所以返回1。