2011年3月計(jì)算機(jī)等級(jí)考試二級(jí)C++筆試題

字號(hào):


    為大家收集整理了《2011年3月計(jì)算機(jī)等級(jí)考試二級(jí)C++筆試題》供大家參考,希望對(duì)大家有所幫助!??!
     
    一、選擇題
    (1)下列關(guān)于棧敘述正確的是
    A)棧頂元素先能被刪除    
    B)棧頂元素后才能被刪除
    C)棧底元素永遠(yuǎn)不能被刪除  
    D)以上三種說(shuō)法都不對(duì)
    (2)下列敘述中正確的是
    A)有一個(gè)以上根結(jié)點(diǎn)的數(shù)據(jù)結(jié)構(gòu)不一定是非線性結(jié)構(gòu)
    B)只有一個(gè)根結(jié)點(diǎn)的數(shù)據(jù)結(jié)構(gòu)不一定是線性結(jié)構(gòu)
    C)循環(huán)鏈表是非線性結(jié)構(gòu)
    D)雙向鏈表是非線性結(jié)構(gòu)
    (3)某二叉樹(shù)共有7個(gè)結(jié)點(diǎn),其中葉子結(jié)點(diǎn)只有1個(gè),則該二叉樹(shù)的深度為(假設(shè)根結(jié)點(diǎn)在第1層)
    A)3         
    B)4         
    C)6         
    D)7
    (4)在軟件開(kāi)發(fā)中,需求分析階段產(chǎn)生的主要文檔是
    A)軟件集成測(cè)試計(jì)劃        
    B)軟件詳細(xì)設(shè)計(jì)說(shuō)明書(shū)
    C)用戶手冊(cè)                
    D)軟件需求規(guī)格說(shuō)明書(shū)
    (5)結(jié)構(gòu)化程序所要求的基本結(jié)構(gòu)不包括
    A)順序結(jié)構(gòu)                
    B)GOTO跳轉(zhuǎn)
    C)選擇(分支)結(jié)構(gòu)        
    D)重復(fù)(循環(huán))結(jié)構(gòu)
    (6)下面描述中錯(cuò)誤的是
    A)系統(tǒng)總體結(jié)構(gòu)圖支持軟件系統(tǒng)的詳細(xì)設(shè)計(jì)
    B)軟件設(shè)計(jì)是將軟件需求轉(zhuǎn)換為軟件表示的過(guò)程
    C)數(shù)據(jù)結(jié)構(gòu)與數(shù)據(jù)庫(kù)設(shè)計(jì)是軟件設(shè)計(jì)的任務(wù)之一
    D)PAD圖是軟件詳細(xì)設(shè)計(jì)的表示工具
    (7)負(fù)責(zé)數(shù)據(jù)庫(kù)中查詢(xún)操作的數(shù)據(jù)庫(kù)語(yǔ)言是
    A)數(shù)據(jù)定義語(yǔ)言
    B)數(shù)據(jù)管理語(yǔ)言
    C)數(shù)據(jù)操縱語(yǔ)言
    D)數(shù)據(jù)控制語(yǔ)言
    (8)一個(gè)教師可講授多門(mén)課程,一門(mén)課程可由多個(gè)教師講授。則實(shí)體教師和課程間的聯(lián)系是
    A)1:1聯(lián)系   
    B)1:m聯(lián)系
    C)m:1聯(lián)系   
    D)m:n聯(lián)系
    (9)有三個(gè)關(guān)系R、S和T如下:
    


    則由關(guān)系R和S得到關(guān)系T的操作是
    A)自然連接  
    B)交        
    C)除         
    D)并
    (10)定義無(wú)符號(hào)整數(shù)類(lèi)為UInt,下面可以作為類(lèi)UInt實(shí)例化值的是
    A)-369      
    B)369       
    C)0.369      
    D)整數(shù)集合{1,2,3,4,5}
    (11)為了提高函數(shù)調(diào)用的實(shí)際運(yùn)行速度,可以將較簡(jiǎn)單的函數(shù)定義為
    A)內(nèi)聯(lián)函數(shù)  
    B)重載函數(shù)  
    C)遞歸函數(shù)   
    D)函數(shù)模板
    (12)若AA為一個(gè)類(lèi),a為該類(lèi)的非靜態(tài)數(shù)據(jù)成員,在該類(lèi)的一個(gè)成員函數(shù)定義中訪問(wèn)a時(shí),其書(shū)寫(xiě)格式為
    A)a         
    B)AA.a      
    C)a()        
    D)AA::a()
    (13)當(dāng)派生類(lèi)從一個(gè)基類(lèi)保護(hù)繼承時(shí),基類(lèi)中的一些成員在派生類(lèi)中成為保護(hù)成員,這些成員在基類(lèi)中原有的訪問(wèn)屬性是
    A)任何      
    B)公有或保護(hù)
    C)保護(hù)或私有
    D)私有
    (14)若要對(duì)Data類(lèi)中重載的加法運(yùn)算符成員函數(shù)進(jìn)行聲明,下列選項(xiàng)中正確的是
    A)Data+(Data);
    B)Data operator+(Data);
    C)Data+operator(Data);
    D)operator+(Data,Data);
    (15)下列關(guān)于函數(shù)模板的描述中,正確的是
    A)函數(shù)模板是一個(gè)實(shí)例函數(shù)
    B)使用函數(shù)模板定義的函數(shù)沒(méi)有返回類(lèi)型
    C)函數(shù)模板的類(lèi)型參數(shù)與函數(shù)的參數(shù)相同
    D)通過(guò)使用不同的類(lèi)型參數(shù),可以從函數(shù)模板得到不同的實(shí)例函數(shù)
    (16) C++系統(tǒng)預(yù)定義了4個(gè)用于標(biāo)準(zhǔn)數(shù)據(jù)流的對(duì)象,下列選項(xiàng)中不屬于此類(lèi)對(duì)象的是
    A)cout      
    B)cin       
    C)cerr      
    D)cset
    (17)Windows環(huán)境下,由C++源程序文件編譯而成的目標(biāo)文件的擴(kuò)展名是
    A)cpp       
    B)exe       
    C)obj        
    D)lik
    (18)字符串“a+b=12\n\t”的長(zhǎng)度為
    A)12        
    B)10        
    C)8          
    D)6
    (19)有如下程序:
    #include
    using namespace std;
    int main(){
    int f,f1=0,f2=1;
    for(int i=3;i<=6;i++){
    f=f1+f2;
    f1=f2;f2=f;
    }
    cout<  return 0;
    }
    運(yùn)行時(shí)的輸出結(jié)果是
    A)2         
    B)3         
    C)5          
    D)8
     (20)有如下程序:
    #include
    using namespace std;
    int main(){
    int a[6]={23,15,64,33,40,58};
    int s1,s2;
    s1=s2=a[0];
    for(int* p=a+1;p  if(s1>*p) s1=*p;
    if(s2<*p) s2=*p;
    }
    cout<  return 0;
    }
    運(yùn)行時(shí)的輸出結(jié)果是
    A)23        
    B)58        
    C)64         
    D)79
    (21)有如下程序:
    #include
    using namespace std;
    void f1(int& x,int& y) {int z=x; x=y; y=z;}
    void f2(int x;int y)   {int z=x; x=y; y=z;}
    int main(){
    int x=10,y=26;
    f1(x,y);
    f2(x,y);
    cout<  return 0;
    }
    運(yùn)行時(shí)的輸出結(jié)果是
    A)10        
    B)16        
    C)26         
     D)36
     (22)有如下程序:
     #include
     using namespace std;
     class XA{
     int a;
     public:
     static int b;
     XA(int aa):a(aa) {b++;}
     ~XA(){}
     int get(){return a;}
     };
     int XA::b=0;
     int main(){
     XA d1(2),d2(3);
     cout<   return 0;
     }
     運(yùn)行時(shí)的輸出結(jié)果是
     A)5         
     B)6         
     C)7          
    D)8
    (23)有如下程序:
    #include
    using namespace std;
    class Point{
    int x,y;
    public:
    Point(int x1=0,int y1=0):x(x1),y(y1){}
    int get(){return x+y;}
    };
    class Circle{
    Point center;
    int radius;
    public:
    Circle(int cx,int cy,int r):center(cx,cy),raaius(r){}
    int get(){return center.get()+radius;}
    };
    int main(){
    Circle c(3,4,5);
    cout<  return 0;
    }
    運(yùn)行時(shí)的輸出結(jié)果是
    A)5         
    B)7         
    C)9          
    D)12
    (24)若要對(duì)類(lèi)BigNumber中重載的類(lèi)型轉(zhuǎn)換運(yùn)算符long進(jìn)行聲明,下列選項(xiàng)中正確的是
    A)operator long() const;
    B)operator long(BigNumber);
    C)long operator long() const;
    D)long operator long(BigNumber);
    (25)有如下函數(shù)模板定義:
    template
    T1 FUN(T2 n){return n*5.0;}
    若要求以int型數(shù)據(jù)9作為函數(shù)實(shí)參調(diào)用該模板,并返回一個(gè)double型數(shù)據(jù),則該調(diào)用應(yīng)表示為
    A)FUN(9)                  
    B)FUN<9>
    C)FUN(9)          
    D)FUN<9>(double)
    (26)下列語(yǔ)句都是程序運(yùn)行時(shí)的第1條輸出語(yǔ)句,其中一條語(yǔ)句的輸出效果與其他三條語(yǔ)句不同,該語(yǔ)句是
    A)cout<  B)cout<  C)cout<  D)cout<  (27)下列關(guān)于析構(gòu)函數(shù)的描述中,錯(cuò)誤的是
    A)析構(gòu)函數(shù)可以重載
    B)析構(gòu)函數(shù)由系統(tǒng)自動(dòng)調(diào)用
    C)每個(gè)對(duì)象的析構(gòu)函數(shù)只被調(diào)用
    D)每個(gè)類(lèi)都有析構(gòu)函數(shù)
    (28)下列關(guān)于構(gòu)造函數(shù)的描述中,錯(cuò)誤的是
    A)構(gòu)造函數(shù)名與類(lèi)名相同     
    B)構(gòu)造函數(shù)可以有返回值
    C)構(gòu)造函數(shù)可以重載         
    D)每個(gè)類(lèi)都有構(gòu)造函數(shù)
    (29)若PAT是一個(gè)類(lèi),則程序運(yùn)行時(shí),語(yǔ)句“PAT(*ad)[3];”調(diào)用PAT的構(gòu)造函數(shù)的次數(shù)是
    A)0         
    B)1         
    C)2          
    D)3
    (30)下列描述中,錯(cuò)誤的是
    A)公有繼承時(shí)基類(lèi)中的公有成員在派生類(lèi)中仍是公有成員
    B)公有繼承時(shí)基類(lèi)中的保護(hù)成員在派生類(lèi)中仍是保護(hù)成員
    C)保護(hù)繼承時(shí)基類(lèi)中的公有成員在派生類(lèi)中仍是公有成員
    D)保護(hù)繼承時(shí)基類(lèi)中的保護(hù)成員在派生類(lèi)中仍是保護(hù)成員
    (31)生成派生類(lèi)對(duì)象時(shí),派生類(lèi)構(gòu)造函數(shù)調(diào)用基類(lèi)構(gòu)造函數(shù)的條件是
    A)無(wú)需任何條件
    B)基類(lèi)中顯式定義了構(gòu)造函數(shù)
    C)派生類(lèi)中顯式定義了構(gòu)造函數(shù)
    D)派生類(lèi)構(gòu)造函數(shù)明確調(diào)用了基類(lèi)構(gòu)造函數(shù)
    (32)下列關(guān)于派生類(lèi)和基類(lèi)的描述中,正確的是
    A)派生類(lèi)成員函數(shù)只能訪問(wèn)基類(lèi)的公有成員
    B)派生類(lèi)成員函數(shù)只能訪問(wèn)基類(lèi)的公有和保護(hù)成員
    C)派生類(lèi)成員函數(shù)可以訪問(wèn)基類(lèi)的所有成員
    D)派生類(lèi)對(duì)基類(lèi)的默認(rèn)繼承方式是公有繼承
    (33)有如下類(lèi)模板定義:
    template
    class BigNumber{
    long n;
    public:
    BigNumber(T i):n(i){}
    BigNumber operator+(BigNumber b){
    return BigNumber(n+b.n);
    }
    };
    己知b1、b2是BigNumber的兩個(gè)對(duì)象,則下列表達(dá)式中錯(cuò)誤的是
    A)bl+b2     
    B)b1+3      
    C)3+b1       
    D)3+3
    (34)下列關(guān)于文件流的描述中,正確的是
    A)文件流只能完成針對(duì)磁盤(pán)文件的輸入輸出
    B)建立一個(gè)文件流對(duì)象時(shí),必須同時(shí)打開(kāi)一個(gè)文件
    C)若輸入流要打開(kāi)的文件不存在,將建立一個(gè)新文件
    D)若輸出流要打開(kāi)的文件不存在,將建立一個(gè)新文件
    (35)有如下程序:
    #include
    using namespace std;
    class Pair{
    int m,n;
    public:
    Pair(int j,int k):m(j),n(k){}
    int get() {return m;}
    int get() const {return m+n;}
    };
    int main(){
    Pair a(3,5);
    const Pair b(3,5);
    cout+a.get()<  return 0;
    }
    運(yùn)行時(shí)的輸出結(jié)果是
    A)33        
    B)38        
    C)83         
    D)88
     
    二、填空題
    (1)有序線性表能進(jìn)行二分查找的前提是該線性表必須是 【1】 存儲(chǔ)的。
    (2)一棵二叉樹(shù)的中序遍歷結(jié)果為DBEAFC,前序遍歷結(jié)果為ABDECF。則后序遍歷結(jié)果為 【2】 。
    (3)對(duì)軟件設(shè)計(jì)的小單位(模塊或程序單元)進(jìn)行的測(cè)試通常稱(chēng)為 【3】 測(cè)試。
    (4)實(shí)體完整性約束要求關(guān)系數(shù)據(jù)庫(kù)中元組的 【4】 屬性值不能為空。
    (5)在關(guān)系A(chǔ)(S,SN,D)和關(guān)系B(D,CN,NM)中,A的主關(guān)鍵字是S,B的主關(guān)鍵字是D,則稱(chēng) 【5】 是關(guān)系A(chǔ)的外碼。
    (6)若有定義語(yǔ)句“int x=10,y=20,z=20;”,則表達(dá)式x>z&&y==z的值為 【6】 。
    (7)有如下語(yǔ)句序列:
    int x=-10;while(++x){ }
    運(yùn)行時(shí)while循環(huán)體的執(zhí)行次數(shù)為 【7】 。
    (8)有如下語(yǔ)句序列:
    int arr[2][2]={{9,8},{7,6}};
    int *p=arr[0]+1; cout<<*p<  運(yùn)行時(shí)的輸出結(jié)果是 【8】 。
    (9)函數(shù)fun的功能是將一個(gè)數(shù)字字符串轉(zhuǎn)換為一個(gè)整數(shù),請(qǐng)將函數(shù)補(bǔ)充完整。
    int fun(char *str){
    int num=0;
    while(*str){
    num*=10;
    num+= 【9】 ;
    str++;
    }
    return num;
    }
    (10)若要將函數(shù)“void FriFun();”聲明為類(lèi)MyClass的友元函數(shù),則應(yīng)在類(lèi)MyClass的定義中加入語(yǔ)句 【10】 。
    (11)下列程序的輸出結(jié)果為012,請(qǐng)根據(jù)注釋將橫線處的缺失部分補(bǔ)充完整。
    #include
    using namespace std;
    class Test{
    public:
    Test(int a) {data=a;}
    ~Test() {}
    void print(){cout<  private:
    int data;
    };
    int main(){
    Test t[3]={ 【11】 };//對(duì)有3個(gè)元素的Test類(lèi)對(duì)象數(shù)組t初始化t[i].print();
    for(int i=0;i<3;i++)
    return 0;
    }
    (12)請(qǐng)?jiān)跈M線處填寫(xiě)派生類(lèi)Derived的繼承方式,使得程序的輸出結(jié)果為Base。
    #include
    using namespace std;
    class Base{
    public:
    void print(){cout<<"Base";}
    };
    class Derived: 【12】 Base{};
    int main(){
    Derived d;
    d.print();
    return 0;
    }
    (13)下列程序的輸出結(jié)果為1 2.3 2 4.6,請(qǐng)將橫線處的缺失部分補(bǔ)充完整。
    #include
    using namespace std;
    class Base{
    public:
    Base(int a):idata(a){}
    void print(){cout<  private:
    int idata;
    };
    class Derived:public Base{
    public:
    Derived(int a;double b): 【13】 ,ddata(b){}
    void print(){Base::print();cout<  private:
    double ddata;
    };
    int main(){
    Derived dl(1,2.3),d2(2,4.6);
    d1.print();
    d2.print();
    return 0;
    }
    (14)下列程序的輸出結(jié)果為-5/8 -3/4,請(qǐng)將橫線處的缺失部分補(bǔ)充完整。
    #include
    using namespace std;
    class Fraction{ //“分?jǐn)?shù)”類(lèi)
    public:
    Fraction(double a,double b):num(a),den(b){}
    ~Fraction(){}
    //重載取負(fù)運(yùn)算符“-”,返回一個(gè)分?jǐn)?shù)對(duì)象,其分子是原來(lái)分子的相反數(shù)。
    Fraction operator-(){
    【14】
    return f;
    }
    void print(){ cout<  private:
    double num; //分子
    double den; //分母
    };
    int main(){
    Fraction f1(5;8),f2(3,4);
    (-f1).print();(-f2).print();
    return 0;
    }
    (15)函數(shù)Min的功能是返回具有n個(gè)元素的數(shù)組array中的小值。請(qǐng)將橫線處的缺失部分補(bǔ)充完整,使得程序的輸出結(jié)果為1.24。
    #include
    using namespace std;
    template
    T Min(T* array,int n){
    T min=array[0];
    for(int i=1;i  if(array[i]  return min;
    }
    int main(){
    double arr[8]={5.2,48.45,41.01,42,51.2,1.24,14.12,42};
    cout<< 【15】 ;
    return 0;
    }