一起答

2012年3月全国计算机等级考试二级C++语言程序设计笔试试卷

如果您发现本试卷没有包含本套题的全部小题,请尝试在页面顶部本站内搜索框搜索相关题目,一般都能找到。
  1. 正方形类的定义如下,请将横线处缺失部分补充完整。 

    class Square{

    private:

    double width;

    public:

    Square(double w):width(w){}

    //重载大于运算符">",用于比较两个正方形的大小,函数结果类型为bool类型

    __________(Square& s);

    };

  2. 有如下程序,请将横线处缺失部分补充完整。 

    #include

    using namespace std;

    template

    class Dataset{

    T *data;

    int size;

    public:

    Dataset(T* arr, int length): size(length){

    data=new T[length];

    for(int i=0; i

    data[i]=arr[i];

    }

    };

    int main( ){

    int arr[]={2, 4, 6, 8, 10};

    //利用数组arr初始化类模板Dataset的对象set

    __________

    return 0;

    }

  3. 形状类Shape中包含一个纯虚函数draw,它无形参和返回值,则draw函数在Shape类中的原型声明是__________。

  4. 类Base、Component和Derived的定义如下,请将横线处缺失部分补充完整。 

    class Base{

    double data;

    public:

    Base(double d):data(d){ }

    };

    class Component{

    int data;

    public:

    Component(int d):data(d){ }

    };

    class Derived:public Base{

    Component com;

    char character;

    public:

    Derived(double a,int b,char c);

    //使用参数a初始化基类成员,使用参数b初始化成员对象com

    __________,character(c){ }

    };

  5. 有如下程序:

    #include

    using namespace std;

    class Machine{

    static int num;

    public:

    Machine( ){num++;}

    static void showNum( )

    {cout<

    };

    int Machine::num=0;

    int main( ){

    Machine a[10], b;

    Machine::showNum( );

    return 0;

    }

    运行这个程序的输出结果是__________。

  6. 调用时不必提供参数的构造函数称为__________构造函数。

  7. break语句可用于循环语句和__________语句中。

  8. 如果P是指向一个动态数组空间的指针变量,则释放该数组空间的语句是__________。

  9. 如果一个函数在其函数体内直接或间接地调用自己,则该函数称为__________函数。

  10. 常见的软件工程方法有结构化方法和面向对象方法,类、继承以及多态性等概念属于__________。

  11. 如果a为int型变量,b为double型变量,则表达式a+b的值的类型为__________。

  12. 在将E-R图转换到关系模式时,实体和联系都可以表示成__________。

  13. 数据库管理系统提供的数据语言中,负责数据的增、删、改和查询的是__________。

  14. 设循环队列的存储空间为Q(1:30),初始状态为front=rear=30。现经过一系列入队与退队运算后,front=16,rear=15,则循环队列中有__________个元素。

  15. 在长度为n的顺序存储的线性表中删除一个元素,最坏情况下需要移动表中的元素个数为__________。

  16. 有如下程序:

    #include

    using namespace std;

    class Mountain{

    int height;

    public:

    Mountain(int h=0): height(h){ }

    virtual char *GetName( )const

    {return "山";}

    int GetHeight( ) const{return height;}

    };

    class Lushan:public Mountain{

    public:

    Lushan(int d):Mountain(d){ }

    char *GetName( )const

    {return "庐山";}

    };

    int main( ){

    Mountain *p= new Lushan(1000);

    cout<GetName( )<<"海拔"<

    return 0;

    }

    运行这个程序的输出结果是__________

    • A.庐山海拔1000米
    • B.庐山海拔0米
    • C.山海拔1000米
    • D.山海拔0米
  17. 下列控制对齐方式的操作符中,错误的是__________

    • A.internal
    • B.center
    • C.left
    • D.right
  18. 已知类MyClock中未显式定义构造函数,并重载了加法运算符,使得下面的语句序列能够正确执行: 

    MyClock c1, c2; 

     //...... 

     c2=c1+10; 

     由此可知,为类MyClock重载的"+"运算符函数的声明是__________

    • A.friend MyClock operator+(MyClock, int);
    • B.friend MyClock operator+(MyClock, MyClock);
    • C.friend MyClock operator+(int, MyClock);
    • D.MyClock operator+(MyClock);
  19. 有如下类定义: 

    class Animal{

    public:

    virtual void Name( )=0;

    };

    class Koala:public Animal{

    public:

    void Name( ){/*函数体略*/}

    };

    关于上述类定义,下列描述中错误的是__________

    • A.类Koala是类Animal的派生类
    • B.类Koala中的Name函数是一个虚函数
    • C.类Animal中的Name函数是一个纯虚函数
    • D.语句“Animal a;”能够建立类Animal的一个对象a
  20. 有如下程序:#include using namespace std;class Base{public:virtual void Show( ){cout<<'B';}};class Derived:public Base{public:void Show( ){cout<<'D';}};int main( ){Base *p1=new Derived;Derived *p2=new Derived;p1->Show( );p2->Show( );delete p1;delete p2;return 0;}运行这个程序的输出结果是__________

    • A.BB
    • B.BD
    • C.DB
    • D.DD
  21. 有如下程序:

    #include

    using namespace std;

    class Boat;

    class Car{

    public:

    Car(int i): weight(i){ }

    friend int Total(const Car &c, const Boat &b);//① 

    private:

    int weight;

    };

    class Boat{

    public:

    Boat(int i): weight(i){ }

    friend int Total(const Car &c, const Boat &b);

    private:

    int weight;

    };

    int Total(const Car &c, const Boat &b){//②

    return c.weight+b.weight;

    }

    int main( ){

    Car c(10);

    Boat b(8);

    cout<<"The total weight is"<

    return 0;

    }

    下列关于程序的描述中,正确的是__________

    • A.程序编译正确
    • B.程序编译时语句①出错
    • C.程序编译时语句②出错
    • D.程序编译时语句③出错
  22. 有如下程序: 

    #include

    using namespace std;

    class Media{

    public:

    void Name( );

    void Show( );

    protected:

    int page;

    };

    class Book:private Media{

    public:

    void Print( ) { cout<

    void Show( ) {Media::Show( );}//①

    };

    int main( ){

    Book Bible;

    Bible.Name( );//②

    Bible.Print( );//③

    Bible.Show( );//④

    return 0;

    }

    编译时有错误的是__________

    • A.语句①
    • B.语句②
    • C.语句③
    • D.语句④
  23. 已知类IMS中两个成员函数的声明为"void listen( ) const;"与"void speak( );",另有两个对象的定义为"IMS obj1;"与"const IMS obj2;",则下列语句中,产生编译错误的是__________

    • A.obj1.listen( );
    • B.obj1.speak( );
    • C.obj2.listen( );
    • D.obj2.speak( );
  24. 有如下程序: 

    #include

    using namespace std;

    class Monkey{

    public:

    Monkey( ) {cout<<'M';}

    Monkey(char n) {cout<

    ~Monkey( ) {cout<<'Y';}

    };

    int main( ){

    Monkey p1, *p2;

    p2=new Monkey('X');

    delete p2;

    return 0;

    }

    运行这个程序的输出结果是__________

    • A.MYX
    • B.MYMY
    • C.MXY
    • D.MXYY
  25. 在C++中,打开一个文件时与该文件建立联系的是__________

    • A.流对象
    • B.模板
    • C.函数
    • D.类
  26. 若有函数模板mySwap和一些变量定义如下:

    template

    void mySwap(T X,T Y);

    double d1,d2; int i1,i2;

    下列对mySwap的调用中,错误的是__________

    • A.mySwap(i1,i2)
    • B.mySwap(d1,d2)
    • C.mySwap(i1,d1)
    • D.mySwap(i2,d2)
  27. 在类中重载赋值运算符时,应将其声明为类的__________

    • A.静态函数
    • B.友元函数
    • C.成员函数
    • D.构造函数
  28. 有如下程序:

    #include

    using namespace std;

    class XX{

    int x;

    public:

    XX(int xx=0):x(xx){}

    int getX( ){return x;}

    };

    class YY:public XX{

    int y;

    public:

    YY(int xx, int yy):x(xx), y(yy){}

    int getV( ){return getX( )+y;}

    };

    int main( ){

    YY c(3, 4);

    cout<

    return 0;

    }

    运行这个程序的输出结果是__________

    • A.3
    • B.4
    • C.7
    • D.10
  29. 有如下程序: 

    #include

    using namespace std;

    class XA{

    int a;

    public:

    static int b;

    XA(int aa):a(an) { b++; }

    int getA( ){ return a; }

    };

    int XA::b=0;

    int main( ){

    XA d1(4), d2(5);

    cout<

    return 0;

    }

    运行这个程序的输出结果是__________

    • A.9
    • B.11
    • C.13
    • D.15
  30. 有如下程序: 

    #include

    using namespace std;

    int main( ){

    int i,s=0;

    for(i=1;s<20;i+=2) s+=i*i;

    cout<

    return 0;

    }

    运行这个程序的输出结果是__________

    • A.3
    • B.5
    • C.7
    • D.9
  31. 若字符指针p所指向的字符串为"abcdefg",在执行语句char *ap=new char[strlen(p)+1];之后,ap指向的字符数组的元素个数为__________

    • A.9
    • B.8
    • C.7
    • D.6
  32. 有如下程序: 

    #include

    using namespace std;

    void fl(int& x){x++;}

    void f2(int x){++x;}

    int main( ){

    int x=10, y=12;

    f1(x);

    f2(y);

    cout<

    return 0;

    }

    运行这个程序的输出结果是__________

    • A.22
    • B.23
    • C.24
    • D.25
  33. 若有定义"int x=4,y=5;",则表达式"y>x++?x--:y++"的值为__________

    • A.3
    • B.4
    • C.5
    • D.6
  34. 在开发一个c++程序的整个过程中,第3个步骤为__________

    • A.链接
    • B.运行
    • C.编辑
    • D.编译
  35. 若需要向一个二进制文件尾部添加数据,则该文件的打开方式为__________

    • A.ios_base::app
    • B.ios_base::binary | ios_base::out
    • C.ios_base::out
    • D.ios_base::binary | ios_base::app
  36. 在定义函数模板或类模板时,开头的保留字是__________

    • A.typename
    • B.template
    • C.class
    • D.typedef
  37. 若需要为XV类重载乘法运算符,运算结果为XV类型,在将其声明为类的成员函数时,下列原型声明正确的是__________

    • A.XV operator *(XV,XV)
    • B.XV *(XV)
    • C.operator *(XV)
    • D.XV operator *(XV);
  38. 当派生类继承一个基类时,默认的继承方式为__________

    • A.public
    • B.protected
    • C.private
    • D.不确定
  39. 若AA为一个类,a为该类的私有整型数据成员,getA( )为该类的一个非静态公有成员函数,功能是返回a的值。如果x为该类的一个对象,要在类外访问x 对象中a的值,正确的访问格式为__________

    • A.AA.getA( )
    • B.x.getA( )
    • C.x.a
    • D.AA::a
  40. 在软件设计中不使用的工具是__________

    • A.系统结构图
    • B.程序流程图
    • C.PAD图
    • D.数据流图(DFD图)
  41. 若一个函数的原型为"int * Xfun1(int x,int& y,char z);",则该函数的返回值类型为__________

    • A.int *
    • B.int
    • C.int&
    • D.char
  42. 在黑盒测试方法中,设计测试用例的主要根据是__________

    • A.程序外部功能
    • B.程序数据结构
    • C.程序流程图
    • D.程序内部结构
  43. 下面不属于需求分析阶段任务的是__________

    • A.确定软件系统的性能需求
    • B.确定软件系统的功能需求
    • C.制定软件集成测试计划
    • D.需求规格说明书评审
  44. 软件生命周期的活动中不包括__________

    • A.软件维护
    • B.需求分析
    • C.市场调研
    • D.软件测试
  45. 有三个关系R、S和T如下:

    则由关系R和S得到关系T的操作是__________

    • A.并
    • B.差
    • C.交
    • D.自然连接
  46. 在满足实体完整性约束的条件下__________

    • A.一个关系中可以没有候选关键字
    • B.一个关系中只能有一个候选关键字
    • C.一个关系中必须有多个候选关键字
    • D.一个关系中应该有一个或多个候选关键字
  47. 一棵二叉树共有25个结点,其中5个是叶子结点,则度为1的结点数为__________

    • A.4
    • B.16
    • C.10
    • D.6
  48. 在下列模式中,能够给出数据库物理存储结构与物理存取方法的是__________

    • A.逻辑模式
    • B.概念模式
    • C.内模式
    • D.外模式
  49. 下列叙述中正确的是__________

    • A.栈是一种先进先出的线性表
    • B.队列是一种后进先出的线性表
    • C.栈与队列都是非线性结构
    • D.以上三种说法都不对
  50. 下列叙述中正确的是__________

    • A.循环队列是队列的一种链式存储结构
    • B.循环队列是一种逻辑结构
    • C.循环队列是队列的一种顺序存储结构
    • D.循环队列是非线性结构