一起答

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

如果您发现本试卷没有包含本套题的全部小题,请尝试在页面顶部本站内搜索框搜索相关题目,一般都能找到。
  1. 有如下程序:

    #include

    using namespace std;

    class Point{

    double x, y;

    public:

    Point(double xx=0.0, double yy=0.0): x(xx), y(yy){}

    double getX( )const{return x;}

    double getY( )const{return y;}

    void show( )const{cout<<'('<

    }

    class Line{

    Point p1, p2;

    public:

    Line(Point pp1, Point pp2): p1(pp1), p2(pp2){}

    Point LeftMost( )const{

    if(p1.getX( )<=P2.getX( ))return p1;

    return p2;

    }

    }

    int main( ){

    Line line(Point(3.1, 5.2), Point(8.2, 4.4));

    line.LeftMost( ).show( );

    return 0;

    }

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

  2. 有如下程序:

    #include

    using namespace std;

    template

    T Add(Tv1, Tv2){return v1+v2;}

    int main( ){

    cout<

    return 0;

    }

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

  3. 有些运算符既可以作为成员函数重载,也可以作为非成员函数重载。若在一个重载的运算符函数的定义中成功地使用了this指针,说明它是作为__________重载的。

  4. 有下列程序的输出结果是2334,请将横线处缺失部分补充完整。

    #include

    using namespace std;

    class Base{

    int m;

    public:

    Base(int k):m(k){}

    int getM( )const{return m;}

    }

    class Derived:public Base{

    int n;

    public:

    Derived(int k): __________ , n(k){}

    int getN( )const{return n;}

    }

    int main( ){

    Derived d1(3),d2(4);

    cout<

    return 0;

    }

  5. 在C++中,编译时的多态性是通过模板或函数__________实现的。

  6. 有如下程序: 

    #include

    using namespace std;

    void fun(int&x, int y){

    y=y+x;

    x=y/4;

    x++;

    }

    int main( ){

    int x=4, y=5;

    fun(x,y);

    cout<

    return 0;

    }

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

  7. 有如下程序: 

    #include

    using namespace std;

    class A{

    public:

    A( ){cout<<1;}

    A(const A&){cout<<2;}

    ~A( ){cout<<3;}

    };

    int main( ){

    A obj1;

    A obj2(obj1);

    return 0;

    }

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

  8. 若下列程序的输出结果是20,请将横线处缺失部分补充完整。 

    #include

    using namespace std;

    class MyClass{

    public:

    MyClass(int x=)10:value(x){}

    void SetValue(int x){value=x; cout<

    private:

    int value;

    };

    int main( ){

    MyClass*ptr=new MyClass;

    __________//通过对象指针ptr调用SetValue函数

    delete ptr;

    return 0;

    }

  9. 若有定义语句“int x=10;”,则表达式“x<=10?20:30”的值为__________。

  10. 下列语句的作用是计算正整数n的各位数字之和,例如:n=123,sum=1+2+3,请将下列语句补充完整。 

    do{

    sum+=__________;

    n=n/10;

    }while(n1=0);

  11. 关系数据库中能实现的专门关系运算包括__________、连接和投影。

  12. 软件按功能通常可以分为应用软件、系统软件和支撑软件(或工具软件),Unix操作系统属于__________软件。

  13. 数据独立性分为逻辑独立性和物理独立性。当总体逻辑结构改变时,其局部逻辑结构可以不变,从而根据局部逻辑结构编写的应用程序不必修改,称为__________。

  14. 设栈的存储空间为S(1:40),初始状态为bottom=0,top=0,现经过一系列入栈与出栈运算后,top=20,则当前栈中有__________个元素。

  15. 一棵二叉树共有47个结点,其中有23个度为2的结点,假设根结点在底1层,则该二叉树的深度为__________。

  16. 有如下程序: 

    #include

    #include

    using namespace std;

    int main( ){

    cout<

    return 0;

    }

    • A.##OK123
    • B.##OK#123
    • C.OK##123
    • D.OK##123#
  17. 有如下语句序列: 

    ifstream infile("DATA.DAT");

    if(infile.good( ))cout<<"A";

    else{

    cout<<"B";

    ofstream outfile("DATA.DAT");

    if(outfile.fail( ))cout<<"C";else cout<<"D";

    }

    若执行这个语句序列显示的是BD,则说明文件DATA .DAT__________

    • A.以读方式打开成功
    • B.以读方式打开失败,但以写方式打开成功
    • C.以读方式打开失败,以写方式打开也失败
    • D.以读方式打开成功,以写方式打开也成功
  18. 有如下程序: 

    #include

    #include

    using namespace std;

    class MyString{

    public:

    char str[80];

    MyString(const char*s) {strcpy(str, s);}

    MyString&operator+=(MyString a){

    strcat(str, a.str);

    return*this;

    }

    };

    ostream&operator<<(ostream&s, const MyString&z){return s<

    int main( ){

    MyString x("abc"), y("cde");

    cout<<(x+=y)<

    return 0;

    }

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

    • A.abc
    • B.cde
    • C.abcde
    • D.abccde
  19. 有如下程序: 

    #include

    using namespace std;

    class B{

    public:

    virtual void f( ) {cout<<"B";}

    void g( ){cout<<"B";}

    }

    class D;public B {

    public:

    void f( ){cout<<"D";}

    void g( ){coun<<"D";}

    }

    void h(B*p){p->f( );p->g( );}

    int main( ){

    D obj;

    h(&obj);

    return 0;

    }

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

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

    #include

    using namespace std;

    class A{

    public:

    • A( ){cout<, 'A';}    ~A( ){cout<<'C';}    };
    • class B:public A{    public:
    • B( ){cout<<'G';}    ~B( ){cout<<'T';}    };
    • int main( ){
    • B obj;    return 0;    }    运行这个程序的输出结果是__________
    • A.GATC
    • B.AGTC
    • C.GACT
    • D.AGCT
  21. 有如下类定义 

    class Test{

    char a; const char b;

    public:Test(char C.{a=c;b=c;}//第1行

    void f(char A.const{this->a=a;}//第2行

    void g(char B.{this->b=b;}//第3行

    char h( )const{return a;}//第4行

    };

    编译时没有错误的行是__________

    • A.第1行
    • B.第2行
    • C.第3行
    • D.第4行
  22. 有如下程序:

    #include

    using namespace std;

    class Base{

    public;

    void fun( ){cout<<'B';}

    };

    class Derived:public Base{

    public;

    void fun( ){ _______cout<<'D';}

    };

    int main( ){

    Derived d;

    d.fun( );

    return 0;

    }

    若程序的输出结果是BD,则划线处缺失的部分是__________

    • A.fun( )
    • B.Base .fun( )
    • C.Base::fun( )
    • D.Base->fun( )
  23. 有如下类定义

    class MyClass{

    int x;

    public:

    MyClass( ):x(0), y(0){}

    int GetX( ){return x;}

    void SetX(int xx){x==xx;}

    int y;

    };

    已知obj是类MyClass的对象,下列语句中违反类成员访问控制权限的是__________

    • A.obj.x;
    • B.obj.y;
    • C.obj.GetX( );
    • D.obj.SetX(0);
  24. 有如下类定义:

    class MyClass{

    int b; char a; double c;

    public:

    MyClass( ):c(0.0), b(0), a(','){}

    };

    创建这个类的对象时,数据成员的初始化顺序是__________

    • A.a,b,c
    • B.c,b,a
    • C.b,a,c
    • D.c,a,b
  25. 下列类模板的定义中语法格式错误的是__________

    • A.templateclass Buffer{/*…*/};
    • B.templateclass Buffer{/*…*/};
    • C.templateclass Buffer{/*…*/};
    • D.templateclass Buffer{/*…*/};
  26. 在C++中既可以用于文件输入又可以用于文件输出的流类是__________

    • A.fstream
    • B.ifstream
    • C.ofstream
    • D.iostream
  27. 已知基类Employees只有一个构造函数,其定义如下:Employee::Employee(int n):id(n){}Manager是Employees的派生类,则下列对Manager的构造函数的定义中,正确的是__________

    • A.Manager::Manager(int n):id(n){}
    • B.Manager::Manager(int n){id=n;}
    • C.Manager::Manager(int n):Employee(n){}
    • D.Manager::Manager(int n){Employee(n);}
  28. 已知将运算符“+”和“*”作为类Complete的成员函数重载,设c1和c2是类Complex的对象,则表达式c1+c2*c1等价于__________

    • A.c1.operator*(c2.operator+(c1))
    • B.c1.operator+(c2.operator*(c1))
    • C.c1.operator*(c1.operator+(c2))
    • D.c2.operator+(c1.operator*(c1))
  29. 已经函数print( )没有返回值,如果在类中将之声明为常成员函数,正确的是__________

    • A.void print( )const;
    • B.const void print( );
    • C.void const print( );
    • D.void print(const);
  30. 下列对一维数组a的定义中,语法正确的是__________

    • A.int a(10)
    • B.int n=7, a[n];
    • C.int n; cin>>n; int a[n];
    • D.const int size=10; int a[size];
  31. 假设函数fun已经定义,其原型为”void fun(int a,int b=7,char *p=”**”);”,下列函数调用中错误的是__________

    • A.fun(5)
    • B.fun(5, 8)
    • C.fun(6, ”##”)
    • D.fun(0, 0.”==”)
  32. 有如下程序: 

    #include

    using namespace std;

    int main( ){

    char a;

    cin>>a;

    if(a='*') cout<<"***"<

    else cout<<"###"<

    return 0;

    • A.***
    • B.###
    • C.***###
    • D.无输出
  33. 关键字unsigned不能修饰的类型是__________

    • A.char
    • B.int
    • C.float
    • D.long int
  34. 下列关于输入输出流的叙述中,正确的是__________

    • A.一个文件流可以与一个数据文件相联系
    • B.cin是专门从键盘输入数据的输入流类
    • C.流运算符<<用来从输入流中读取数据
    • D.宽度设置的效果永久有效
  35. 下列选项中可以做C++标识符的是__________

    • A._256
    • B.fat/pig
    • C.delete
    • D.5char
  36. 下列关于派生类的叙述中,错误的是__________

    • A.派生类至少要有一个基类
    • B.派生类中包括了从基类继承的成员
    • C.一个派生类可以作为另一个派生类的基类
    • D.基类成员被派生类继承以后访问权限保持不变
  37. 下列关于模板的叙述中,错误的是__________

    • A.调用模板函数时,有时可以省略模板实参
    • B.函数模板的每个实例就是一个函数定义
    • C.类模板的每个实例就是一个类定义
    • D.类模板的实例是一个类对象
  38. 下列关于运算符重载的叙述中,正确的是__________

    • A.通过运算符重载机制可以为C++语言扩充新的运算符
    • B.运算符重载的作用是使已有的运算符作用于类的对象
    • C.重载运算符的操作数类型可以全部为基本类型
    • D.所有运算符都可以重载
  39. 下列关于类成员对象构造函数调用顺序的叙述中,正确的是__________

    • A.与它们在初始化列表中顺序相同
    • B.与它们在类中声明的顺序相同
    • C.与析构函数的调用顺序相同
    • D.顺序不确定
  40. 下列关于函数重载的叙述中,错误的是__________

    • A.重载函数的参数个数可以不同
    • B.重载函数的参数类型可以不同
    • C.重载函数的返回值类型必须不同
    • D.重载函数的参数个数或参数类型必须有所不同
  41. 下面属于黑盒测试方法的是__________

    • A.逻辑覆盖
    • B.语句覆盖
    • C.路径覆盖
    • D.边界值分析
  42. 下面不属于软件设计阶段任务的是__________

    • A.数据库设计
    • B.算法设计
    • C.软件总体设计
    • D.制定软件确认测试计划
  43. 软件需求规格说明书的作用不包括__________

    • A.软件可行性研究的依据
    • B.用户与开发人员对软件要做什么的共同理解
    • C.软件验收的依据
    • D.软件设计的依据
  44. 有两个关系R和S如下: 

    则由关系R得道关系S的操作是__________

    • A.自然连接
    • B.选择
    • C.并
    • D.投影
  45. 数据字典(DD)所定义的对象都包含于__________

    • A.程序流程图
    • B.数据流图(DFD图)
    • C.方框图
    • D.软件结构图
  46. 在关系数据库中,用来表示实体间联系的是__________

    • A.二维表
    • B.树状结构
    • C.属性
    • D.网状结构
  47. 公司中有多个部门和多名职员,每个职员只能属于一个部门,一个部门可以有多名职员,则实体部门和职员间的联系是__________

    • A.m:1联系
    • B.1:m联系
    • C.1:1联系
    • D.m:n联系
  48. 下列关于栈的叙述中,正确的是__________

    • A.栈顶元素一定是最先入栈的元素
    • B.栈操作遵循先进后出的原则
    • C.栈底元素一定是最后入栈的元素
    • D.以上三种说法都不对
  49. 下列链表种,其逻辑结构属于非线性结构的是__________

    • A.循环链表
    • B.双向链表
    • C.带链的栈
    • D.二叉链表
  50. 设循环队列的存储空间为Q(1:35),初始状态为front=rear=35,现经过一系列入队与退队运算后,front=15,rear=15,则循环队列中的元素个数为__________

    • A.16
    • B.20
    • C.0或35
    • D.15