2000年4月廣東省高等教育自學(xué)考試面向?qū)ο蟪绦蛟O(shè)計(jì)試題

字號(hào):

一、填空題(答案寫在答卷相應(yīng)的橫線上。每小題1分,共10分)
    1.面向?qū)ο蟪绦蛟O(shè)計(jì)語(yǔ)言的先驅(qū)是Simula,理論上比較完善的面向?qū)ο蟪绦蛟O(shè)計(jì)語(yǔ)言是 Eiffel,導(dǎo)致面向?qū)ο蟪绦蛟O(shè)計(jì)興起的語(yǔ)言及程序設(shè)計(jì)環(huán)境是Smalltalk,而在Internet上最有前途的面向?qū)ο蟪绦蛟O(shè)計(jì)語(yǔ)言是( )。
    2.指向基類的對(duì)象的指針變量也可以指向( )的對(duì)象。
    3.類的省卻的繼承訪問(wèn)控制是( )。
    4.字符串類型的變量一般由( )和( )類型的變量表示。
    5.類用作數(shù)據(jù)封裝機(jī)制,它將相關(guān)的數(shù)據(jù)以及作用在這些數(shù)據(jù)上的操作組織在一起,實(shí)現(xiàn)了( ) .
    6.類用作類型定義機(jī)制,它可用于聲明對(duì)象和進(jìn)行類型檢查,還允許用戶通過(guò)( )機(jī)制定義子類型。
    7.在函數(shù)定義或說(shuō)明時(shí),具有缺省值的形式參數(shù)稱為( ) .
    8.( ) 語(yǔ)句中斷并結(jié)束循環(huán)語(yǔ)句?
    9.符號(hào)常量是指定義了值的 ( ) .
    10.面向?qū)ο蟪绦蛑校瑢?shí)體的狀態(tài)由( )表示,其行為由( )表示。
    二、單項(xiàng)選擇題(在每小題的備選答案中選出一個(gè)正確的答案,并將正確答案的號(hào)碼寫在答卷相應(yīng)的位置上。每小題1分,共10分)
    11.cout是I0流庫(kù)預(yù)定義的
    A 類B 對(duì)象C 包含文件D 常量
    12.繼承機(jī)制的作用是
    A 信息隱藏B 數(shù)據(jù)封裝C 定義新類D數(shù)據(jù)抽象
    13.類的定義如下,試問(wèn)類B的對(duì)象占據(jù)內(nèi)存多少宇節(jié)空間
    class A {int b; protected: int a; public: A(int n){a=n;};};
    class B: public A {int c;};
    A 2B 3C 4D 6
    14.一段程序的定義如下,在函數(shù)f()中將動(dòng)態(tài)對(duì)象的成員n的值改為34的語(yǔ)句應(yīng)該為
    class A {
    int n;
    public:setn(int nl) {n=nl;}
    A(int x) {n = x; } }
    int f() {A * ptr = new A(45);…… }
    AA(34);Bptr.setn(34);Cptr->setn(34);Dsetn(34);
    15.類的析構(gòu)函數(shù)的作用是
    A 一般成員函數(shù)B 類的初始化C 對(duì)象的初始化D 刪除對(duì)象創(chuàng)建的所有對(duì)象
    16.類的析構(gòu)函數(shù)是在什么時(shí)間被自動(dòng)調(diào)用的
    A 類創(chuàng)建時(shí)B 創(chuàng)建對(duì)象時(shí)C 刪除對(duì)象時(shí)D不自動(dòng)調(diào)用
    17.下面哪個(gè)是正確的遞歸函數(shù),它保證對(duì)所有的參數(shù)能夠結(jié)束
    Aint f(int n) {if(n
    B int f(int n) {if(n>l) return 1; else return n*f(n-l); }
    C int f(int n) {if(abs(n)
    D int f(int n) {if(n>l) return 1; else return n*f(n*2); }
    18.求解問(wèn)題的一般方法有
    A 結(jié)構(gòu)化方法B 求精算法和精美算法C 模塊方法D 過(guò)程化方法
    19.-1在計(jì)算杭內(nèi)的存儲(chǔ)形式是
    A 0xFFFFB 1111111111111110C 1000 0000 0000 0001 D 0000 0000 0000 0001
    20.下列常量中,哪個(gè)的類型為float類型
    A 2.FB .2LC 0.2E100D0.0
    三、名詞解釋題(每小題z分,共10分)
    21.變量
    22.內(nèi)部變量
    23.賦值運(yùn)算的類型兼容性
    24.拷貝構(gòu)造函數(shù)
    25.實(shí)例化
    四、改錯(cuò)題(每小題1分,共10分)
    26.要求下面循環(huán)體中的語(yǔ)句x+=3執(zhí)行30次,請(qǐng)改正程序。
    for(j=0; j<90; j++)if(j/3=0) x+=3;
    27.下面的函數(shù)求一個(gè)無(wú)負(fù)號(hào)數(shù)的2倍值,請(qǐng)?jiān)撜e(cuò)誤。
    unsigned times(unsigned n) {return n;}
    28.指出程序段中的錯(cuò)誤: for(k=l,k
    29.以下語(yǔ)句是合法的C++語(yǔ)言語(yǔ)句嗎不合法的又錯(cuò)在哪里
    if (x > 0) then x =x + 1; else x - x - 1;
    30.改正函數(shù)原型static int calc_middle(x, y, z);
    31.下列的類聲明程序片段是否有語(yǔ)法錯(cuò)誤,如有請(qǐng)?jiān)撜?:
    class FIGURE {PUBLIC:
    figure();
    FIGURE();
    ~FIGURE (int have_drawed);};
    32.設(shè)有如下的程序片段,是否有錯(cuò)誤,如有錯(cuò)誤請(qǐng)?jiān)撜?BR>    class PRINTER (
    unsigned char flag;
    int print_page() (……);
    public:
    PR INTER (unsigned char fig) {……};
    int print_file () {……};};
    int main() {PRINTER LQ_1600K(0x3F8, ‘\0’);
    LQ-1600K.print-page 0;}
    33. 請(qǐng)指出程序片段的語(yǔ)法錯(cuò)誤。
    int * age_ptr;
    int m = 3;
    *age_ptr = &m;
    34.請(qǐng)指出程序片段的語(yǔ)法錯(cuò)誤。
    int* salary_ptr;
    float* work_hours_ptr;
    salary_ptr = work_hours_ptr;
    35.指出下面程序中的錯(cuò)誤。
    #include
    #include
    class PERSON {public:
    PERSON(char *name) { int len;
    len = strlen (name);
    PERSON::name = new char[len+1];
    strcpy(PERSON:: name, name);}
    ~PERSON () { delete name; }
    char* get_name () {return name; )
    protected:char *name;};
    class STUDENT: PERSON {public:
    void STUDENT (char *st_name, int score): score (score)
    { int len;len = strlen(st_name);
    name = new char[len+l];
    strcpy(name, st_name);}
    int get_score () { return score; )
    protected:
    int score = 100;
    {;int main () {STUDENT soft(“Zhao”。 80);
    cout 《“Student:” 《 soft.get_name ();
    cout 《“Score: ” 《soft.score 《“。\n”;
    return 0;}
    五、簡(jiǎn)答題(每小題3分,共15分)
    36.試說(shuō)明實(shí)體與程序之間的關(guān)系。
    37. C++是如何實(shí)現(xiàn)數(shù)據(jù)封裝和信息隱藏的
    38. 舉例說(shuō)明如何動(dòng)態(tài)創(chuàng)建對(duì)象和刪除對(duì)象
    39. 什么是父類型什么是子類型
    40. 什么是函數(shù)重載
    六、程序理解題(每小題4分,共20分)
    41. 給出下面程序的輸出。
    #include
    int main() {const int max_number = 10;
    int index;
    int find_one, find_two;
    int array [max_number] ={20, 12, 32, 13, 19, 41, 10, 61, 23. 57};
    find_one = array ;
    find_two = array ;
    for (index = 0; index < max_number; index =index + 1) {if (array[index] < find_one) find_one = array [index];if (array[index] > find_two) find_two = array [index];}
    cout 《 “\n0k, find_one =” 《find_one 《“, find_two =” 《find_two;
    return 1;}
    42.請(qǐng)給出下面程序的輸出結(jié)果。
    #include
    const unsigned long MEGA_BYTE = (unsigned long)1024 *1024;
    class COMPUTER {public:
    COMPUTER (unsigned long m_size, unsigned long h_size, int CD_speed)
    {memory_size = m_size;
    hard_disk_size = h_size;
    CD_ROM_speed = CD_speed;
    if (memory_size > (unsigned long)16 * MEGA_BYTE) {cout 《 “\nYou should install Windows 95!”;} else {cout 《 “\nYou can only install Windows 3.1!”;}
    if (hard_disk_size > (unsigned long)800 * MEGA_BYTE) {cout 《 “\nYou can install Visual C++ 4.0!”;} else {cout 《 “\nYou can only install Borland C++ 4.5!”;}
    if (CD_ROM_speed > 4) cout 《 “\nYou can see Video CD!”;
    else cout 《 “\nYou can only listen Audio CD!”;
    }
    ~COMPUTER () { cout 《 “\nYou should make good use of your computer!”; }