`

2009年3月计算机等级考试二级C++真题及参考答案

阅读更多

一、选择题(每小题2分,共70分)

 (1)下列叙述中正确的是
    A)栈是“先进先出”的线性表
    B)队列是“先进后出”的线性表
    C)循环队列是非线性结构
    D)有序线性表既可以采用顺序存储结构,也可以采用链式存储结构   

 (2)支持子程序调用的数据结构是
    A)栈
    B)树
    C)队列
    D)二叉树   

 (3)某二叉树有5个度为z的结点,则该二叉树中的叶子结点数是
    A)10
    B)8
    C)6
    D)4   

 (4)下列排序方法中,最坏情况下比较次数最少的是
    A)冒泡排序
    B)简单选择排序
    C)直接插入排序
    D)堆排序   


 (5)软件按功能可以分为: 应用软件、系统软件和支撑软件(或工具软件)。下面属于应用软件的是
    A)编译程序
    B)操作系统
    C)教务管理系统
    D)汇编程序   

 (6)下面叙述中错误的是
    A)软件测试的目的是发现错误并改正错误
    B)对被调试的程序进行“错误定位”是程序调试的必要步骤
    C)程序调试通常也称为Debug
    D)软件测试应严格执行测试计划,排除测试的随意性   

 (7)耦合性和内聚性是对模块独立性度量的两个标准。下列叙述中正确的是
    A)提高耦合性降低内聚性有利他哦高模块的独立性
    B)降低耦合性提高内聚性有利于提高模块的独立性
    C)耦合性是指一个模块内部各个元索间彼此结合的紧密程度
    D)内聚性是指模块间互相连接的紧密程度   

 (8)数据库应用系统中的核心问题是
    A)数据库设计
    B)数据库系统设计
    C)数据库维护
    D)数据库管理员培训   

 (9)有两个关系R, S如下:

 

 

    由关系R通过运算得到关系S,则所使用的运算为
    A)选择
    B)投影
    C)插入
    D)连接   

 (10)将E-R图转换为关系模式时,实体和联系都可以表示为
    A)属性
    B)键
    C)关系
    D)域   

 (11)对C++编译器区分重载函数无任何意义的信息是
    A)参数类型
    B)参数个数
    C)返回值类型
    D)常成员函数关键字coast   

 (12)有如下类定义和变量定义:
    class A{
    publie:
    A(){data=0;}
    ~A(){}
    int GetData ( ) coast { return data;}
    void SetData(int n)  {data=n;}
    private:
    int data;
    };
    ccnst A a;
    A b;
    下列函数调用中错误的是
    A)a .GetData();
    B)a .SetData(10);
    C)b .GetData();
    D)b .SetData(10);   

 (13)有如下类定义和变量定义:
    class Parents{
    public:
    int publicuata;
    private:
    int privateData;
    };
    class ChildA:public Parents{/*类体略*/};
    class ChildB:private Parents{/*类体略*/);
    ChildA a;
    ChildBb;
    下列语句中正确的是
    A)cout<<a.publicData <<endl ;
    B)cout<<a.privateData <<endl ;
    C)cout<<b.publicData <<endl ;
    D)cout<<b.privateData <<endl ;   

 (14)运算符重载时不需要保持的性质是
    A)操作数个数
    B)操作数类型
    C)优先级
    D)结合性   

 (15)下列关于函数模板的描述中,错误的是
    A)从模板实参表和从模板函数实参表获得信息矛盾时,以模板实参的信息为准
    B)对于常规参数所对应的模板实参,任何情况下都不能省略
    C)虚拟类型参数没有出现在模板函数的形参表中时,不能省略模板实参
    D)模板参数表不能为空   

 (16)要建立文件流并打开当前目录下的文件file.dat用于输入,下列语句中错误的是
    A)ifstream fin=ifstream.open(“file.dat”);
    B)ifstream*fir.=new ifstream(“file.dat”);
    C)ifstream fin; fin.open(“file.dat”);
    D)ifstream *fin=new ifstream( );fin一>open(“file.dat”);   

 (17)下列描述中,不属于面向对象思想主要特征的是
    A)封装性
    B)跨平台性
    C)继承性
    D)多态性   

 (18)有如下程序段:
    Tnt i=4;int j=l;
    int main(){
    int i=8,j=i;
    cout<<i<<j<<endl;
    }
    运行时的输出结果是
    A)44            
    B)41           
    C)88          
    D)81   

 (19)有如下程序段:
    int i=5;
    while(int i=0){cout《'*';i--;}
    运行时输出“*”的个数是
    A)0             
    B)1            
    C)5           
    D)无穷   

 (20)己知有数组定义
    char a[3][4];
    下列表达式中错误的是
    A)a[2]=“WIN”
    B)strcpy(a[2],“WIN”)
    C)a [2][3]='W'
    D)a[0][1]=a[0][1]   

 (21)已知函数fun的原型为
    int fun(int,int,int);
    下列重载函数原型中错误的是
    A)char fun(int,int);
    B)double  fun(int,int,double);
    C)int fun(int,char*);
    D)float  fun (int, int, int);   

 (22)建立一个类对象时,系统自动调用
    A)析构函数
    B)构造函数
    C)静态函数
    D)友元函数   

 (23)通过派生类的对象可直接访问其
    A)公有继承基类的公有成员
    B)公有继承基类的私有成员
    C)私有继承基类的公有成员
    D)私有继承基类的私有成员   

 (24)己知表达式++a中的“++”是作为成员函数重载的运算符,则与十+a等效的运算符函数调用形式为
    A)a .orerator++(1)
    B)operator++(a)
    C)operator++(a,l)
    D)a.operator++( )   

 (25)在定义一个类模板时,模板形参表是用一对括号括起来的,所采用的括号是
    A)( )
    B)[ ]
    C)< >
    D){ }   

 (26)当使用ifstream流类定义一个流对象并打开一个磁盘文件时,文件的默认打开方式为
    A)ios_base::in
    B)ios_base::in|ios_base::out
    C)ios_base::out
    D)ios_base::in&ios_base::out   

 (27)有如下程序:
    #include<iostream>
    #include<cstring>
    using namespace std;
    class XCD{
    char* a;
    int b;
    public:
    XCD(char* aa, int bb){
    a=new char[strlen(aa)+1];
    strcpty(a,aa);
    b=bb;
    }
    Char*  Geta (){return a;)
    int  Getb(){ return b;}
    };
    int main(){
    char *pl=“abcd”,*p2=“weirong”;
    int dl=6, d2=8;
    XCD x(pl,dl),Y(p2,d2);
    cout<<strien (x .Geta())+y. Getb()+endl;
    return 0;
    }
    运行时的输出结果是
    A)12
    B)16
    C)14
    D)11   

 (28)有如下程序:
    #include<iostream>
    #include<cstring>
    using namespace std;
    class XCF{
    int a;
    public:
    XCF(int aa=0):a (aa){cout<<“1”;}
    XCF(XCF& x){a=x .a;  cout<<“2”;)
    ~XCF(){cout<<a;}
    int  Geta(){return a;}
    };
    int main(){
    XCF dl(5),d7 (dl);
    XCF *pd=new XCF(8);
    cout<<pd一>Geta();
    delete pd;
    return 0;
    }
    运行时的输出结果是
    A)121SS88
    B)12188SS
    C)12185
    D)128512   

 (29)已知类MyClass声明如下:
    class MyClass{
    int n;
    public;
    MyClass(int k):n(k){}
    int getValue()const{return n;}
    };
    在下列数组定义中正确的是
    A)MyClass x1[2];
    B)MyClass x2[2]={new MyClass(1),new MyClass(2)};
    C)MyClass *x3[2];
    D)MyClass *x4[2]={MyClass(1),MyClass(2)};   

 (30)有如下程序:
    #include<iostream>
    using namespace std;
    class  AA{
    lilt   k;
    protected:
    int    n;
    void setK(int k){ this->k=k;}
    public:
    void setN(int n){ this->n=n;}
    };
    class BB: public }{/*类体略*/};
    int main(){
    BB x_ ;              //1
    x .n=1;              //2
    x.setN (2);           //3
    x.k=3;              //4
    x .setK(4);
    return 0;
    }
    在标注号码的四条语句中正确的是
    A)1
    B)2
    C)3
    D)4   

 (31)有如下类定义:
    class XX{
    int  xx;
    public:
    XX():xx(0){cout<<' A';}
    XX(int  n):xx ( n){tout<<' B';}
    };
    Class YY:public XX{
    Int yy;
    public:
    YY():yy ( 0){cout+yy;}
    YY(int n):XX(n+1),yy(n){cout<<yy;}
    YY (int  m,   int  n):XX (m),yy(n){cout<<yy;}
    };
    下列选项中,输出结果为A0的语句是
    A)YY y1(0,0);
    B)YY y2(1);
    C)YY  y3(0);
    D)YY  y4;   

 (32)有如下程序:
    #include<iostream>
    Using namespace std;
    class A{
    public:
    virtual void f(){cout+1;}
    void g(){cout<<2;}
    };
    class B:public A{
    public:
    virtual void f(){cout<<3;}
    void g(){ecut<<4;}
    };
    void show(A &a){a.f();a.g( );}
    int main(){
    B b;
    show(b);
    return 0;
    }
    运行时的输出结果是
    A)12
    B)34
    C)14
    D)32   

 (33)有如下程序:
    #include<iostream>
    using namespace std;
    class Pair{
    int m;
    int n;
    public:
    Pair(int i,int j):m(i),n(j){}
    boot operator >(pair p)const;   //须在类体外给出定义
    };
    int main(){
    Pair Al(3,4),p2(4,3);p3(4,5);
    Cout<<(pl>p2)<<(P2>P1)<<(p2>p3)<<(p3>p2);
    return 0;
    }
    运算符函数。operator>的功能是比较两个Pair对象的大小,当左边对象大时,返回true,否则返回false。比较规则是首先比较两对象的m成员,m大者为大;当m相等时比较n,n大者为大。程序输出0101,下列对运算符重载函数的正确定义是
    A)bool Pair::operator>(Pair p)const
    {if (m!=p.m) return m>p.m; return n>p.n;}
    B)bool Pair:;operator>(Pair p)
    {if (m!=p.m) return m>p.m; return n>p.n;}
    C)bool Pair::operator>(Pair p)const
    {if (m>p.m) return true; return n>p.n;}
    D)bool Pair:;operator>(Pair p)
    {if (m>p.m) return true; return n>p.n;}   

 (34)假定下列语句都是程序运行后首次执行的输出语句,其中输出结果与另外三条语句不同的语句是
    A)cout<<setfill('*’)<<123<<setw(9)<<321;
    B)cout<<setfill(‘*’)<<setw(6)<<left<<123<<setw(6)<<right<<321;
    C)cout<<123<<setfill(‘*’)<<setw(6)<<321;
    D)cout<<setfill(‘*’)<<SetW(9)<<left<<123<<321;   

 (35)有如下程序:
    #include<iostream>
    using namespace std;
    class ONE{
    int c;
    public:
    ONE():c(0){cout<<1;}
    ONE(int n):c (n){cout<<2;}
    };
    class TWO{
    ONE onel;
    ONE one2;
    public:
    TWO(int m):one2(m){cout<<3;}
    };
    int main()t
    TWO t(4)
    return 0
    }
    运行时的输出结果是
    A)3
    B)23
    C)123
    D)213   

 二、填空题(每空2分,共30分)

 (1)假设用一个长度为50的数组(数组元索的下标从0到49)作为栈的存化空间,栈底指针bottom指间      栈底元素,栈顶指针top指向栈顶元素,如果bottom=49,top=30(数组下标),则栈中具有【1】      个元素。   

 (2)软件测试可分为白盒测试和黑盒测试。基本路径测试属于【2】测试。   

 (3)符合结构化原则的三种基本控制结构是:选择结构、循环结构和【3】。   

 (4)数据库系统的核心是【4】。   

 (5)在E-K图中,图形包括矩形框、菱形框、椭圆框。其中表示实体联系的是【5】框。    

 (6)有如下程序段:
    int x=1,Y=2,z=3;
    x=x^z;
    y=y^z;
    z=x^y;
    cout<<x<<y<<z;
    执行这个程序段的输出是【6】。   

 (7)有如下程序段:
    fer(int i=1; i<=50;i++){
    if(i%3 != 0)
    continue;
    else
    if(i%5!=0)
    continue;
    tout<<i<<“,”;
    }
    执行这个程序段的输出是【7】。   

 (8)有如下程序段:
    Char  c [20]=“examination”;
    c[4]=0;
    cout<<c<<endl;
    执行这个程序段的输出是【8】。   

 (9)下面的函数利用递归实现了求1+2+3+……+n的功能:
    int sum(int n){
    if(n==0)
    return 0;
    else
    return n+sum(n-1);
    }
    在执行sum(10)的过程中,递归调用sum函数的次数是【9】。   

 (10)非成员函数应该声明为类【10】函数才能访问该类的私有成员。
 (11)有如下程序:
    #include<iostream>
    using namespace std;
    class Monitor{
    public:
    Monitor(char t):type (t){}
    void print( ) const
    {cout<<“The type of monitor is”<<type<<endl;}
    private:
    char type;
    };
    class Computer{
    public:
    Computer(int i,char c): 【11】{}
    void Print()const
    {cout<<“The computer is”<<id<<endl;mon.Print();}
    private:
    int id;
    Monitor mon;
    };
    const Computer myComputer(101,'B‘);
    myComputer .Print();
    return 0;
    }
    请将程序补充完整,使程序在运行时输出:
    The computer is 101
    'The type of monitor i.s 8   

 (12)有如下程序:
    #include <iostream>
    using namespace std
    class Animal{
    public:
    virtual char* getType()const { return “Animal”;}
    virtual char* getVoice()const { return “Voice”;}
    };
    Class Dog : public Animal {
    public:
    char* getType ( ) const {return “Dog”;}
    char* getVoice ( ) const {return “Woof”}
    };
    void type(Animal& a) {cout<<a.getType();}
    void speak(Animal a) {cout<<a.getVoice();}
    int main( ) {
    Dog d; type (d);cout<<“ speak”;speak(d);cout<<endi;
    return 0;
    }
    运行时的输出结果是【12】。   

 (13)补充完整下面的类定义:
    const double PI=3 .14;
    class Circle{   //圆形物体的抽象基类
    protected:
    double r;      //半径
    public:
    Circle(double radius=0):r(radius){}
    【13】;//计算圆形物体表面积的纯虚函数声明
    };
    class Cylinder:public Circle {  //圆柱体类
    double h;       //高度
    public:
    Cylindr(double radius=0, doubli height=0):
    Circle(radius),h (height){}
    Virtual double Area() { //计算圆柱体的表面积
    return 2*PI*r*(r+h);
    }
    };   

 (14)补充完整下面的类定义:
    class XCH{
    char* a;
    public:
    XCH(char* as) { //构造函数
    a=new char[strlen(aa)+1];
    strcpy(a,aa);
    }
    XCH& operator=(const XCH& x)     //重载赋值函数
    Delele []a;
    A=new char[strlen(x.a)+l];
    strcpy(a, x .a)
    【14】;
    }
    ~XCH() {delete []a;}
    };   

 (15)补充完整下面的模板定义:
    template<class Type>  //Type为类型参数
    class Xtwo{    //由两个Type类型的数据成员构成的模板类
    Type a;
    Type b;
    public:
    Xtwe(Type aa=0, Type bb=0):a(aa),b(bb){}
    int Ccmpare  (){//比较a和b的大小
    if (a>b)returm 1;
    else if(a==b) return 0;
    else return -1;
    }
    Type Snm() {return a+b;} //返回a和b之和
    Type Mult();         //函数声明,返回a和b之乘积
    };
    Template<class Type>
    【15】::Mult(){return a*b;} //Mult 函数的类外定义   

 

    参考 答案

   一、 选择题:

  (1)D    (2)A    (3)C    (4)D    (5)C
 
  (6)A    (7)B    (8)A    (9)B    (10)C
 
  (11)A    (12)D    (13)B    (14)B    (15)C
 
  (16)D    (17)A    (18)B    (19)  B     (20)C
 
  (21)B    (22)B    (23)A    (24)D     (25)B
 
   (26)A    (27)A    (28)A    (29)C    (30)D
 
  (31)C    (32)A    (33)A    (34)C    (35)D
 

  二、填空题

    (1)19

    (2)白盒

    (3)顺序结构

    (4)数据库管理系统

    (5)菱形

    (6)100

    (7)Line1.x1  或 Line1.x2

    (8)Image1.Left

    (9)KeyAscii

    (10)Combo1.Text

    (11)Input

    (12)ch

    (13)Len(mystr)

    (14)1

    (15)a(k)

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics