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

字號:

二級C++ 筆試模擬試題(四)
    一、選擇題
    在下列各題的A)、B)、C)、D)四個選項中,只有一個選項是正確的,請將正確的選項涂寫在答題卡相應(yīng)位置上,答在試卷上不得分。
    (1)下列敘述中正確的是
    A)線性表是線性結(jié)構(gòu)
    B)棧與隊列是非線性結(jié)構(gòu)
    C)線性鏈表是非線性結(jié)構(gòu)
    D)二叉樹是線性結(jié)構(gòu)
    (2)非空的循環(huán)單鏈表head的尾結(jié)點(由p所指向),滿足
    A)p->next==NULL
    B)p==NULL
    C)p->next=head
    D)p=head
    (3)已知數(shù)據(jù)表A中每個元素距其最終位置不遠(yuǎn),為節(jié)省時間,應(yīng)采用的算法是
    A)堆排序
    B)直接插入排序
    C)快速排序
    D)直接選擇排序
    (4)對建立良好的程序設(shè)計風(fēng)格,下面描述正確的是
    A)程序應(yīng)簡單、清晰、可讀性好
    B)符號名的命名只要符合語法
    C)充分考慮程序的執(zhí)行效率
    D)程序的注釋可有可無
    (5)下列不屬于結(jié)構(gòu)化分析的常用工具的是
    A)數(shù)據(jù)流圖
    B)數(shù)據(jù)字典
    C)判定樹
    D)PAD圖
    (6)在軟件生產(chǎn)過程中,需求信息的給出是
    A)程序員
    B)項目管理者
    C)軟件分析設(shè)計人員
    D)軟件用戶
    (7)下列工具中為需求分析常用工具的是
    A)PAD
    B)PFD
    C)N-S
    D)DFD
    (8)NULL是指
    A)0
    B)空格
    C)未知的值或無任何值
    D)空字符串
    (9)數(shù)據(jù)庫的故障恢復(fù)一般是由
    A)數(shù)據(jù)流圖完成的
    B)數(shù)據(jù)字典完成的
    C)DBA完成的
    D)PAD圖完成的
    (10)下列說法中,不屬于數(shù)據(jù)模型所描述的內(nèi)容的是
    A)數(shù)據(jù)結(jié)構(gòu)
    B)數(shù)據(jù)操作
    C)數(shù)據(jù)查詢
    D)數(shù)據(jù)約束
     (11)面向?qū)ο蟪绦蛟O(shè)計思想的主要特征中不包括
    A)繼承性
    B)功能分解,逐步求精
    C)封裝性和信息隱藏
    D)多態(tài)性
    (12)C++語言是以哪種語言為基礎(chǔ)逐漸發(fā)展演變而成的一種程序設(shè)計語言
    A)ASP
    B)C
    C)VB
    D)Java
    (13)設(shè)變量a是int型,f是double型,i是float型,則表達(dá)式10+′a′+ i * f值的數(shù)據(jù)類型
    A)int
    B)float
    C)double
    D)不確定
    (14)能正確表示邏輯關(guān)系:"a≥10或a≤0"的C++語言表達(dá)式是
    A)a>=10 or a<=0
    B)a>=0|a<=10
    C)a>=10 && a<=0
    D)a>=10‖a<=0
    (15)以下程序的輸出結(jié)果是
    #include
    void main()
    { int i,j,x=0;
    for(i=0;i<2;i++)
    { x++;
    for(j=0;j<3;j++)
    { if(j%2)continue;
    x++;}
    x++;}
    cout << "x=" << x;}
    A)x=4
    B)x=8
    C)x=6
    D)x=12
    (16)若執(zhí)行下面的程序時,從鍵盤上輸入5和2,則輸出結(jié)果是
    #include
    void main()
    { int a,b,k;
    cin >> a >> b;
    k=a;
    if(a  k=a%b;
    else
    k=b%a;
    cout << k << endl;}
    A)5
    B)3
    C)2
    D)0
    (17)有以下程序
    #include
    #include
    void main()
    { char *p="abcde\0fghjik\0 ";
    cout << strlen(p);}
    程序運行后的輸出結(jié)果是
    A)12
    B)15
    C)6
    D)5
    (18)若有說明語句
    char a[]="It is mine";
    char *p="It is mine";
    則以下不正確的敘述是
    A)a+1表示的是字符t的地址
    B)p指向另外的字符串時,字符串的長度不受限制
    C)p變量中存放的地址值可以改變
    D)a中只能存放10個字符
    (19)以下程序的運行結(jié)果是
    #include
    void sub(int x,int y,int *z)
    { *z=y-x;}
    void main()
    { int a,b,c;
    sub(10,5,&a);
    sub(7,a,&b);
    sub(a,b,&c);
    cout << a <<","<< b<<"," << c << endl;}
    A)5,2,3
    B)-5,-12,-7
    C)-5,-12,-17
    D)5,-2,-7
    (20)下列程序是用來判斷數(shù)組中特定元素的位置所在,則輸出結(jié)果為
    #include
    #include
    int fun(int *s, int t, int *k)
    { int i;
    *k=0;
    for(i=0;i  if(s[*k]  return s[*k];}
    void main()
    { int a[10]={ 876,675,896,101,301,401,980,431,451,777},k;
    fun(a, 10, &k);
    cout << k <<′,′ << a[k];}
    A)7,431
    B)6
    C)980
    D)6,980
     (21)執(zhí)行下列程序段,結(jié)果是
    #include
    void main()
    { int x=40;
    char y=′C′;
    int n;
    n=(x&0xff)&&(y>′B′);
    cout << n;}
    A)0
    B)1
    C)2
    D)3
    (22)關(guān)于this指針的說明不正確的是
    A)不能在程序中修改this指針
    B)this指針可以給其他指針賦值,但不能修改this指針
    C)靜態(tài)成員函數(shù)中沒有this指針
    D)this指針可以被賦值
    (23)下面程序的結(jié)果是
    #include
    class A
    { public:
    A(){cout << "construtA" << endl;}
    virtual ~A(){cout << "destructA" << endl;}};
    class B : public A
    { };
    class C : public A
    { };
    class D : public B,public C
    { };
    void main()
    {D d;}
    A)constructA
    destructA
    B)constructA
    constructA
    destructA
    destructA
    C)constructA
    constructA
    constructA
    destructA
    destructA
    destructA
    D)constructA
    constructA
    constructA
    constructA
    destructA
    destructA
    destructA
    destructA
    (24)關(guān)于虛函數(shù)下面說的正確的是
    A)若在重定義虛函數(shù)時使用了virtual,則該重定義函數(shù)還是虛函數(shù)
    B)虛函數(shù)不能聲明為友元
    C)子類必須重定義父類的虛函數(shù)
    D)虛函數(shù)不能是static的
    (25)如果表達(dá)式++x/y中,++是作為友元函數(shù)重載的,/是作為成員函數(shù)重載的,則該表達(dá)式還可為
    A)(operator++(x)).operator/(y)
    B)(operator++(0)).operator/(y)
    C)operator/((operator++(x,0)),y)
    D)operator/((operator++(0)),y)
    (26)要想使23.78965421的輸出為23.7887應(yīng)用的語句是
    A)cout << 23.78965421;
    B)cout << fixed << 23.78965421;
    C)cout << 23.78965421 -0.001;
    D)cout << fixed << 23.78965421 - 0.001;
    (27)有以下語句,則對a數(shù)組元素的引用不正確的是(0≤i≤9)
    int a[10]={0,1,2,3,4,5,6,7,8,9},*p=a;
    A)a[p-a]
    B)*(&a[i])
    C)p[i]
    D)*(*(a+i))
    (28)有以下程序
    #include
    float fun(int x,int y)
    { return(x+y); }
    void main()
    { int a=2,b=5,c=8;
    cout << fun((int)fun(a+c,b),a-c);}
    程序運行后的輸出結(jié)果是
    A)編譯出錯
    B)9
    C)21
    D)9.0
    (29)下列程序的運行結(jié)果是
    #include
    class Location {
    private:
    int X, Y;
    public:
    void init(int=0, int=0);
    void valueX( int val ){X=val;}
    int valueX(){ return X;}
    void valueY(int val){Y=val;}
    int valueY( ){return Y;}};
    void Location::init(int initX, int initY)
    { X=initX;
    Y=initY;}
    void main( )
    { Location A,B;
    A.init( );
    A.valueX (5);
    cout <  B.init(6,2);
    B.valueY (4);
    cout<  A)5
    0
    6
    4
    B)0
    0
    6
    4
    C)5
    0
    6
    2
    D)0
    0
    6
    2
    (30)在C++語言中,封裝是借助于什么達(dá)到的?
    A)結(jié)構(gòu)
    B)類
    C)數(shù)組
    D)函數(shù)
     ?。?1)在位運算中,操作數(shù)每左移一位,其結(jié)果相當(dāng)于
    A)操作數(shù)乘以2
    B)操作數(shù)除以2
    C)操作數(shù)除以4
    D)操作數(shù)乘以4
    (32)有如下程序
    #include
    #define N 2
    #define M N+1
    #define NUM 2*M+1
    void main()
    { int i;
    for(i=1;i<=NUM;i++)
    cout << i;}
    該程序中的for循環(huán)執(zhí)行的次數(shù)是
    A)5
    B)6
    C)7
    D)8
    (33)下列程序的輸出結(jié)果是
    #include
    int b=2;
    int func(int *a)
    { b += *a; return(b);}
    void main()
    { int a=2, res=2;
    res += func(&a);
    cout << res;}
    A)4
    B)6
    C)8
    D)10
    (34)所有在函數(shù)中定義的變量,連同形式參數(shù),都屬于
    A)全局變量
    B)局部變量
    C)靜態(tài)變量
    D)寄存器變量
    (35)有如下程序:
    #include
    long fib(int n)
    { if(n>2)return(fib(n-1)+fib(n-2));
    else return (2);}
    void main()
    { cout << fib (3);}
    該程序的輸出結(jié)果是
    A)2
    B)4
    C)6
    D)8
    二、填空題
    請將每一個空的正確答案寫在答題卡序號的橫線上,答在試卷上不給分。
    (1)冒泡排序算法在的情況下的元素交換次數(shù)為 1 。
    (2)在最壞情況下,堆排序需要比較的次數(shù)為 2 。
    (3)若串s="MathTypes",則其子串的數(shù)目是 3 。
    (4)軟件開發(fā)環(huán)境是全面支持軟件開發(fā)全過程的 4 集合。
    (5)關(guān)系數(shù)據(jù)庫的關(guān)系演算語言是以 5 為基礎(chǔ)的DML語言。
    (6)C++語言中關(guān)鍵字運算符有new,delete和 6 。
    (7)將以下程序?qū)懗扇窟\算表達(dá)式是 7 。
    if(a>b)max=a;
    else max=b;
    (8)以下程序的輸出結(jié)果是 8 。
    #include
    void main()
    { char s[]="defghijk";s[4]=′\0′;
    cout << s << endl;}
    (9)下面程序的功能是將字符數(shù)組a中下標(biāo)值為偶數(shù)的元素從小到大排列,其他元素不變,請?zhí)羁铡?BR>    #include
    #include
    void main()
    { char a[]="clanguage",t;
    int i, j, k;
    k=strlen(a);
    for(i=0; i<=k-2; i+=2)
    for(j=i+2; j<=k; 9 )
    if ( 10 )
    { t=a[i]; a[i]=a[j]; a[j]=t; }
    cout << a;
    cout << endl;}
    (10)靜態(tài)成員函數(shù)可以直接訪問類的 11 成員,不能直接訪問類的 12 成員。
    (11)請定義一個函數(shù)名為A,返回值為int,沒有參數(shù)的純虛函數(shù)的定義是 13 。
    (12)表達(dá)式x.operator+(y.operator++(0))還可以寫成 14 。
    (13)假設(shè)fin是一個文件流對象,則關(guān)閉文件的語句是 15 。