2014年4月自學(xué)考試C++程序設(shè)計(jì)試題

字號(hào):

全國2014年4月高等教育自學(xué)考試
    C++程序設(shè)計(jì)試題
    課程代碼:04737
    請(qǐng)考生按規(guī)定用筆將所有試題的答案涂、寫在答題紙上。
    選擇題部分
    注意事項(xiàng):
    1.答題前,考生務(wù)必將自己的考試課程名稱、姓名、準(zhǔn)考證號(hào)用黑色字跡的簽字筆或鋼筆填寫在答題紙規(guī)定的位置上。
    2.每小題選出答案后,用2B鉛筆把答題紙上對(duì)應(yīng)題目的答案標(biāo)號(hào)涂黑。如需改動(dòng),用橡皮擦干凈后,再選涂其他答案標(biāo)號(hào)。不能答在試題卷上。
    一、單項(xiàng)選擇題(本大題共20小題,每小題1分,共20分)
    在每小題列出的四個(gè)備選項(xiàng)中只有一個(gè)是符合題目要求的,請(qǐng)將其選出并將“答題
    紙”的相應(yīng)代碼涂黑。錯(cuò)涂、多涂或未涂均無分。
    1.下列關(guān)于類的權(quán)限描述錯(cuò)誤的是
    A.類本身的成員函數(shù)可以訪問自身的任何成員
    B.類的對(duì)象只能訪問公有成員
    C.普通函數(shù)可以不通過對(duì)象直接訪問類的公有成員
    D.一個(gè)類可以包含另一個(gè)類的對(duì)象作為成員
    2.只能在自身類和子類成員函數(shù)中被訪問,無法通過對(duì)象在類外訪問的成員屬于
    A.private B.protected
    C.public D.publish
    3.面向?qū)ο笾械摹皩?duì)象”是指
    A.行為抽象 B.數(shù)據(jù)抽象
    C.行為抽象和數(shù)據(jù)抽象的統(tǒng)一 D.行為抽象和數(shù)據(jù)抽象的對(duì)立
    4.在類外定義成員函數(shù)時(shí),::運(yùn)算符兩側(cè)分別連接
    A.返回值類型 函數(shù)名 B.返回值類型 類名
    C.函數(shù)名 類名 D.類名 函數(shù)名
    5.設(shè)函數(shù)int& index(int * a,int i)返回?cái)?shù)組a中下標(biāo)為i的元素,如存在整型數(shù)組int Array[]={1,2,3},在執(zhí)行index(Array,2)+ +后,Array中各元素值為
    A.{0,1,2} B.{l,1,2}
    C.{1,2,4} D.{0,2,3}
    6.類構(gòu)造函數(shù)定義的位置是
    A.類體內(nèi)或體外 B.只是在類體內(nèi)
    C.只在類體外 D.在類的成員函數(shù)中
    7.設(shè)存在數(shù)組a,其長度為Len,則下列哪項(xiàng)泛型算法用于在a中尋找值Value的位置
    A.reverse(a,a+Len,Value); B.sort(a,a+Len,Value);
    C.find(a,a+Len,Value); D.copy(a,a+Len,Value);
    8.關(guān)于對(duì)象的性質(zhì),下列描述錯(cuò)誤的是:
    A.同一類對(duì)象間可相互賦值 B.可以使用對(duì)象數(shù)組
    C.對(duì)象不可以用作函數(shù)參數(shù) D.一個(gè)對(duì)象可以用作另一個(gè)類的成員
    9.聲明一個(gè)沒有初始化參數(shù)的對(duì)象,需調(diào)用
    A.指定參數(shù)構(gòu)造函數(shù) B.拷貝構(gòu)造函數(shù)
    C.初始化函數(shù) D.默認(rèn)構(gòu)造函數(shù)
    10.下列運(yùn)算符不能重載的是
    A.! B.sizeof
    C.new D.delete
    11.如P是一指針類型表達(dá)式,則下列表達(dá)式中不是左值表達(dá)式的是
    A.P B.*P
    C.&P D.P+1
    12.使用下列流格式控制符能輸出一個(gè)換行符的是
    A.dec B.oct
    C.hex D.endl
    13.下列表達(dá)式,能將P聲明為常量指針的是
    A.const int * P; B.int*const P;
    C.const int * const P D.int * P
    14.C++程序文件擴(kuò)展名為
    A..cpp B..h
    C..lib D..obj
    15.對(duì)C++中主函數(shù)描述正確的是
    A.名稱為main,可為多個(gè) B.名稱不限,可為多個(gè)
    C.名稱為main,必須有且只能有一個(gè) D.名稱不限,必須有且只能有一個(gè)
    16.假定有char * P="Hello";,要輸出這個(gè)字符串的地址值的正確寫法是
    A.cout<< *P B.cout<    C.cout<<&P D.cout<<(void *)P
    17.下列描述錯(cuò)誤的是
    A.在沒創(chuàng)建對(duì)象前,靜態(tài)成員不存在
    B.靜態(tài)成員是類的成員,不是對(duì)象成員
    C.靜態(tài)成員不能是虛函數(shù)
    D.靜態(tài)成員函數(shù)不能直接訪問非靜態(tài)成員
    18.對(duì)于友元描述正確的是
    A.友元是本類的成員函數(shù) B.友元不是本類的成員函數(shù)
    C.友元不是函數(shù) D.以上皆不正確
    19.一個(gè)函數(shù)功能不太復(fù)雜,但要求頻繁使用,則該函數(shù)適合作為
    A.內(nèi)聯(lián)函數(shù) B.重載函數(shù)
    C.遞歸函數(shù) D.嵌套函數(shù)
    20.下列默認(rèn)參數(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);
    非選擇題部分
    注意事項(xiàng):
    用黑色字跡的簽字筆或鋼筆將答案寫在答題紙上,不能答在試題卷上。
    二、填空題(本大題共20小題,每小題1分,共20分)
    21.C++程序的編譯是以______為單位進(jìn)行的。
    22.默認(rèn)參數(shù)是在______中說明的,默認(rèn)參數(shù)可以多于一個(gè)。
    23.通過C++語言中的______機(jī)制,可以從現(xiàn)存類中構(gòu)建其子類。
    24.拷貝構(gòu)造函數(shù)使用______作為參數(shù)初始化創(chuàng)建中的對(duì)象。
    25.基類的公有成員在通過公有派生得到的子類中訪問權(quán)限是______。
    26.要關(guān)閉一個(gè)輸出流對(duì)象myFile,所用的C++語句是______。
    27.執(zhí)行下列代碼:double pi=3.1415926;cout<    28.對(duì)象作為函數(shù)參數(shù),就是將實(shí)參對(duì)象的______傳遞給形參對(duì)象,這種傳遞是單向的。
    29.建立一個(gè)對(duì)象時(shí),對(duì)象的狀態(tài)是不確定的。為了使對(duì)象的狀態(tài)確定,必須對(duì)其進(jìn)行正確的______。
    30.C++類中的______函數(shù)在對(duì)象的生存期結(jié)束時(shí)被自動(dòng)調(diào)用。
    31.C++語言中的整數(shù)常量有四種:十進(jìn)制常量、長整型常量、八進(jìn)制常量和______。
    32.UML中對(duì)象之間的靜態(tài)關(guān)系是通過對(duì)象屬性之間的連接反映的,稱之為______。
    33.聲明一個(gè)常成員函數(shù)Fun,返回類型為char,第一個(gè)參數(shù)類型為int,第二個(gè)參數(shù)類型為double,則該函數(shù)的聲明原型是______。
    34.在C++語言中,利用向量類模板定義一個(gè)具有20個(gè)int類型且初值為1的向量C,實(shí)現(xiàn)此操作的語句是______。
    35.執(zhí)行下列代碼:int a=123,b=321;cout<    37.vector類中用于返回向量中第一個(gè)對(duì)象的方法是______。
    38.C++語言中動(dòng)態(tài)分配內(nèi)存的關(guān)鍵字是______。
    39.C++類成員的訪問權(quán)限有______、公有和保護(hù)三種。
    40.寫出聲明一個(gè)復(fù)數(shù)對(duì)象num的語句,并使對(duì)象被初始化為單精度2.2+1.3i,此聲明語句是______。
    三、改錯(cuò)題(本大題共5小題,每小題4分,共20分)
    下面的每題中有一處錯(cuò)誤,請(qǐng)?jiān)诖痤}紙上寫出錯(cuò)誤所在行并給出修改意見
    41.#include
    main ( ){
    int x=5,y=6;
    const int *p=&x;
    * p=y;
    cout<<*p<    }
    42.#include
    class f {
    private:T x, y;
    public:f1(T a,T b){x=a;y=b;}
    T max( ){return(x>y)?x:y;}
    };
    main( ) {
    f a;
    a.f1(1.5,3.8);
    cout<}
    43.#include
    class point {
    private:float x,y;
    public:point(float a,float b){x=a;y=b;}
    f( ){x=0;y=0;}
    void getx( ){cout<    void gety( ){cout<    };
    main( ) {
    point a (3.5);
    a.getx( );
    }
    44.#include
    class f{
    private:float x,y;
    float get( ){return x+y;}
    public:f1(float a,float b){x=a;y=b;}
    };
    main( ) {
    f a;
    a.f1(1,3.8);
    cout<}
    45.#include
    class testl{
    private:Int x;
    public:testl( ){x=2;}
    void set(int a){x=a;}
    void get(){cout<    };
    class test2{
    private:int x;
    public:test2( ){x=3;}
    void set(int a){x=a;}
    void get( ){cout<    };
    class test:public testl,public test2.{
    private:int x;
    public:void set(int a){x=a;}
    void gettest( ){cout<    };
    main( ) {
    test a;a.get( );
    }
    四、完成程序題(本大題共5小題,每小題4分,共20分)
    46.完成下面類中的成員函數(shù)的定義。
    class point
    {
    private:
    int m,n;
    public:
    point(int,int);
    point(point&);
    };
    point::point(int a,int b)
    {
    m=a;
    _____=b;
    }
    point::point(______)
    {
    m=t.m;
    n=t.n;
    }
    47.#include
    using namespace std;
    class base
    {
    private:int x;
    public:base(int a){x=a;}
    int get( ){return x;}
    void showbase( ) {cout<<"x="<    };
    class Derived:public base
    {private:int y;
    public:Derived(int a,int b):base(a) {y=b;}
    void showderived( )
    {cout<<"x="<    };
    void main()
    {
    base b(3);
    Derived d(6,7);
    b.showbase( );
    d.showderived( );
    __________________;
    b.showbase( );
    __________________;
    b1.showbase( );
    base * pb=&b1;’
    pb->showbase( );
    d.showderived( );
    b.showbase( );
    }
    輸出結(jié)果如下:
    x=3
    x=6,y=7
    x=6
    x=6
    x=6
    x=6,y=7
    x=6
    48.#include
    #include
    using namespace std;
    class complex
    {
    public:
    int real:
    int imag;
    complex(int r=0,int i=0)
    {
    real=r;
    imag=i;
    }
    };
    complex operator+(__________,complex&b)
    {
    int r=a.real+b.real:
    int i=a.imag+b.imag;
    return__________:
    }
    void main( )
    {
    complex x(1,2),y(3,4),z;
    z=x+y;
    cout<    }
    49.下面程序的運(yùn)行結(jié)果如下:
    This is line1
    This is line2
    This is line3
    將下列程序補(bǔ)充完整,答案寫在答題紙上。源程序如下:
    #include
    #include______
    using namespace std;
    void main( )
    {
    fstream fin,fout;
    fout.open("my.txt",ios::out);
    if(! fout.is_open( ))
    return;
    for(int i=0;i<3;i=i+1)
    fout<<"This is line"<    fout.close( );
    fin.open("my.txt",ios::in);
    if(! fin.is_open( ))
    return;
    char str[100];
    while(______)
    {
    fin.getline(str,100);
    cout<    }
    fin.close( );
    }
    50.求兩個(gè)浮點(diǎn)數(shù)之差的cha函數(shù)的原型聲明、調(diào)用方法。
    #include
    using namespace std;
    void main( )
    {
    float a,b;
    ______;∥函數(shù)cha的原型聲明
    a=12.5;
    b=6.5;
    float c=__________;∥調(diào)用函數(shù)cha
    cout<    }
    float cha(float x,float y)
    {
    float w;
    w=x-y;
    return w;
    }
    五、程序分析題(本大題共2小題,每小題5分,共1O分)
    51.#lnclude
    void func( );
    void main( )
    {
    for(inti=0;i<6;i++)
    {
    func( );
    }
    }
    void func( )
    {
    int x=0;
    x ++;
    static int y=0;
    y ++;
    cout<<"x="<    }
    52.#include
    class A
    {
    public:
    A( );
    void Show( );
    ~A( );
    private:
    static int c;
    };
    int A::c=O;
    A::A( )
    {
    cout<<"constructor."<    c +=10;
    }
    void A::Show( )
    {
    cout<<"c="<    }
    A::~A( )
    {
    cout<<"destrucator."<    }
    void main( )
    {
    A a,b;
    a.Show( );
    b.Show( );
    }
    六、程序設(shè)計(jì)題(本大題共1小題,共10分)
    53.在三角形類tri實(shí)現(xiàn)兩個(gè)函數(shù),功能是輸入三個(gè)頂點(diǎn)坐標(biāo)判斷是否構(gòu)成等邊三角形
    #include
    #include
    class point { point
    private:float x,y;
    public:f(float a,float b){x=a;y=b;}
    f( ){x=0;y=0;}
    Void set(float a,float b){x=a;y=b;}
    float getx( ){return x;}
    noat gety( ){return y;}
    };
    class tri{
    point x,y,z;
    float s1,s2,s3;
    public....settri(....);∥用于輸入三個(gè)頂點(diǎn)坐標(biāo)
    ....test(....);∥用于判斷是否構(gòu)成等邊三角形
    };
    請(qǐng)寫出兩個(gè)函數(shù)的過程(如果需要形式參數(shù),請(qǐng)給出形參類型和數(shù)量,以及返回值類型)