全國計算機等級考試二級C++筆試模擬試題(一)

字號:


    一、選擇題
    在下列各題的A)、B)、C)、D)四個選項中,只有一個選項是正確的,請將正確的選項涂寫在答題卡相應位置上,答在試卷上不得分。
    (1)循環(huán)鏈表的主要優(yōu)點是
    A)不再需要頭指針了
    B)從表中任一結點出發(fā)都能訪問到整個鏈表
    C)在進行插入、刪除運算時,能更好的保證鏈表不斷開
    D)已知某個結點的位置后,能夠容易的找到它的直接前件
    (2)棧底至棧頂依次存放元素A、B、C、D,在第五個元素E入棧前,棧中元素可以出棧,則出棧序列可能是
    A)ABCED
    B)DCBEA
    C)DBCEA
    D)CDABE
    (3)n個頂點的強連通圖的邊數(shù)至少有
    A)n-1
    B)n(n-1)
    C)n
    D)n+1
    (4)在結構化程序設計思想提出之前,在程序設計中曾強調(diào)程序的效率。與程序的效率相比,人們更重視程序的
    A)安全性
    B)一致性
    C)可理解性
    D)合理性
    (5)模塊獨立性是軟件模塊化所提出的要求,衡量模塊獨立性的度量標準則是模塊的
    A)抽象和信息隱蔽
    B)局部化和封裝化
    C)內(nèi)聚性和耦合性
    D)激活機制和控制方法
    (6)軟件開發(fā)的結構化生命周期方法將軟件生命周期劃分成
    A)定義、開發(fā)、運行維護
    B)設計階段、編程階段、測試階段
    C)總體設計、詳細設計、編程調(diào)試
    D)需求分析、功能定義、系統(tǒng)設計
    (7)在軟件工程中,白箱測試法可用于測試程序的內(nèi)部結構。此方法將程序看做是
    A)路徑的集合
    B)循環(huán)的集合
    C)目標的集合
    D)地址的集合
    (8)在數(shù)據(jù)管理技術發(fā)展過程中,文件系統(tǒng)與數(shù)據(jù)庫系統(tǒng)的主要區(qū)別是數(shù)據(jù)庫系統(tǒng)具有
    A)特定的數(shù)據(jù)模型
    B)數(shù)據(jù)無冗余
    C)數(shù)據(jù)可共享
    D)專門的數(shù)據(jù)管理軟件
    (9)數(shù)據(jù)庫設計包括兩個方面的設計內(nèi)容,它們是
    A)概念設計和邏輯設計
    B)模式設計和內(nèi)模式設計
    C)內(nèi)模式設計和物理設計
    D)結構特性設計和行為特性設計
    (10)實體是信息世界中廣泛使用的一個術語,它用于表示
    A)有生命的事物
    B)無生命的事物
    C)實際存在的事物
    D)一切事物
     ?。?1)以下都是C++語言標識符的是
    A)dsfa,df4,f$
    B)huhj,a^,k2
    C)3k,h,j_9
    D)_ok,jk,k8
    (12)C++語言中用于定義類的關鍵字是
    A)class
    B)struct
    C)default
    D)sizeof
    (13)設以下變量均為int類型,則值不等于7的表達式是
    A)(x=y=6,x+y,x+1)
    B)(x=y=6,x+y,y+1)
    C)(x=6,x+1,y=6,x+y)
    D)(y=6,y+1,x=y,x+1)
    (14)以下程序的輸出結果是
    #include
    void main()
    { int a=21,b=11;
    cout << --a+b;}
    A)30
    B)31
    C)32
    D)33
    (15)while 和do-while循環(huán)的主要區(qū)別是
    A)do-while的循環(huán)體至少無條件執(zhí)行一次
    B)while的循環(huán)控制條件比do-while的循環(huán)控制條件更嚴格
    C)do-while允許從外部轉到循環(huán)體內(nèi)
    D)do-while 的循環(huán)體不能是復合語句
    (16)與 y=(x>0?1:x<0?-1:0);的功能相同的if語句是
    A)if (x>0)y=1;
    else if(x<0)y=-1;
    else y=0;
    B)if(x)
    if(x>0)y=1;
    else if(x<0)y=-1;
    C)y=-1;
    if(x)
    if(x>0)y=1;
    else if(x==0)y=0;
    else y=-1;
    D)y=0;
    if(x>=0)
    if(x>0)y=1;
    else y=-1;
    (17)若二維數(shù)組a有m列,則計算任一元素a[i][j]在數(shù)組中相對位置的公式為 (假設a[0][0]位于數(shù)組的第一個位置上)
    A)i*m+j
    B)j*m+i
    C)i*m+j-1
    D)i*m+j+1
    (18)下面程序段的運行結果是
    #include
    void main()
    { char *s="abcde";
    s+=2;
    cout << &s;}
    A)cde
    B)字符′c′
    C)字符′c′的地址
    D)無確定的輸出結果
    (19)下面敘述不正確的是
    A)派生類一般都用公有派生
    B)對基類成員的訪問必須是無兩義性的
    C)賦值兼容規(guī)則也適用于多重繼承的組合
    D)基類的公有成員在派生類中仍然是公有的
    (20)下面程序應能對兩個整型變量的值進行交換。以下正確的說法是
    #include
    void swap(int p,int q)
    { int t;
    t=p;
    p=q;
    q=t;}
    void main()
    { int a=10,b=20;
    cout << a << " " << b;
    swap(&a,&b);
    cout << a << " " << b;}
    A)該程序完全正確
    B)該程序有錯,只要將語句swap(&a,&b);中的參數(shù)改為a,b即可
    C)該程序有錯,只要將swap()函數(shù)中的形參p和q以及t均定義為指針(執(zhí)行語句不變)即可
    D)以上說法都不對
     ?。?1)關于友元的概念錯誤的是
    A)友元函數(shù)沒有this指針
    B)調(diào)用友元函數(shù)時必須在它的實參中給出要訪問的對象
    C)一個類的成員函數(shù)也可以作為另一個類的友元函數(shù)
    D)只能在類的公有段聲明友元
    (22)關于抽象類下面說法正確的是
    A)抽象類就是其中有函數(shù)定義但沒有實現(xiàn)的類
    B)抽象類是可以被實例化的
    C)派生類不能成為抽象類
    D)抽象類的子類必須實現(xiàn)父類中的純虛函數(shù)
    (23)下面程序的結果是
    #include
    class test { private:
    int num;
    public:
    test();
    int getint(){return num;}
    ~test();};
    test :: test()
    { num =0;}
    test::~test()
    { cout<<"Destructor is active"<  void main()
    { test x[3];
    cout<<"Exiting main"<  A)Exiting main
    Destructor is active
    Destructor is active
    Destructor is active
    B)Exiting main
    Destructor is active
    Destructor is active
    C)Exiting main
    Destructor is active
    D)Exiting main
    (24)如果表達式--x+y中,--是作為成員函數(shù)重載的, +是作為成員函數(shù)重載的,則該表達式還可為
    A)y.operator+(x.operator--(0))
    B)y.operator+(x.operator--())
    C)y.operator+(operator--(x,0))
    D)operator+(x.operator--())
    (25)下列語句不能夠用于打開C根目錄下文件test.txt的語句是
    A)ifstream fin; fin.open("C:\\test.txt");
    B)ifstream fin("C:\\test.txt");
    C)A)和B)
    D)ifstream fin; fin("C:\\test.txt");
    (26)以下哪個基類中的成員函數(shù)表示純虛函數(shù)?
    A)virtual void vf (int)
    B)void vf (int)=0
    C)virtual void vf(=0)
    D)virtual void yf(int){ }
    (27)下面程序輸出的結果是
    #include
    void main()
    { int i;
    int a[3][3]={1,2,3,4,5,6,7,8,9};
    for(i=0;i<3;i++)
    cout << a[i][i] << " ";}
    A)1 5 9
    B)7 5 3
    C)3 5 7
    D)5 9 1
    (28)派生類繼承基類的方式有
    A)public
    B)private
    C)protected
    D)以上都對
    (29)下列程序的運行結果為
    #include
    class Location {
    protected:
    int X, Y;
    public:
    void SetX(int myx){X=myx;}
    void SetY(int myy){Y=myy;}
    void showxy(){cout << "X=" << X << " " << "Y=" << Y <  class Rectangle : public Location{
    private:
    int H, W;
    public:
    void SetH(int myh){H=myh;}
    void SetW(int myw){W=myw;}
    void show(){ cout << "X=" << X << " " << "Y=" << " " << Y << " " << "H=" << H << " " << "W=" << W << endl;}};
    void main()
    { Rectangle r1;
    r1.SetX (3);
    r1.SetY (5);
    r1.SetH (4);
    r1.SetW (6);
    r1.showxy();
    r1.show();}
    A)X=3 Y=5
    X=3 Y=5 H=4 W=6
    B)X=3 Y=5
    X=3 Y=5 H=3 W=6
    C)X=3 Y=5
    X=3 Y=4 H=4 W=6
    D)X=3 Y=5
    X=3 Y=3 H=4 W=6
    (30)有以下程序
    #include
    void ss(char *s,char t)
    { while(*s)
    { if(*s==t)*s=t-′a′+′A′;
    s++;}}
    void main()
    { char str1[100]="abcddfefdbd",c=′d′;
    ss(str1,c); cout << str1;}
    程序運行后的輸出結果是
    A)ABCDDEFEDBD
    B)abcDDfefDbD
    C)abcAAfefAbA
    D)Abcddfefdbd
    (31)有以下程序
    #include
    void main()
    { int a=5,b=0,c=0;
    if(a=b+c)cout << "***"<  else cout << "$$$"<  下列選項敘述正確的是
    A)有語法錯不能通過編譯
    B)可以通過編譯但不能通過連接
    C)輸出***
    D)輸出$$$
    (32)已知各變量的定義如下
    int i=8,k,a,b;
    unsigned long w=5;
    double x=1.42,y=5.2;
    則以下符合C++語言語法的表達式是
    A)a+=a-=(b=4)*(a=3)
    B)a=a*3+2
    C)x%(-3)
    D)y=float i
    (33)以下程序中循環(huán)體總的執(zhí)行次數(shù)是
    int i,j;
    for(i=6;i>1;i--)
    for(j=0;j  {……}
    A)20
    B)261
    C)15
    D)25
    (34)對于下面的程序,說法正確的是
    #include
    void main()
    { int x=3,y=4,z=2;
    if(x=y+z)cout << "x=y+z";
    else cout << "x!=y+z";}
    A)不能通過編譯
    B)輸出6
    C)輸出x!=y+z
    D)輸出x=y+z
    (35)下列程序的輸出結果是
    #include
    void main()
    { int a[3],i,j,k=2;
    for(i=0;i<3;i++)a[i]=i;
    for(i=0;i  for(j=0;j  a[j]=a[i];
    cout << a[2];}
    A)2
    B)3
    C)1
    D)0
    二、填空題
    請將每一個空的正確答案寫在答題卡序號的橫線上,答在試卷上不給分。
    (1)常用的黑箱測試有等價分類法、 1 、因果圖法和錯誤推測法4種。
    (2)測試的目的是暴露錯誤,評價程序的可靠性;而 2 的目的是發(fā)現(xiàn)錯誤的位置并改正錯誤。
    (3)軟件維護活動包括以下幾類:改正性維護、適應性維護、 3 維護和預防性維護。
    (4)在面向對象的設計中,用來請求對象執(zhí)行某一處理或回答某些信息的要求稱為 4 。
    (5)關鍵字ASC和DESC分別表示 5 的含義。
    (6)C++語言中表示雙精度浮點數(shù)的關鍵字是 6 。
    (7)執(zhí)行下列語句后,c3中的值為 7
    int c1=1,c2=2,c3;c3=1.0/c2*c1;
    (8)若從鍵盤輸入70,則以下程序輸出的結果是 8 。
    #include
    void main()
    { int a;cin >> a;
    if(a>50)cout << a;
    if(a>40)cout << a;
    if(a>30)cout << a;}
    (9)以下程序的輸出結果是 9 。
    #include
    void main()
    { char s[]="abcdef";s[3]=′\0′;
    cout << s << endl;}
    (10)以下程序運行后的輸出結果是 10 。
    #include
    void fun(int x,int y)
    { x=x+y;y=x-y;x=x-y;
    cout << x << "," << y << ","; }
    void main()
    { int x=2,y=3;fun(x,y);
    cout << x << "," << y << endl;}
    (11)常數(shù)據(jù)成員和靜態(tài)數(shù)據(jù)成員在使用前共同的要求是要進行 11 。
    (12)在類的定義中,用于為對象分配內(nèi)存空間,對類的數(shù)據(jù)成員進行初始化并執(zhí)行其他內(nèi)部管理操作的函數(shù)是 12 。
    (13)表達式x.operator+(y.operator++(0))還可以寫成 13 。
    (14)要采用"cin,cout"進行輸入輸出時,必須包含的頭文件是 14 。
    (15)構造函數(shù)是和 15 同名的函數(shù)。