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

字號(hào):


    為大家收集整理了《2010年9月計(jì)算機(jī)等級(jí)考試二級(jí)C++筆試試題》供大家參考,希望對(duì)大家有所幫助?。。?/FONT>
     
     一、選擇題(每小題2分,共70分)
    下列各題A)、B)、C)、D)四個(gè)選項(xiàng)中,只有一個(gè)選項(xiàng)是正確的。請將正確選項(xiàng)填涂在答題卡相應(yīng)位置上,答在試卷上不得分。
    (1)下列敘述中正確的是
    A)對(duì)長度為n的有序鏈表進(jìn)行查找,壞情況下需要的比較次數(shù)為n
    B)對(duì)長度為n的有序鏈表進(jìn)行對(duì)分查找,壞情況下需要的比較次數(shù)為(n/2)
    C)對(duì)長度為n的有序鏈表進(jìn)行對(duì)分查找,壞情況下需要的比較次數(shù)為(log2n)
    D)對(duì)長度為n的有序鏈表進(jìn)行對(duì)分查找,壞情況下需要的比較次數(shù)為(n log2n)
    (2)算法的時(shí)間復(fù)雜度是指
    A)算法的執(zhí)行時(shí)間
    B)算法所處理的數(shù)據(jù)量
    C)算法程序中的語句或指令條數(shù)
    D)算法在執(zhí)行過程中所需要的基本運(yùn)算次數(shù)
    (3)軟件按功能可以分為:應(yīng)用軟件、系統(tǒng)軟件和支撐軟件(或工具軟件)。下面屬于系統(tǒng)軟件的是
    A)編輯軟件
    B)操作系統(tǒng)
    C)教務(wù)管理系統(tǒng)
    D)瀏覽器
    (4)軟件(程序)調(diào)試的任務(wù)是
    A)診斷和改正程序中的錯(cuò)誤
    B)盡可能多地發(fā)現(xiàn)程序中的錯(cuò)誤
    C)發(fā)現(xiàn)并改正程序中的所有錯(cuò)誤
    D)確定程序中錯(cuò)誤的性質(zhì)
    (5)數(shù)據(jù)流程圖(DFD圖)是
    A)軟件概要設(shè)計(jì)的工具
    B)軟件詳細(xì)設(shè)計(jì)的工具
    C)結(jié)構(gòu)化方法的需求分析工具
    D)面向?qū)ο蠓椒ǖ男枨蠓治龉ぞ?BR>    (6)軟件生命周期可分為定義階段,開發(fā)階段和維護(hù)階段。詳細(xì)設(shè)計(jì)屬于
    A)定義階段
    B)開發(fā)階段
    C)維護(hù)階段
    D)上述三個(gè)階段
    (7)數(shù)據(jù)庫管理系統(tǒng)中負(fù)責(zé)數(shù)據(jù)模式定義的語言是
    A)數(shù)據(jù)定義語言
    B)數(shù)據(jù)管理語言
    C)數(shù)據(jù)操縱語言
    D)數(shù)據(jù)控制語言
    (8)在學(xué)生管理的關(guān)系數(shù)據(jù)庫中,存取一個(gè)學(xué)生信息的數(shù)據(jù)單位是
    A)文件
    B)數(shù)據(jù)庫
    C)字段
    D)記錄
    (9)數(shù)據(jù)庫設(shè)計(jì)中,用E-R圖來描述信息結(jié)構(gòu)但不涉及信息在計(jì)算機(jī)中的表示,它屬于數(shù)據(jù)庫設(shè)計(jì)的
    A)需求分析階段
    B)邏輯設(shè)計(jì)階段
    C)概念設(shè)計(jì)階段
    D)物理設(shè)計(jì)階段
    (10)有兩個(gè)關(guān)系R和T如下:
    

