全國2010年1月高等教育自學考試C++程序設(shè)計試題

字號:

全國2010年1月高等教育自學考試
    C++程序設(shè)計試題
    課程代碼:04737
    一、單項選擇題(本大題共20小題,每小題1分,共20分)
    在每小題列出的四個備選項中只有一個是符合題目要求的,請將其代碼填寫在題后的括號內(nèi)。錯選、多選或未選均無分。
    1.在C++中,頭文件擴展名為( )
    A..cpp
    B..h
    C..1ib
    D..obj
    2.下列符號中,不屬于分隔符的是( )
    A.,
    B./
    C.;
    D.{}
    3.可替換#definePI3.1415926的語句是( )
    A.float PI 3.1415926;
    B.const float PI=3.1415926;
    C.const PI(3.1415926);
    D.const 3.1415926;
    4.布爾類型標識符是( )
    A.void
    B.short
    C.long
    D.bool
    5.下列不是C++語言的基本數(shù)據(jù)類型的是( )
    A.字符類型
    B.整數(shù)類型
    C.邏輯類型
    D.枚舉類型
    6.C++允許在結(jié)構(gòu)中定義函數(shù),這些函數(shù)稱為( )
    A.靜態(tài)函數(shù)
    B.構(gòu)造函數(shù)
    C.析構(gòu)函數(shù)
    D.成員函數(shù)
    7.設(shè)函數(shù)void inc(int)將形參加1,如有整型變量int i=10;則執(zhí)行inc(i);后,i的值為( )
    A.9
    B.10
    C.11
    D.未知
    8.下列哪種默認參數(shù)的聲明是不正確的( )
    A. int max(int a,int b,int c,int d=0);
    B. int max(int a,int b,int c=0,int d=0);
    C. int max(int a=0,int b,int c=0,int d=0);
    D. int max(int a,int b=0,int c=0,int d=0);
    9.設(shè)int &max(int &,int &)返回兩參數(shù)中較大者,如有兩整型變量int a=10;int b=15;在執(zhí)行max(a,b)++后,a,b值分別為( )
    A.10,15
    B.11,15
    C.10,16
    D.1l,16
    10.包含哪種語句的函數(shù)不能聲明為內(nèi)聯(lián)函數(shù)( )
    A.循環(huán)
    B.變量自增自減
    C.if...else…
    D.變量聲明
    11.定義函數(shù)模板中使用的參數(shù)類型標識符需使用下列哪組符號括起來( )
    A.<>
    B.“”
    C.()
    D.{}
    12.一個類擁有多個構(gòu)造函數(shù),則這些構(gòu)造函數(shù)間為( )
    A.重載關(guān)系
    B.重復關(guān)系
    C.拷貝關(guān)系
    D.無關(guān)系
    13.對于拷貝構(gòu)造函數(shù)point::point(point& p),下列說明正確的是( )
    A.該函數(shù)只能訪問P的私有成員
    B.該函數(shù)不能訪問P的公有成員
    C.該函數(shù)可以訪問P的私有和公有成員
    D.該函數(shù)不能訪問P的成員
    14.使用delete[]刪除對象數(shù)組時,描述正確的是( )
    A.數(shù)組中各元素都調(diào)用析構(gòu)函數(shù)
    B.數(shù)組中各元素都調(diào)用構(gòu)造函數(shù)
    C.不調(diào)用析構(gòu)函數(shù)
    D.只有首元素調(diào)用析構(gòu)函數(shù)
    15.下列哪個指令屬于條件編譯指令( )
    A. #elif
    B. #error
    C. #pragma
    D. #include
    16.設(shè)類Test中存在成員static int x,則下列哪種初始化方式是正確的( )
    A.Test::int x=25;
    B.int x=25;
    C.int Test::x=25;
    D.int Test x=25;
    17.下列關(guān)于友元的描述錯誤的是( )
    A.成員函數(shù)不可作友元
    B.類可以作友元
    C.普通函數(shù)可以作友元
    D.靜態(tài)函數(shù)可以作友元
    18.在繼承中,派生類擁有的基類個數(shù)為( )
    A.0個
    B.1個
    C.多個
    D.至少1個
    19.基類中的protected成員,通過public派生,其在派生類中的可見性為( )
    A.不可訪問
    B.private
    C.protected
    D.public
    20.下列哪個不是面向?qū)ο蟮年P(guān)鍵要素( )
    A.抽象性
    B.結(jié)構(gòu)性
    C.封裝性
    D.多態(tài)性
    二、填空題(本大題共20小題,每小題1分,共20分)
    請在每小題的空格中填上正確答案。錯填、不填均無分。
    21.在STL庫中用于實現(xiàn)數(shù)組內(nèi)容反轉(zhuǎn)的函數(shù)是______。
    22.若要使用C++標準類庫,需要指定相應(yīng)的命名空間,所用的語句是______。
    23.C++語言中的整數(shù)常量有4種描述類型:十進制常量、長整型常量、八進制常量和______。
    24.聲明一個名為a的整型引用變量所使用的語句是______。
    25.重載的運算符仍保留原有的優(yōu)先級、______和語法結(jié)構(gòu)。
    26.執(zhí)行代碼
    int b=100;
    cout<程序的輸出結(jié)果是______。
    27.帶有純虛函數(shù)的類稱為抽象類,它只能作為______來使用。
    28.使用______作為函數(shù)參數(shù),實參對象和形參對象代表同一對象,改變形參對象的值就是改變實參對象的值。
    29.UML中對象之間的靜態(tài)關(guān)系是通過對象屬性之間的連接反映的,稱之為______。
    30.如果一個模板聲明列出多個參數(shù),則多個參數(shù)之間必須使用逗號隔開,每個參數(shù)都必須重復使用關(guān)鍵字______。
    31.C++類的構(gòu)造函數(shù)名與______名稱一樣,且沒有返回值。
    32.C++規(guī)定,當一個成員函數(shù)被調(diào)用時,系統(tǒng)自動向它傳遞一個隱含的參數(shù),該參數(shù)是一個指向調(diào)用該函數(shù)的對象的指針,該指針被稱為______指針。
    33.聲明一個常成員函數(shù)Fun,其返回類型為char,第一個參數(shù)類型為int,第二個參數(shù)類型為double,函數(shù)Fun的聲明原型是______。
    34.C++語言中的“聚合”隱含了兩種實現(xiàn)方式,一種是______,另一種是用一個類的對象作為一種廣義的數(shù)據(jù)類型來定義整體對象的一個屬性。
    35.簡單成員函數(shù)是指聲明中不含const、______和static關(guān)鍵字的函數(shù)。
    36.在派生類中繼承的基類成員的初始化,需要由派生類的構(gòu)造函數(shù)調(diào)用基類的______來完成。
    37.在C++中,利用向量類模板定義一個具有20個int的向量,其所有元素被置為1,實現(xiàn)此操作的語句是______。
    38.vector類中用于獲取無需再次分配內(nèi)存就能容納的對象個數(shù)的方法是______。
    39.動態(tài)聯(lián)編是程序運行到需要的語句處才動態(tài)確定的,這稱為______多態(tài)性。
    40.C++重載“=”運算符的函數(shù)名是______。
    三、改錯題(本大題共5小題,每小題4分,共20分)
    下面的每題中有一處錯誤,請用下橫線標出錯誤所在行并給出修改意見
    41.#include
    #define PI 3.14;
    void main()
    {
    double i;
    int r;
    cout<<″輸入圓形半徑:″;
    cin>>r;
    i=2 * PI * r;
    cout<<″圓形周長=″<    i=PI * r * r;
    cout<<″圓形面積=″<    }
    42.#include
    class A
    {
    private:
    int x,y;
    public:
    A(int a=0,b=1);
    void Show();
    };
    A::A(int a,int b)
    {
    x=a;
    y=b;
    }
    void A::Show()
    {
    cout<<″x=″<    cout<<″y=″<    }
    43.#include
    class A
    {
    unsigned char var;
    public:
    A(unsigned char x){
    var=x:
    }
    void print(){
    cout<<″var=″<    }
    };
    void main()
    {
    A a(″x″) ;
    a. print ();
    }
    44. #include < iostream. h>
    class Class
    {
    public:
    void print(int a,int b) {
    cout< < ″int:″ < < a < < endl;
    cout < < ″int:″ < < b < < endl;
    }
    void print(char * a,char * b) {
    cout< < ″string:″ < < a < < endl;
    cout < <″ string:″ < < b < < endl;
    }
    void print(char * a,unsigned int b){
    cout < < ″string:″ < < a < < endl;
    cout < < ″int:″ < < b < < endl;
    }
    };
    void main()
    {
    Class cls;
    cls. print(10,20);
    cls. print(′c′,1);
    cls. print(′x′,′y′);
    cls. print(″Hello!″,0);
    }
    45. #include < iostream. h >
    class Class
    {
    private:
    int val;
    public:
    void func( int a)
    {
    val = a;
    }
    };
    void main()
    {
    Class * cls ;
    cls - > func(10) ;
    }
    四、完成程序題(本大題共5小題,每題4分,共20分)
    46.將下面程序補充完整,使程序計算100以內(nèi)所有可被7整除的自然數(shù)之和。
    #include
    void main()
    {
    int x=1;
    int sum=0;
    while(true)
    {
    if(x>100){
    ______;
    }
    if(______){
    sum=sum+x;
    }
    x++;
    }
    cout<    }
    47.將下面程序補充完整,使程序執(zhí)行結(jié)果為9。
    #include
    class Class{
    public:
    ______{
    x=a;
    }
    ______{
    return x * x;
    }
    private:
    int x;
    };
    void main()
    {
    Class a(3);
    cout<}
    48.將下面程序補充完整,使程序正確的初始化私有變量var及釋放資源。
    class Class
    {
    private:
    int * var;
    public:
    Class(int num);
    ~Class();
    };
    Class::Class(int num)
    {
    _______;
    }
    Class::~Class()
    {
    _______;
    }
    49.將下面程序補充完整,使程序的輸出結(jié)果為:
    ClassA::Print
    ClassB::Print
    程序如下:
    #include
    class Base
    {
    public:
    virtual void Print() const {
    cout<<″Base::Print″<    }
    };
    class ClassA:public Base
    {
    public:
    void Print()const{cout<<″ClassA::Print″<    };
    class ClassB:public Base
    {
    public:
    void Print()const{cout<<″ClassB::Print″<    };
    void Print(______)
    {
    ______;
    }
    void main()
    {
    ClassA a;
    ClassB b;
    Print(a);
    Print(b);
    }
    50.下列程序的運行結(jié)果如下:
    x=22,y=22
    根據(jù)結(jié)果將程序補充完整。
    #include
    template <______>
    void f(______)
    {
    if(sizeof(T1)>sizeof(T2))
    x=(T1)y;
    else
    y=(T2)x;
    }
    void main(){
    double x=134.2;
    int y=22;
    f(x,y);
    cout<<″x=″<    }
    五、程序分析題(本大題共2小題,每小題5分,共10分)
    請給出下面程序的輸出結(jié)果
    51. #include < iostream. h >
    class Class
    {
    public:
    static int var;
    Class()
    {
    var+ +;
    }
    };
    int Class::var = 0;
    void main()
    {
    cout < < ″Class::var =″ < < Class: : var < < endl;
    Class cl ;
    cout < <″cl. var=″ <     Class c2, c3 ;
    cout < < ″c2. var =″ < < c2. var < < endl;
    }
    52. #include < iostream. h >
    class A
    {
    public:
    A();
    void Show() ;
    ~A();
    private:
    static int c;
    };
    int A::c =0;
    A::A()
    {
    cout < < ″constructor.″ < < endl;
    c+ =10;
    }
    void A: :Show()
    {
    cout< < ″c=″ <     }
    A::~A()
    {
    cout < < ″destructor. ″ < < endl;
    }
    void main()
    {
    A a,b;
    a. Show();
    b. Show();
    }
    六、程序設(shè)計題(本大題共l小題,共10分)
    53.利用LOCATION類,使用繼承定義圓類CIRCLE,圓由圓心和半徑構(gòu)成。提供得到圓心坐標和半徑的成員函數(shù)、以及計算圓的周長和面積的成員函數(shù)。在主程序中創(chuàng)建兩個圓A和B,圓心坐標分別為(0,3)、(3,7),按如下格式輸出兩個圓的圓心坐標、周長和面積,并計算和輸出兩個圓的圓心之間的距離。考試大收集整理
    A:(xl,y1,r1),Girth=g1,Area=a1
    B:(x2,y2,r2),Girth=g2,Area=a2
    A(xl,y1),B(x2,y2),Distance=d
    定義LOCATION類,該類沒有“繼承”等現(xiàn)象。注意二維坐標點之間的距離公式。
    class LOCATION{
    double x,y;
    public: virtual double getx()const{return x;};
    virtual double gety()const{return y;};
    virtual double dist(LOCATION &s)const;
    LOCATION(double x,double y):x(x),y(y){};};
    double LOCATION::dist(LOCATION &s)const{
    double xd=s.x — x,yd=s.y — y;
    return sqrt(xd*xd+yd*yd);}