全國計算機等級考試二級C++樣題

字號:

公共基礎知識
    一、選擇題
    (1)下列關于棧的敘述正確的是
    A)棧是非線性結構  B)棧是一種樹狀結構  
    C)棧具有先進先出的特征  D)棧具有后進先出的特征
    (2)結構化程序設計所規(guī)定的三種基本控制結構是
    A)輸入、處理、輸出  B)樹形、網(wǎng)形、環(huán)形  
    C)順序、選擇、循環(huán)  D)主程序、子程序、函數(shù)
    (3)結構化程序設計的一種基本方法是
    A)篩選法  B)遞歸法  C)歸納法  D)逐步求精法
    (4)如果對一個關系實施了一種關系運算后得到了一個新的關系,而且新的關系中屬性個數(shù)少于原來關系中屬性個數(shù),這說明所實施的運算關系是:A)選擇  B)投影  C)連接  D)并
    二、填空題
    1.對于輸入為N個數(shù)進行快速排序算法的平均時間復雜度是(  ?。?BR>    2.在面向對象方法學中,直接反映了用戶對目標系統(tǒng)的要求的模型是( ?。?BR>    3.軟件測試方法中,黑盒測試個白盒測試法是常用的方法,其中黑盒測試法主要是用于測試(  )
    4.關系型數(shù)據(jù)庫管理系統(tǒng)中存儲與管理數(shù)據(jù)的基本形式是(  )
    C++語言程序設計
    一、選擇題
    (1)C++語言是從早期的C語言逐漸發(fā)展演變而來的.與C語言相比,它在求解問題方法上進行的改進是()
    A)面向過程  B)面向對象  C)安全性  D)復用性
    (2)C++語言的跳轉語句中,對于break和continue說法正確的是()
    A)break語句只應用與循環(huán)體中  
    B)continue語句只應用與循環(huán)體中  
    C)break是無條件跳轉語句,continue不是  
    D)break和continue的跳轉范圍不夠明確,容易產(chǎn)生問題
    (3)for(int x=0,y=o;!x& &y<=5;y++)語句執(zhí)行循環(huán)的次數(shù)是()
    A)0  B)5  C)6  D)無次數(shù)
    (4)考慮函數(shù)原型void test(int a,int
    b=7,char="*"),下面的函數(shù)調用中,屬于不合法調用的是()
    A)test(5); B)test(5,8); C)test(6,"#") D)test(0,0."*");
    (5)下面有關重載函數(shù)的說法中正確的是()
    A)重載函數(shù)必須具有不同的返回值類型;  B)重載函數(shù)形參個數(shù)必須不同;  
    C)重載函數(shù)必須有不同的形參列表  D)重載函數(shù)名可以不同;
    (6)下列關于構造函數(shù)的描述中,錯誤的是()
    A)構造函數(shù)可以設置默認參數(shù);  B)構造函數(shù)在定義類對象時自動執(zhí)行  
    C)構造函數(shù)可以是內(nèi)聯(lián)函數(shù);  D)構造函數(shù)不可以重載
    (7)下面描述中,表達錯誤的是()
    A)公有繼承時基類中的public成員在派生類中仍是public的  
    B)公有繼承是基類中的private成員在派生類中仍是private的  
    C)公有繼承時基類中的protected成員在派生類中仍是protected的  
    D)私有繼承時基類中的public成員在派生類中是private的
    (8)應在下列程序劃線處填入的正確語句是()
    #include
    class Base
    {  public:
    void fun(){cout<<"Base::fun"<    };
    class Derived:public Base
    {  void fun()
    {_____________ //顯示調用基類的函數(shù)fun()
     cout<<"Derived::fun"<    }
    };
    A)fun(); B)Base.fun(); C)Base::fun(); D) Base->fun();
    (9)有如下程序:
    #include
    class BASE{
    char c;
    public:
    BASE(char n):c(n){}
    virtual~BASE(){cout<    };
    class DERIVED:public BASE{
    char c;
    public:
    DERIVED(char n):BASE(n+1),c(n){}
    ~DERIVED(){cout<    };
    int main()
    {  DERIVED("X");
    return 0;
    }
    執(zhí)行上面的程序將輸出()
    A)XY B)YX C)X D)Y
    (10)在進行完任何C++流的操作后,都可以用C++流的有關成員函數(shù)檢測流的狀態(tài);其中只能用于檢測輸入流狀態(tài)的操作函數(shù)名稱是()
    A)fail B)eof C)bad D)good
    二、填空題
    (1)下面程序的打印結果是 [1]
    #incude
    int f(int);
    int main()
    {  int i;
    for(i=0;i<5;i++)
    cout<    return0;
    }
    int f(int i)
    {  static int k=1;
    for(;i>0;i- -)
    k + = i;
    return k;
    }
    (2)在用class定義一個類時,數(shù)據(jù)成員和成員函數(shù)的默認訪問權限是 [2]
    (3)含有純虛函數(shù)的類稱為 [3]
    (4)已知intDBL(int n){return n + n;}和longDBL(long n){return n
    +n;}是一個函數(shù)模板的兩個實例,則該函數(shù)模板的定義是 [4]
    (5)在下面程序的橫線處填上適當?shù)恼Z句,使該程序執(zhí)行結果為10.
    #include
    class MyClass
    {  public:
    MyClass(int a){x = a;}
    [5] //取x值
    private
    int x;
    };
    int main()
    {  MyClass my(10);
    cout<    return 0;
    }
    三、上機操作題(改錯題1道,簡單應用1道,綜合應用1道)
    1.使用VC6打開考生文件夾下的工程proj1,此工程包含一個源程序文件main.cpp,但該程序運行有問題,請改正main函數(shù)中的錯誤,使程序的輸出結果為:
    member=0
    member=5
    menber=10
    源程序文件main.cpp清單如下:
    #include
    class MyClass
    {
    public:
    MyClass(int i){member=i;}
    void SetMember(int m){member=m;}
    int GetMember()const{return menber;}
    void print()cont{cout<<"member="<    private:
    int member;
    };
    voed main()
    {
    /* * * * * * * * * * found * * * * * * * * * */
    MyClass obj1;
    obj1.print();
    MyClass obj2(3);
    /* * * * * * * * * * found * * * * * * * * * */
    obj1.member=5;
    /* * * * * * * * * * found * * * * * * * * * */
    MyClass.SetMember(10);
    obj1.print();
    obj2.print();
    }
    2.請編寫一個函數(shù)int find(char s[],char
    t[]),該函數(shù)在字符串s中查找字符串t,如果找到,則返回字符串t在字符串s中的位置(整數(shù)值);否則返回-1.注意:用數(shù)組方式及兩重循環(huán)來實現(xiàn)該函數(shù).
    注意:部分源文件程序已存在文件PROC2,CPP中.
    請勿修改主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)find的花括號中填寫若干語句.
    文件PROC2.CPP的內(nèi)容如下:
    #include
    int find(char s[],char t[]);
    const int MAXLINE =256;
    int main()
    {  char source[MAXLINE],rarget[MAXLINE];
    cout <<"Please input a string for searching:\n";
    cin.getline(source,MAXLINE);
    cout<<"Please input a string you want to find:\n";
    cin.getline(target,MAXLINE);
    int intpos = find(source,target);
    if(intpos>=0
     cout<<"Finding it.The target string is at index"
     <    else
     cout<<"Not finding it.\n";
    return 0;
    }
    int find(char s[],char t[])
    {
    }
    3.使用VC6打開考生文件夾下的工程proj3.此工程包含一個源程序文件main.cpp.其中定義了用于表示日期的類Date,但類Date的定義并不完整.請按要求完成下列操作,將類Date的定義補充完整:
    (1)定義私有數(shù)據(jù)成員year,month和day分別用于表示年,月,日,它們都是int型的數(shù)據(jù).請在注釋"http:// * * 2
    * *"之后添加適當?shù)恼Z句.
    (2)完成默認構造函數(shù)Date的定義,使Date對象的默認值為:year=1,month=1,day=1,請在注釋"http:// *
    * 2 * *"之后添加適當?shù)恼Z句.
    (3)完成重載構造函數(shù)Date(int y,int m,int
    d)的定義,把數(shù)據(jù)成員year,month和day分別初始化為參數(shù)y,m,d的值,請在注釋"//* * 3 *
    *"之后添加適當?shù)恼Z句.
    (4)完成成員函數(shù)print的類外定義,使其以"年-月-日"的格式將Date對象的值輸出到屏幕上.請在注釋"//* * 4
    * *"之后添加適當?shù)恼Z句.
    注意:除在指定位置添加語句之外,請不要改動程序中的其他內(nèi)源程序文件main.cpp清單如下:
    //main.cpp
    #include
    class Date{
    public:
    //* * 2 * *
    Date(int y,int m,int d)
    {
     //* * 3 * *
    }
    void print() const;
    private:
    // date members
    //* * 1 * *
    };
    void Date::print()const
    {  //* * 4 * *
    }
    int main()
    {  Date national_day(1949,10,1);
    national_day.print();
    return 0;
    }
    ----------------------------------------------------
    參考答案:
    公共基礎知識:
    一:選擇題:
    (1) D   (2) C   (3) D   (4) B
    二:填空題:
    (1)[1]:O(Nlog2N)
    (2)[2]:功能模型
    (3)[3]:軟件外部功能
    (4)[4]:二維表
    C++程序設計
    一:選擇題
    1-5 :B B C C C
    6-10:D B C A B
    二:填空題
    (1)[1]:1 2 5 11 21
    (2)[2]:private 或 私有
    (3)[3]:抽象類
    (4)[4]:templateT DBL(T n){return n+n;}
    (5)[5]:int GetNum(){return x;} 或 int GetNum() const{return x;}