2010年3月計(jì)算機(jī)等級(jí)考試二級(jí)C++筆試試題(文字版)
    則由關(guān)系R得到關(guān)系T的操作是
    A)選擇
    B)投影
    C)交
    D)并
    (11)下列關(guān)于函數(shù)的描述中,錯(cuò)誤的是
    A)函數(shù)可以沒有返回值
    B)函數(shù)可以沒有參數(shù)
    C)函數(shù)可以是一個(gè)類的成員
    D)函數(shù)不能被定義為模板
    (12)若MyClass是一個(gè)類名,且有如下語句序列
    MyClass c1,*c2;
    MyClass *c3=new MyClass;
    MyClass &c4=c1;
    上面的語句序列所定義的類對(duì)象的個(gè)數(shù)是
    A)1
    B)2
    C)3
    D)4
    (13)下列關(guān)于繼承方式的描述中,錯(cuò)誤的是
    A)如果不顯式地指定繼承方式,缺省的繼承方式是私有(private)
    B)采用公有繼承方式時(shí),基類中的公有成員在派生類中仍然是公有成員
    C)采用保護(hù)繼承方式時(shí),基類中的保護(hù)成員在派生類中仍然是保護(hù)成員
    D)采用私有繼承方式時(shí),基類中的私有成員在派生類中仍然是私有成員
    (14)將前綴運(yùn)算符“--”重載為非成員函數(shù),下列原型中,能正確用于類中說明的是
    A)Decr& operator --(int);
    B)Decr operator --( Decr&,int);
    C)friend Decr& operator --(Decr&);
    D)frlend Decr operator --(Decr&,int);
    (15)若MyTemp是一個(gè)只有一個(gè)虛擬類型參數(shù)的類模板,且有如下語句序列
    MyTempp2;
    MyTempp3[2];
    編譯系統(tǒng)在處理上面的語句序列時(shí),所生成的模板MyTemp的實(shí)例的個(gè)數(shù)是
    A)1
    B)2
    C)3
    D)0
    (16)在C++中,cin是個(gè)
    A)類
    B)對(duì)象
    C)模板
    D)函數(shù)
    (17)在下列字符中,不允許作為C++標(biāo)識(shí)符的是
    A)b
    B)B
    C)_
    D)2
    (18)下列敘述中,錯(cuò)誤的是
    A)false是一個(gè)邏輯型常量
    B)"b"是一個(gè)字符型常量
    C)365是一個(gè)int常量
    D)3.1415926是一個(gè)double常量
    (19)若x和y是程序中的兩個(gè)整型變量,則下列if語句中正確的是
    A)if(x==0) y=1; else y=2;
    B)if(x==0) then y=1 else y=2;
    C)if(x==0) y=1 else y=2;
    D)if x==0 y=1; else y=2;
    (20)要定義整型數(shù)組x,使之包括初值為O的三個(gè)元素,下列語句中錯(cuò)誤的是
    A)int x[3]={0,0,0};
    B)int x[]={0};
    C)static int x[3]={0};
    D)int x[]={0,0,0};
    (21)關(guān)于函數(shù)中的<返回類型>,下列表述中錯(cuò)誤的是
    A)<返回類型>中有可能包含關(guān)鍵字int
    B)<返回類型>中有可能包含自定義標(biāo)識(shí)符
    C)<返回類型>中有可能包含字符*
    D)<返回類型>中可能包含[]
    (22)要定義一個(gè)引用變量p,使之引用類MyClass的一個(gè)對(duì)象,正確的定義語句是
    A)MyClass p=MyClass;
    B)MyClass p=new MyClass;
    C)MyClass &p=new MyClass;
    D) MyClass a,&p=a;
    (23)有如下兩個(gè)類定義
    class XX{
    private:
    double x1;
    protected:
    double x2;
    public:
    double x3;
    };
    class YY:protected XX{
    private:
    double y1;
    protected:
    double y2;
    public:
    double y3;
    };
    在類YY中保護(hù)成員變量的個(gè)數(shù)是
    A)1
    B)2
    C)3
    D)4
    (24)下列關(guān)于運(yùn)算符重載的描述中,錯(cuò)誤的是
    A)可以通過運(yùn)算符重載在C++中創(chuàng)建新的運(yùn)算符
    B)賦值運(yùn)算符只能重載為成員函數(shù)
    C)運(yùn)算符函數(shù)重載為類的成員函數(shù)時(shí),第一操作數(shù)是該類對(duì)象
    D)重載類型轉(zhuǎn)換運(yùn)算符時(shí)不需要聲明返回類型
    (25)下列關(guān)于類模板的描述中,錯(cuò)誤的是
    A)類模板的成員函數(shù)都是模板函數(shù)
    B)可以為類模板參數(shù)設(shè)置默認(rèn)值
    C)類模板描述了一組類
    D)類模板中只允許有一個(gè)類型參數(shù)
    (26)下列控制格式輸入輸出的操作符中,能夠設(shè)置浮點(diǎn)數(shù)精度的是
    A)setprecision
    B)setw
    C)setfill
    D)showpoint
    (27)下列程序段中包含4個(gè)函數(shù),其中具有隱含this指針的是
    int fun1();
    class Test{
    public:
    int fun2();
    friend int fun3();
    static int fun4();
    };
    A)fun1
    B)fun2
    C)fun3
    D)fun4
    (28)有如下程序
    #include
    using namespace std;
    class Test{
    public:
    Test(){ }
    Test(const Test &t) {cout<<1;}
    };
    Test fun(Test &u) {Test t=u; return t;}
    int main(){Test x,y; x=fun(y); return 0;}
    運(yùn)行這個(gè)程序的輸出結(jié)果是
    A)無輸出
    B)1
    C)11
    D)111
    (29)有如下程序
    #include
    using namespace std;
    class A{
    public:
    A(int i=0):r1(i) { }
    void print() {cout<<'E’<
    void print() const {cout<<'C'<
    void print(int x) {cout <<'P'<
    private:
    int r1;
    };
    int main() {
    A a1;
    const A a2(4);
    a1.print(2);
    a1.print();
    return 0;
    }
    運(yùn)行時(shí)的輸出結(jié)果是
    A)P8-E4
    B)P8-C16-
    C)P0-E4-
    D)P0-C16-
    (30)下列代碼聲明了3個(gè)類
    class Person{};
    class Student:public Person{};
    class Undergraduate:Student{};
    下列關(guān)于這些類之間關(guān)系的描述中,錯(cuò)誤的是
    A)類Person是類Undergraduate的基類
    B)類Undergraduate從類Student公有繼承
    C)類Student是類Person的派生類
    D)類Undergraduate是類Person的派生類
    (31)有如下程序
    #include
    using namespace std;
    Class Base{
    public:
    Base(int x=0):valB(x) {cout<
    ~Base() {cout<
    private:
    int valB;
    };
    class Derived:public Base{
    public:
    Derived(int x=0,int y=0):Base(x),valD(y){cout<
    ~Derived() {cout<
    private:
    int valD;
    };
    int main(){
    Derived obj12(2,3);
    retuen 0;
    }
    運(yùn)行時(shí)的輸出結(jié)果是
    A)2332
    B)2323
    C)3232
    D)3223
    (32)下面是類Shape的定義:
    class Shape{
    public:
    virtual void Draw()=0;
    };
    下列關(guān)于Shape類的描述中,正確的是
    A)類Shape是虛基類
    B)類Shape是抽象類
    C)類Shape中的Draw函數(shù)聲明有誤
    D)語句“Shape s;”能夠建立Shape的一個(gè)對(duì)象s
    (33)將運(yùn)算符“+”重載為非成員函數(shù),下列原型聲明中,錯(cuò)誤的是
    A)MyClock operator + (MyClock,long);
    B)MyClock operator + (MyClock,MyClock);
    C)MyClock operator + (long,long);
    D)MyClock operator + (long,MyClock);
    (34)打開文件時(shí)可單獨(dú)或組合使用下列文件打開模式
    ①ios_base::app ②ios_base::binary
    ③ios_base::in ④ios_base::out
    若要以二進(jìn)制讀方式打開一個(gè)文件,需使用的文件打開模式為
    A)①③
    B)①④
    C)②③
    D)②④
    (35)有如下程序:
    #include
    using namespace std;
    Class B{
    public:
    B(int xx):x(xx) {++cout; x+=10;}
    virtual void show() const
    {cout<
    protected:
    static int count;
    private:
    int x;
    };
    class D:public B{
    public:
    D(int xx,int yy):B(xx),y(yy) {++count; y+=100;}
    virtual void show() const
    {cout<
    private:
    int y;
    };
    int B::count=0;
    int main(){
    B *ptr=new D(10,20);
    ptr->show();
    delete ptr;
    return 0;
    }
    運(yùn)行時(shí)的輸出結(jié)果是
    A)1_120
    B)2_120
    C)1_20
    D)2_20
      二、填空題(每空2分,共30分)
    請將每一個(gè)空的正確答案寫在答題卡【l】~【15】序號(hào)的橫線上,答在試卷上不得分。
    (1)一個(gè)隊(duì)列的初始狀態(tài)為空?,F(xiàn)將元素A,B,C,D,E,F,5,4,3,2,1依次入隊(duì),然后再依次退隊(duì),則元素退隊(duì)的順序?yàn)?【1】 。
    (2)設(shè)某循環(huán)隊(duì)列的容量為50,如果頭指針front=45(指向隊(duì)頭元素的前一位置),尾指針rear=10(指向隊(duì)尾元素),則該循環(huán)隊(duì)列中共有 【2】 個(gè)元素。
    (3)設(shè)二叉樹如下:
    

