2012年3月計(jì)算機(jī)二級(jí)C++第九套上機(jī)模擬試題及答案解析

字號(hào):

一、改錯(cuò)題
    使用VC6打開(kāi)考生文件夾下的工程kt14_1,此工程包含一個(gè)源程序文件kt14_1.cpp,但該程序運(yùn)行有問(wèn)題,請(qǐng)改正程序中的錯(cuò)誤,使該程序的輸出結(jié)果為:
    A:noparameters
    B:intparameter
    A:noparameters
    B:intparameter
    C:intparameter
    源程序文件kt14_1.cpp清單如下:
    #include
    classA
    { /*****************found*****************/
    private:
    A(){cout<<"A:noparameters\n";}
    A(inta){cout<<"A:intparameter\n";} };
    classB:publicA
    { public:
    B(inta){cout<<"B:intparameter\n";} };
    /*****************found*****************/
    classC:publicB,publicA
    { public:
    /*****************found*****************/
    C(inta)::B(a){cout<<"C:intparameter\n";} };
    voidmain()
    { Bb(1);
    Cc(2); }
    【參考答案】
    (1)將private:改為:public:
    (2)將class C:public B,public A改為:class C:public B
    (3)將C(int a)::B(a){cout<<"C: int parameter\n"; }
    改為:C(int a):B(a){cout<<"C: int parameter\n";}
    【試題解析】
    (1)一個(gè)類(lèi)的構(gòu)造函數(shù)和析構(gòu)函數(shù)可以由系統(tǒng)自動(dòng)生成,也可以由用戶(hù)提供,但構(gòu)造函數(shù)和析構(gòu)函數(shù)都必須是該類(lèi)的公有成員函數(shù),否則編譯時(shí)將出現(xiàn)錯(cuò)誤,不能被調(diào)用;
    (2)A已經(jīng)是B的基類(lèi),C公有繼承B,A也就成為了C的基類(lèi),根據(jù)程序的運(yùn)行結(jié)果可知,C是要公有繼承B;
    (3)派生類(lèi)的構(gòu)造函數(shù),初始化基類(lèi)的參數(shù),調(diào)用基類(lèi)的構(gòu)造函數(shù)時(shí),使用符號(hào)“:”,而不是“::”;
    二、簡(jiǎn)單應(yīng)用題
    編寫(xiě)函數(shù)fun(),它的功能是求n以?xún)?nèi)(不包括n)同時(shí)能被3與7整除的所有自然數(shù)之和的平方根s,并做為函數(shù)值返回。
    例如:n為1000時(shí),函數(shù)值應(yīng)為s=153.909064。
    注意:部分源程序給出如下。
    請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入所編寫(xiě)的若干語(yǔ)句。
    試題程序:
    #include
    #include
    #include
    doublefun(intn)
    { main()
    { clrscr();
    printf("s=%f\n",fun(1000)); }
    【參考答案】
    double fun(int n)
    { double s=0.0;
    int i;
    for(i=0; i
    /*從0~n中找到既能被3整除同時(shí)又能被7整除的數(shù),并將這些數(shù)求和*/
    if(i%3==0&&i%7==0)
    s=s+i;
    s=sqrt(s); /*對(duì)s求平方根*/
    return s; }
    【試題解析】
    本題的解題思路是:逐個(gè)取得從0~n之間的所有數(shù),對(duì)每次取得的數(shù)進(jìn)行條件判斷,條件是既能被3整除同時(shí)又能被7整除,注意:這兩個(gè)條件要求同時(shí)成立,因此用到了“&&”運(yùn)算符。滿(mǎn)足條件,該數(shù)就被累加到s中去,所有符合條件的數(shù)找完后,用sqrt()函數(shù)對(duì)s求平方根。
    三、綜合應(yīng)用題
    使用VC6打開(kāi)考生文件夾下的工程kt14_3。此工程包含一個(gè)kt14_3.cpp,其中定義了二維坐標(biāo)類(lèi)Coordinate和三維坐標(biāo)類(lèi)ThreeDCoord,其中ThreeDCoord類(lèi)由Coordinate類(lèi)public派生,但
    兩個(gè)類(lèi)的定義并不完整。請(qǐng)按要求完成下列操作,將程序補(bǔ)充完整。
    (1)定義類(lèi)Coordinate的保護(hù)數(shù)據(jù)成員x和y,它們都是int型的數(shù)據(jù),代表二維坐標(biāo)的橫縱坐標(biāo)值。請(qǐng)?jiān)谧⑨尅?/**1**”之后添加適當(dāng)?shù)恼Z(yǔ)句。
    (2)根據(jù)類(lèi)Coordinate定義后的成員函數(shù)Display的實(shí)現(xiàn),補(bǔ)充該函數(shù)在類(lèi)Coordinate定義體內(nèi)的聲明,Display為二維坐標(biāo)類(lèi)的虛函數(shù)。請(qǐng)?jiān)谧⑨尅?/**2**”之后添加適當(dāng)?shù)恼Z(yǔ)句。
    (3)完成二維坐標(biāo)類(lèi)Coordinate的構(gòu)造函數(shù),將參數(shù)a和b分別賦值給數(shù)據(jù)成員x和y。請(qǐng)?jiān)谧⑨尅?/**3**”之后添加適當(dāng)?shù)恼Z(yǔ)句。
    (4)根據(jù)ThreeDCoord類(lèi)構(gòu)造函數(shù)的聲明,補(bǔ)充ThreeDCoord構(gòu)造函數(shù)的實(shí)現(xiàn),參數(shù)a和b通過(guò)調(diào)用基類(lèi)的構(gòu)造函數(shù)來(lái)初始化基類(lèi)的數(shù)據(jù)成員x和y,c賦值給數(shù)據(jù)成員z。請(qǐng)?jiān)谧⑨尅?/**4**”之后添加適當(dāng)?shù)恼Z(yǔ)句。
    輸出結(jié)果如下:
    [1,2]
    [3,4,5]
    注意:除在指定位置添加語(yǔ)句之外,請(qǐng)不要改動(dòng)程序中的其他內(nèi)容。
    源程序文件kt14_3.cpp清單如下:
    #include
    classCoordinate
    { protected:
    //**1**
    public:
    Coordinate(inta=0,intb=0);
    //**2** };
    Coordinate::Coordinate(inta,intb)
    { //**3** }
    voidCoordinate::Display()const
    { cout<<'['<
    classThreeDCoord:publicCoordinate
    { intz;
    public:
    ThreeDCoord(inta=0,intb=0,intc=0);
    virtualvoidDisplay()const; };
    //**4**
    voidThreeDCoord::Display()const
    { cout<<'['<
    voidmain()
    { Coordinatec(1,2);
    ThreeDCoordt(3,4,5);
    c.Display();
    t.Display(); }
    【參考答案】
    (1)protected:
    int x;
    int y;
    (2)virtual void Display() const;
    (3)x=a; y=b;
    (4)ThreeDCoord::ThreeDCoord(int a, int b, int c) : Coordinate(a, b)
    【試題解析】
    本題主要考查對(duì)類(lèi)數(shù)據(jù)成員的定義、構(gòu)造函數(shù)、派生類(lèi)及虛函數(shù)的理解,是C++類(lèi)知識(shí)的一個(gè)綜合考核。對(duì)虛函數(shù)的定義格式及繼承類(lèi)構(gòu)造函數(shù)的定義格式請(qǐng)多加注意。