2016計算機二級考試C++過關(guān)練習(xí)試題

字號:

1[填空題]當(dāng)公有派生時,基類的公有成員成為派生類的(  );保護成員成為派生類的(  );私有成員成為派生類的(  )。當(dāng)保護派生時,基類的公有成員成為派生類的(  );保護成員成為派生類的(  );私有成員成為派生類的(  )。
    參考解析:公有成員、 保護成員、不能直接訪問成員、保護成員、保護成員 、不能直接訪問成員
    3[單選題]下列關(guān)于常量成員的描述中,錯誤的是(  )。
    A.常量成員是用關(guān)鍵字const說明的
    B.常量成員有常數(shù)據(jù)成員和常成員函數(shù)兩種
    C.常量數(shù)據(jù)成員的初始化是在類體內(nèi)定義它時進(jìn)行的
    D.常量數(shù)據(jù)成員的值是不可以改變的
    參考答案:C
    4[單選題]有如下類聲明:
    class MyBASE{
    int k;
    public:
    void set(int n){ k=n;}
    int get( )const{ return k; }
    };
    class MyDERIVED: protected MyBASE{
    protected:
    int j;
    public:
    void set(int m, int n){ MyBASE::set(m); j=n;}
    int get( )const{ return MyBASE::get( )+j; }
    };
    則類MyDERIVED中保護的數(shù)據(jù)成員和成員函數(shù)的個數(shù)是(  )
    A.4 B.3 C.2 D.1
    參考答案:B
    5[單選題] 有如下類模板定義:
    template
    classBigNumber{
    longn;
    public;
    BigNumber{Ti}:n(i){}
    BigNumberoperator+(BigNumberb){
    returnBigNumber{n+b.n);
    }
    };
    已知b1、b2是BigNumber的兩個對象,則下列表達(dá)中踏誤的是(  )。
    A.b1+b2B.b1+3C.3+b1D.3+3
    參考答案:C
    參考解析:該題考查了C++模板類和+運算符重載的知識,3+b1時,程序不能將b1轉(zhuǎn)化為整型,所以編譯會出錯。
    6[單選題]在長度為n的有序線性表中進(jìn)行二分查找,需要的比較次數(shù)為(  )。
    A.log2nB.nlog2nC.n/2D.(n+1)/2
    參考答案:A
    參考解析:在長度為n的有序線性表中進(jìn)行二分查找,需要的比較次數(shù)為log2n。
    8[單選題] 要利用C++流實現(xiàn)輸入輸出的各種格式控制,必須在程序中包含的頭文件是(  )。
    A.fatreamB.istreamC.ostreamD.iomanip
    參考答案:A
    參考解析:fstream.h包含有:fstream,ifstream,of—stream和fstreambase,以及iostream.h中的所有類。
    9[填空題]具有記憶作用的線性表稱為_______。
    【答案】棧
    10[簡答題]使用VC++6.0打開考生文件夾下的源程序文件3.cpp,要求編寫一個CMyShape類,含有求面積、周長等的純虛函數(shù),然后編寫一個CRectangle類和CCircle類繼承CMyShape,并實現(xiàn)求面積、周長的兩個函數(shù)。在main函數(shù)中測試得到下面的結(jié)果:
    在CMyShape類構(gòu)造函數(shù)內(nèi)
    在CCircle類構(gòu)造函數(shù)內(nèi)
    在CMyShape類構(gòu)造函數(shù)內(nèi)
    在CReetangle類構(gòu)造函數(shù)內(nèi)
    myCircle:Area=314.159Girth=62.8319
    myRectangle:Area=900Girth=120
    具體要求如下:
    (1)定義求面積的純虛函數(shù),請在注釋1后添加適當(dāng)?shù)恼Z句。
    (2)定義求周長的純虛函數(shù),請在注釋2后添加適當(dāng)?shù)恼Z句。
    (3)請在注釋3和注釋4后添加適當(dāng)?shù)恼Z句。
    注意:除在指定位置添加語句之外,不要改動程序中的其他內(nèi)容。
    試題程序:
    #include
    #inelude #definePI3.1415926
    classCMyPoint
    {
    public:
    intX,y;
    CMyPoint(inttx,intty):x(tx),y(ty){}
    };
    classCMyShape
    {
    public:
    CMyShape(){cout{{"在CMyShape類構(gòu)造函數(shù)內(nèi)"
    <
    //********1********
    //********2********
    protected:
    };
    classCCircle:publicCMyShape
    {
    public:
    CCircle(CMyPointi,doublej):CMyShape(),arc-
    Center(i),radius(j)
    {
    cout<<"在CCircle類構(gòu)造函數(shù)內(nèi)"<
    }
    doubleGetArea()
    {
    returnPI*radius*radius:
    }
    doubleGetGirth()
    {
    return2*PI*radius:
    }
    private:
    CMyPointarcCenter;
    doubleradius;
    };
    classCRectangle:publicCMyShape
    {
    public:
    CRectangle(CMyPointIt,CMyPomtrb):leftTop(it),
    rightBottom(rb),CMyShape()
    {
    cout<<"在CRectangle類構(gòu)造函數(shù)內(nèi)"<
    }
    doubleGetArea()
    {
    intwidth=abs(rightBottom.X-leftTop.x);
    intheight=abs(rightBottom.y-leftTop.y);
    returnwidth*height:
    }
    doubleGetGirth()
    {
    intwidth=abs(rightBottom.x-leftTop.x);
    intheight=abs(rightBottom.y-leftTop.y);
    return2*(width+height):
    }
    private:
    CMyPointleftTop,rightBottom;
    };
    voidmain()
    {
    CMyShape*myShape=NULL;
    CCircle*myCircle=newCCircle(CMyPoint(5,5),10);
    CRectangle*myRectangle=newCRectangle(CMy—Point(0,O),CMyPoint(30,30));
    //********3********
    cout<<"myCircle:"<<"Area="<