2012年3月全國計(jì)算機(jī)等級考試二級C++ 筆試模擬試題(二)

字號:

全國計(jì)算機(jī)等級考試二級C++ 筆試模擬試題(二)
    一、選擇題
    在下列各題的A)、B)、C)、D)四個(gè)選項(xiàng)中,只有一個(gè)選項(xiàng)是正確的,請將正確的選項(xiàng)涂寫在答題卡相應(yīng)位置上,答在試卷上不得分。
    (1)假設(shè)線性表的長度為n,則在最壞情況下,冒泡排序需要的比較次數(shù)為
    A)log2n
    B)n2
    C)O(n1.5)
    D)n(n-1)/2
    (2)算法分析的目的是
    A)找出數(shù)據(jù)結(jié)構(gòu)的合理性
    B)找出算法中輸入和輸出之間的關(guān)系
    C)分析算法的易懂性和可靠性
    D)分析算法的效率以求改進(jìn)
    (3)線性表L=(a1,a2,a3,…ai,…an),下列說法正確的是
    A)每個(gè)元素都有一個(gè)直接前件和直接后件
    B)線性表中至少要有一個(gè)元素
    C)表中諸元素的排列順序必須是由小到大或由大到小
    D)除第一個(gè)元素和最后一個(gè)元素外,其余每個(gè)元素都有一個(gè)且只有一個(gè)直接前件和直接后件
    (4)在單鏈表中,增加頭結(jié)點(diǎn)的目的是
    A)方便運(yùn)算的實(shí)現(xiàn)
    B)使單鏈表至少有一個(gè)結(jié)點(diǎn)
    C)標(biāo)識表結(jié)點(diǎn)中首結(jié)點(diǎn)的位置
    D)說明單鏈表是線性表的鏈?zhǔn)酱鎯?shí)現(xiàn)
    (5)軟件工程的出現(xiàn)是由于
    A)程序設(shè)計(jì)方法學(xué)的影響
    B)軟件產(chǎn)業(yè)化的需要
    C)軟件危機(jī)的出現(xiàn)
    D)計(jì)算機(jī)的發(fā)展
    (6)軟件開發(fā)離不開系統(tǒng)環(huán)境資源的支持,其中必要的測試數(shù)據(jù)屬于
    A)硬件資源
    B)通信資源
    C)支持軟件
    D)輔助資源
    (7)在數(shù)據(jù)流圖(DFD)中,帶有名字的箭頭表示
    A)模塊之間的調(diào)用關(guān)系
    B)程序的組成成分
    C)控制程序的執(zhí)行順序
    D)數(shù)據(jù)的流向
    (8)分布式數(shù)據(jù)庫系統(tǒng)不具有的特點(diǎn)是
    A)數(shù)據(jù)分布性和邏輯整體性
    B)位置透明性和復(fù)制透明性
    C)分布性
    D)數(shù)據(jù)冗余
    (9)關(guān)系表中的每一橫行稱為一個(gè)
    A)元組
    B)字段
    C)屬性
    D)碼
    (10)下列數(shù)據(jù)模型中,具有堅(jiān)實(shí)理論基礎(chǔ)的是
    A)層次模型
    B)網(wǎng)狀模型
    C)關(guān)系模型
    D)以上3個(gè)都是
     ?。?1)下列字符串中可以用作C++語言標(biāo)識符的是
    A)_1234
    B)foo~~bar
    C)virtual
    D)34var
    (12)關(guān)于C++語言與C語言關(guān)系描述中錯(cuò)誤的是
    A)C++語言是C語言的超集
    B)C++語言對C語言進(jìn)行了擴(kuò)充
    C)C++語言包含C語言的全部語法特征
    D)C++語言與C語言都是面向?qū)ο蟮某绦蛟O(shè)計(jì)語言
    (13)下列語句的輸出結(jié)果
    cout << strlen("\t\"\065\xff\n");
    A)5
    B)14
    C)8
    D)輸出項(xiàng)不合法,無正常輸出
    (14)在C++語言中,不合法的實(shí)型數(shù)據(jù)的是
    A)0.123
    B)123e3
    C)2.1e3.5
    D)123.0
    (15)若有如下語句
    #include
    void main()
    {
    int x=3;
    do{
    x=x-2;
    cout << x;
    }while(!(--x));
    }
    則上面程序段
    A)輸出的是1
    B)輸出的是1和-2
    C)輸出的是3和0
    D)是死循環(huán)
    (16)下面有關(guān)for循環(huán)的正確描述是
    A)for循環(huán)只能用于循環(huán)次數(shù)已經(jīng)確定的情況
    B)for循環(huán)是先執(zhí)行循環(huán)體語句,后判斷表達(dá)式
    C)在for循環(huán)中,不能用break語句跳出循環(huán)體
    D)for循環(huán)的循環(huán)體語句中,可以包含多條語句,但必須用花括號括起來
    (17)以下程序中調(diào)用cin函數(shù)給變量a輸入數(shù)值的方法是錯(cuò)誤的,其錯(cuò)誤原因是
    #include
    void main()
    { int *p,*q,a,b;
    p=&a;
    cout << "input a:";
    cin >> p;
    }
    A)*p表示的是指針變量p的地址
    B)p表示的是變量a的地址,而不是變量a的值
    C)*p表示的是指針變量p的值
    D)*p只能用來說明p是一個(gè)指針變量
    (18)假定int類型變量占用兩個(gè)字節(jié),其有定義int x[10]={0,2,4};,則數(shù)組x在內(nèi)存中所占字節(jié)數(shù)是
    A)3
    B)6
    C)10
    D)20
    (19)有以下程序
    #include
    void fun(int a,int b,int c)
    { a=456,b=567,c=678;}
    void main()
    {
    int x=10,y=20,z=30;
    fun(x,y,z);
    cout << x << ′,′ << y << ′,′ << z << endl;
    }
    輸出結(jié)果是
    A)30,20,10
    B)10,20,30
    C)456,567,678
    D)678,567,456
    (20)以下敘述正確的是
    A)函數(shù)可以嵌套定義但不能嵌套調(diào)用
    B)函數(shù)既可以嵌套調(diào)用也可以嵌套定義
    C)函數(shù)既不可以嵌套定義也不可以嵌套調(diào)用
    D)函數(shù)可以嵌套調(diào)用但不可以嵌套定義
     ?。?1)下列定義中p指向的地址可更改,但*p不能夠更改的是
    A)const int *p;
    B)int * const p;
    C)const int *const p;
    D)int *p;
    (22)下面的語句中錯(cuò)誤的是
    A)int a = 5; int x[a];
    B)const int a = 5; int x[a];
    C)int n = 5; int *p = new int [a];
    D)const int n = 5; int *p = new int [a];
    (23)下面程序的結(jié)果是
    #include
    class A
    {
    int a;
    public:
    A():a (1){}
    void showa(){cout << a;}
    };
    class B
    {
    int a;
    public:
    B():a (2){}
    void showa(){cout << a;}
    };
    class C : public A, public B
    {
    int a;
    public:
    C():a (3){}
    void showa(){cout << a;}
    };
    void main()
    {
    C c;
    c.showa();
    }
    A)1
    B)2
    C)3
    D)程序有錯(cuò)誤
    (24)關(guān)于二義性的描述錯(cuò)誤的是
    A)一個(gè)子類的兩個(gè)父類中都有某個(gè)同名成員,在子類中對該成員訪問可能出現(xiàn)二義性
    B)解決二義性可以用對成員名的限定法
    C)父類和子類中同時(shí)出現(xiàn)同名函數(shù),也可能存在二義性
    D)一個(gè)子類是從兩個(gè)父類派生出來的,而這兩個(gè)父類又有一個(gè)共同的父類,對該父類成員進(jìn)行訪問時(shí),可能出現(xiàn)二義性
    (25)如果表達(dá)式x*y+z中,"*"是作為友元函數(shù)重載的,"+"是作為友元函數(shù)重載的,則該表達(dá)式還可為
    A)operator+( operator*(x, y),z)
    B)x.operator+( operator*(x, y),z)
    C)y.operator*( operator+(x, y),z)
    D)x.operator+( operator*(x, y))
    (26)函數(shù)模板:template
    T add(T x,T y){return x+y;}
    下列對add函數(shù)的調(diào)用不正確的是
    A)add<>(1,2)
    B)add(1,2)
    C)add(1.0,2)
    D)add(1.0,2.0)
    (27)對于語句cout << setfill(′*′)<< setw(10)<< 1 << setfill(′*′)<< setw (2)<< 2;的輸出結(jié)果是
    A)*********1*2
    B)********12
    C)*******1*2
    D)12********
    (28)this指針是C++語言實(shí)現(xiàn)什么的一種機(jī)制?
    A)抽象
    B)封裝
    C)繼承
    D)重載
    (29)有如下程序
    #include
    int func(int a,int b)
    { return(a+b);}
    void main()
    { int x=2,y=5,z=8,r;
    r=func(func(x,y),z);
    cout << r;
    }
    該程序的輸出的結(jié)果是
    A)12
    B)13
    C)14
    D)15
    (30)下列程序的輸出結(jié)果是
    #include
    class Myclass{
    public:Myclass(int i=0,int j=0)
    { x=i;
    y=j;
    }
    void show(){cout<<"x="<
     (31)下列描述中,抽象類的特性是
    A)可以說明虛函數(shù)
    B)可以定義友元函數(shù)
    C)可以進(jìn)行構(gòu)造函數(shù)重載
    D)不能說明其對象
    (32)在C++語言中,打開一個(gè)文件就是將這個(gè)文件與一個(gè)什么建立關(guān)聯(lián)?
    A)流
    B)類
    C)結(jié)構(gòu)
    D)對象
    (33)下列程序的運(yùn)行結(jié)果是
    #include
    void fun(int *a, int *b)
    { int *k;
    k=a; a=b; b=k;
    }
    void main()
    { int a=3, b=6, *x=&a, *y=&b;
    fun(x,y);
    cout << a << " " << b;
    }
    A)6 3
    B)3 6
    C)編譯出錯(cuò)
    D)0 0
    (34)執(zhí)行語句 for(i=1;i++<4;);,后變量 i 的值是
    A)3
    B)4
    C)5
    D)不定
    (35)判斷char型變量c是否為小寫字母的正確表達(dá)式是
    A)′a′<=c<=′z′
    B)(c>=A)&&(c<=z)
    C)(′a′>=c)||(′z′<=c)
    D)(c>=′a′)&&(c<=′z′)
       二、填空題
    請將每一個(gè)空的正確答案寫在答題卡序號的橫線上,答在試卷上不給分。
    (1)在算法正確的前提下,評價(jià)一個(gè)算法的兩個(gè)標(biāo)準(zhǔn)是 1 。
    (2)將代數(shù)式Z= 轉(zhuǎn)換成程序設(shè)計(jì)中的表達(dá)式為 2 。
    (3)軟件危機(jī)出現(xiàn)于60年代末,為了解決軟件危機(jī),人們提出了 3 的原理來設(shè)計(jì)軟件,這就是軟件工程誕生的基礎(chǔ)。
    (4) 4 是數(shù)據(jù)庫設(shè)計(jì)的核心。
    (5)在關(guān)系模型中,把數(shù)據(jù)看成一個(gè)二維表,每一個(gè)二維表稱為一個(gè) 5 。
    (6)一個(gè)C++語言程序的開發(fā)步驟通常包括編輯、 6 、鏈接、運(yùn)行和調(diào)試。
    (7)若已知a=10,b=20,則表達(dá)式!a  (8)下面程序的運(yùn)行結(jié)果是 8 和 9 。
    #include
    #define N 10
    #define s(x)x*x
    #define f(x)(x*x)
    void main()
    { int i1,i2;
    i1=1000/s(N); i2=1000/f(N);
    cout << i1 << " " << i2;
    }
    (9)友元類的所有成員函數(shù)都是另一個(gè)類的 10 。
    (10) 11 是實(shí)現(xiàn)C++語言編譯時(shí)多態(tài)性的機(jī)制, 12 是實(shí)現(xiàn)C++語言運(yùn)行時(shí)多態(tài)性的機(jī)制。
    (11)表達(dá)式x.operator++()還可寫成 13 。
    (12)以下程序的輸出結(jié)果是 14 。
    #include
    void main()
    { int a=0;
    a+=(a=8);
    cout << a;
    }
    (13)若要在C盤根目錄下作為二進(jìn)制文件打開文件test.dat,則應(yīng)該用的語句是 15 。