2010年3月計(jì)算機(jī)等級(jí)考試二級(jí)C++筆試試題(文字版)
    對(duì)該二叉樹進(jìn)行后序遍歷的結(jié)果為 【3】 。
    (4)軟件是 【4】 、數(shù)據(jù)和文檔的集合。
    (5)有一個(gè)學(xué)生選課的關(guān)系,其中學(xué)生的關(guān)系模式為:學(xué)生(學(xué)號(hào),姓名,班級(jí),年齡),課程的關(guān)系模式為:課程(課號(hào),課程名,學(xué)時(shí)),其中兩個(gè)關(guān)系模式的鍵分別是學(xué)號(hào)和課號(hào),則關(guān)系模式選課可定義為:選課(學(xué)號(hào), 【5】 ,成績)。
    (6)若x和y是兩個(gè)整形變量,在執(zhí)行了語句序列
    x=5; y=6; y+=x--;
    后,x+y的值為 【6】 。
    (7)在執(zhí)行語句序列
    int i=0; do i++; while(i*i<10);
    時(shí),do后面的循環(huán)體語句i++被執(zhí)行的次數(shù)為 【7】 。
    (8)有如下的函數(shù)定義:
    int Xfun(int *a, int n){
    int x=*a;
    for(int *pa=a+1; pa
    if(*pa>x) x=*pa;
    return x;
    }
    若執(zhí)行了語句
    int x[5]={23,46,78,55,16};
    后,通過表達(dá)式Xfun(x,5)調(diào)用該函數(shù),則得到的返回值為 【8】 。
    (9)有如下的函數(shù)定義:
    int Xfun(int x){
    int y=x;
    {int x=10; y+=x;}
    return x+y;
    }
    通過表達(dá)式Xfun(5)調(diào)用該函數(shù),則得到的返回值為 【9】 。
    (10)假定Xcs是一個(gè)類,該類中一個(gè)成員函數(shù)的原型為“Xcs *abc();”,則在類外定義時(shí)對(duì)應(yīng)的函數(shù)頭為 【10】 。
    (11)請將下面的類Date的定義補(bǔ)充完整,使得由語句
    Date FirstDay;
    定義的對(duì)象FirstDay的值為2010年1月1日。
    class Date{
    public:
    Date( 【11】 ):year(y),month(m),day(d){ }
    private:
    int year,month,day; //依次表示年、月、日
    };
    (12)請將下面的程序補(bǔ)充完整,使得程序輸出“飄是張娜的書”。
    #include
    using namespace std;
    class Book{
    public:
    Book(char *str) {strcpy(title,str);}
    【12】 void PrintInfo() {cout<
    protected:
    char title[50];
    };
    class MyBook:public Book{
    public:
    MyBook(char *s1,char *s2="張娜"):
    【13】 {strcpy(owner,s2);}
    virtual void PrintInfo() {cout<
    private:
    char owner[10];
    };
    int main(){
    Book *prt=new MyBook("飄");
    prt->PrintInfo();
    return 0;
    }
    (13)在有理數(shù)類Rational中重載插入運(yùn)算符<<,以便按a/q形式輸出。請將<<運(yùn)算符函數(shù)的定義補(bǔ)充完整。
    class Rational{
    public:
    Rational(int aa, int qq):a(aa),q(qq){ }
    friend 【14】 operator<<(ostream &out, Rational &x)
    {
    return (out<
    }
    private:
    int a,q;
    };
    (14)下面的函數(shù)定義是某函數(shù)模板能夠生成的函數(shù)實(shí)例
    int square(int n) {return n*n;}
    double square(double n) {return n*n;}
    由此可知,該函數(shù)模板的定義是 【15】 。