二级C++笔试-408
(总分89,考试时间90分钟)
一、选择题
1. 在设计程序时,应采纳的原则之一是(    )。
    A) 不限制goto语句的使用    B) 减少或取消注解行
    C) 程序越短越好    D) 程序结构应有助于读者理解
2. 若已定义的函数有返回值,则以下关于该函数调用的叙述中错误的是(    )。
    A) 函数调用可以作为独立的语句存在
    B) 函数调用可以无返回值
    C) 函数调用可以出现在表达式中
    D) 函数调用可以作为一个函数的形参
3. 类MyClass的定义如下:
    class MyClass
   
    public:
      MyClass()
     
          value=0;
     
      setVariable(int i)
     
          value=i;
     
    private:
      int value;
    ;
    则以下各项对如下语句序列的描述中,正确的是(    )。
    MyClasS  *p,my;    p=&my;
    A) 语句“p=&my;”是把对象my赋值给指针变量p
    B) 语句“MyClass *p,my;”会调用两次类MyClass的构造函数
    C) 对语句“*p.SetVariable(5)”的调用是正确的
    D) 语句“p->SetVariable(5)”与语句“my.SetVariable(5)”等价
4. 执行语句序列:
    int i=0;while (i<25)i+=3;cout<<i;
输出结果是______ 。
    A) 24    B) 25    C) 27    D) 8
5. 关于在调用模板函数时模板实参的使用,下列表述正确的是(    )。
    A) 对于虚拟类型参数所对应的模板实参,如果能从模板函数的实参中获得相同的信息,则都可以省略
    B) 对于虚拟类型参数所对应的模板实参,如果它们是参数表中的最后的若干个参数,则都可以省略
    C) 对于虚拟类型参数所对应的模板实参,若能够省略则必须省略
    D) 对于常规参数所对应的模板实参,任何情况下都不能省略
6. 线性表的顺序存储结构和线性表的链式存储结构分别是(    )。
A) 顺序存取的存储结构、顺序存取的存储结构
B) 随机存取的存储结构、顺序存取的存储结构
C) 随机存取的存储结构、随机存取的存储结构
D) 任意存取的存储结构、任意存取的存储结构
7. 下列说法中错误的是(    )。
    A) 公有继承时基类中的public成员在派生类中仍是public成员
    B) 私有继承时基类中的protected成员在派生类中仍是protected成员
    C) 私有继承时基类中的public成员在派生类中仍是private成员
    D) 保护继承时基类中的public成员在派生类中仍是protected成员
8. 下面的哪个选项不能作为函数的返回类型?
    A) void    B) int    C) new    D) long
9. 有如下两个类定义:
    class AA;
    class BB
    AA v1,*v2;
    BB v3;
    int *v4;
    ;
    其中有一个成员变量的定义是错误的,这个变量是(    )。
    A) v1    B) v2    C) v3 D) v4
10. 有如下语句序列;
    int k=0;
    dok+=5;couk<<'$';)  while(k<19);
    while(k-->0)cout<<'*';
    执行上面的语句序列输出字符$和。的个数分别是
A)4和20    B)5和20    C)4和21    D)5和21
11. 分层DFD图是一种比较严格又易于理解的描绘方式,它的顶层图的作用在于 ______。
    A) 描绘了系统的实现细节
    B) 表明了被开发系统的范围以及它和周围环境的数据交换关系
    C) 描绘了系统的抽象
    D) 描绘了软件实现的作者和绘制的时间
12. 若有以下程序:
#include <iostream>
using namespace std;
class A
private:
  int a;
public:
  void seta(int x)
 
      a=x;
 
  void showa()
 
      cout<<a<<",";
 
;
class B
private:
  int b;
public:
  void setb(int x)
 
    b=x;
 
  void showb()
指向类成员函数的指针 
      cout<<b<<",";
 
;
class C: public A, private B
private:
  int c;
public:
  void setc(int x, int y, int z)
 
      c=z;
      seta(x);
      setb(y);
 
  void showc()
 
      showa();
      showb();
      cout<<c<<end1;
 
;
int main()
  C c;
  c.setc(1,2,3);
  c.showc();
  return 0;
程序执行后的输出结果是(    )。
    A) 1,2,3    B) 1,1,1
    C) 2,2,2    D) 3,3,3
13. 下面有关重载函数的说法中,正确的是(    )。
    A) 重载函数必须具有不同的返回值类型
    B) 重载函数形参个数必须不同
    C) 重载函数必须有不同的形参列表
    D) 重载函数名可以不同
14. 有如下程序:
        #nclude<iostremn>
        using namespace std;
        class Stack
        public:
        Stack(unsigned n=10:size(n)rep_=new int[size];top=O;
        Stack(Stack&s):size(s.size)
       
            rep_=new int[size];
        for(int i=0;i<size;i++)rep_[i]=s.rep_[i];
        p;
       
        ~Stack()delete[]rep_;
        void push(int a)rep_[top]=a; top++;
        int opo()--top;return rep_[top];
        bool is Empty()constreturn top==O;
        pavate:
            int*rep_;
            unsigned size,top;
        ;
        int main()
       
            Stack s1;
            for(int i=1;i<5;i++)  s1.push(i);
            Stack s2(s1);
            for(i=1;i<3;i++)  cout<<s2.pop()<<',';
            s2.push(6);
            s1.push(7);
            while(!s2.isEmpty())  cout<<s2.pop()<<',';
        return 0;
       
    执行上面程序的输出是

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。