2016年計算機二級《C++》基礎(chǔ)練習題及答案

字號:


    1[單選題] 已知函數(shù)FA調(diào)用函數(shù)FB,若要把這兩個函數(shù)定義在同一個文件中,則( )。
    A.FA必須定義在FB之前
    B.FB必須定義在FA之前
    C.若FA定義在FB之后,則FA的原型必須出現(xiàn)在FB的定義之前
    D.若FB定義在FA之后,則FB的原型必須出現(xiàn)在FA的定義之前
    參考答案:D
    參考解析:如果使用用戶自己定義的函數(shù),而該函數(shù)與調(diào)用它的函數(shù)(即主調(diào)用函數(shù))在同一程序單元中,且位置在主調(diào)用函數(shù)之后,則必須在調(diào)用此函數(shù)之前對被凋用的函數(shù)作聲明。
    2[單選題]單個用戶使用的數(shù)據(jù)視圖的描述稱為
    A.外模式 B.概念模式 C.內(nèi)模式 D.存儲模式
    參考答案:A
    3[單選題] 生成派生類對象時,派生類構(gòu)造函數(shù)調(diào)用基類構(gòu)造函數(shù)的條件是(  )。
    A.無需任何條件
    B.基類中顯式定義了構(gòu)造函數(shù)
    C.派生類中顯式定義了構(gòu)造函數(shù)
    D.派生類構(gòu)造函數(shù)明確調(diào)用了基類構(gòu)造函數(shù)
    參考答案:D
    參考解析:派生類的構(gòu)造函數(shù)必須通過調(diào)用基類的構(gòu)造函數(shù)來初始化基類子對象。所以,在定義派生類的構(gòu)造函數(shù)時除了對自己的數(shù)據(jù)成員進行初始化外,還必須負責調(diào)用基類構(gòu)造函數(shù)使基類的數(shù)據(jù)成員得以初始化。
    4[單選題] 下列敘述中正確的是(  )。
    A.在面向?qū)ο蟮某绦蛟O(shè)計中,各個對象之間具有密切的關(guān)系
    B.在面向?qū)ο蟮某绦蛟O(shè)計中,各個對象都是公用的
    C.在面向?qū)ο蟮某绦蛟O(shè)計中,各個對象之間相對獨立,相互依賴性小
    D.上述三種說法都不對
    參考答案:C
    參考解析:面向?qū)ο蟮某绦蛟O(shè)計是用對象模擬問題領(lǐng)域中的實體,各對象之間相對獨立,相互依賴性小,通過消息來實現(xiàn)對象之間的相互聯(lián)系。
    5[單選題]
    

    A.變量a的值,即3
    B.變量a的地址值
    C.變量p的地址值
    D.無意義
    參考答案:A
    參考解析:
    

    6[單選題]閱讀以下程序:
    

    下列錯誤的是(  )。
    A.對象infile只能用于文件入操作
    B.對象outfile只能用于文件輸出操作
    C.對象iofile在文件關(guān)閉后,不能再打開另一個文件
    D.對象iofile可以打開一個文件同時進行輸入和輸出
    參考答案:C
    參考解析:本題看似復雜。其實掌握技巧的話可以很容易的得出正確答案為C。按照常識,一個 文件關(guān)閉后,應(yīng)該可以再打開另外一個文件。
    7[填空題]軟件設(shè)計模塊化的目的是 。
    答案解析:降低復雜性
    8[單選題]程序中若有如下的說明和定義語句
    char fun(char *);
    main()
    {
    char *s= "one",a[5]={0},(*f1)()=fun,ch;
    ……
    }
    以下選項中對函數(shù)fun的正確調(diào)用語句是( )
    A.(*f1)(a); B.*f1(*s); C.fun( &a); D.ch=*f1(s)
    參考答案:A
    9[填空題]診斷和改正程序中錯誤的工作通常稱為( )。
    參考答案:程序調(diào)序
    10[填空題]以下程序中,fun函數(shù)的功能是求3行4列二維數(shù)組每行元素中的值,請?zhí)羁? )
    void fun(int, int, int (*)[4],int *)
    main()
    {
    int a[3][4]={{12,41,36,28},{19,33,15,27},{3,27,19,1}},b[3],i;
    fun(3,4,a,b);
    for(i=0;i<3;i++)
    printf("M",b[i]);
    printf("\n");
    }
    void fun(int m,int n,int ar[][4],int *br)
    {
    int i,j,x;
    for(i=0;i
    { x=ar[i][0];
    for(j=0;j
    if(x (12) =x;
    }
    參考解析:br[i]
    11[填空題]C++源程序的擴展名是(  ) 。
    參考解析:cpp
    12[單選題] 有如下程序:
    #include
    usingnamespacestd;
    classC1{
    public:
    ~C1(  ){cout<<1;)
    };
    classC2:publicC1{
    public:
    ~C2(  ){cout<<2;)
    };
    intmain(  ){
    C2cb2;
    C1*cb1:
    return0;
    }
    運行時的輸出結(jié)果是(  )。
    A.121B.21C.211D.12
    參考答案:B
    參考解析:在基類與派生類中,析構(gòu)函數(shù)在派生類先調(diào)用,而本題有兩個不同類對象,對于cb2需先調(diào)c2的析構(gòu)函數(shù),再調(diào)c1的析構(gòu)函數(shù)。而對于*cb1由于沒有指針性析構(gòu)函數(shù),它將不參加傳遞數(shù)據(jù)。
    13[單選題]若有定義語句“intm[]={5,4,3,2,1),i=4;”則下列對m數(shù)組元素的引用中錯誤的是(  )。
    A.m[--i]B.m[2*2]C.m[m[o]]D.m[m[i]]
    參考答案:C
    參考解析:數(shù)組的下標是從零開始的。一維數(shù)組的一般定義方式為數(shù)型說明符數(shù)組名[常置表達式],其中“[]”中的內(nèi)容可以是整型數(shù)量,也可以是整型表達式。選項C中,m[0]=5,m[m[o]]=m[5],數(shù)組下標越界。
    14[單選題]
    

    A.
    

    B.
    

    C.
    

    D.
    

    參考答案:C
    參考解析:在函數(shù)f的形參表達式中第一個形參為整型指針變量,第二個為整型引用變量,所以用實參v1的指針初始化第一個形參,用實參v2初始化第二形參。
    15[單選題] 有以下程序:
    classDate
    {public:
    Date(inty,intm,intd);
    {year=Y;
    month=m;
    day=d;}
    Date(inty=2000)
    {year=y;
    month=10;
    day=1;}
    Date(Date&d)
    {year=d.year;
    month=d.month;
    day=d.day;}
    voidprint()
    {cout<
    day<
    private:
    intyear,month,day;};
    Datefun(Dated)
    {Datetemp;
    temp=d;
    returntemp;}
    intmain()
    {Datedatel(2000,1,1),date2(0,0,O);
    Datedate3(date1);
    date2=fun(date3);
    return0;}
    程序執(zhí)行時,Date類的復制構(gòu)造函數(shù)被調(diào)用的次數(shù)是(  )。
    A.2B.3C.4D.5
    參考答案:B
    參考解析:本題復制構(gòu)造函數(shù)一共被調(diào)用了三次:第一次是在執(zhí)行語句Datedate3(datel);時,用已經(jīng)建立的對象datel對正在建立的對象date3進行初始化;第二次是在調(diào)用fun函數(shù)時,由于是傳值調(diào)用,因此實參對象date3要對形參對象d進行初始化;第三次是在執(zhí)行fun函數(shù)中的返回語句returntemp;時,系統(tǒng)初始化一個匿名對象時使用了復制構(gòu)造函數(shù)。
    16[單選題] 對于語句“cout<
    A.*********1*2B.********12C.*******1*2D.12********
    參考答案:A
    參考解析:C++語言中,setfill的意思是在空格的地方填上setfill函數(shù)中的參數(shù)字符,setw的意思是設(shè)置整個輸出字符串的字符個數(shù),本題中用*來代替空格。
    17[單選題]如果一個模板聲明列出了多個參數(shù),則每個參數(shù)之間必須使用逗號隔開,每個參數(shù)都必須使用(  )關(guān)鍵字來修飾。
    A.constB.staticC.voidD.class
    參考答案:D
    參考解析:如果一個模板聲明列出了多個參數(shù),則每個參數(shù)之間必須使用逗號隔開,每個參數(shù)都必須使用class關(guān)鍵字來修飾。
    18[單選題] 已知類MyClass的定義如下:
    ClassMyClass{
    public:
    MyClass(intd){data=d;}
    ~MyClass(){}
    private:
    intdata;
    };
    下列對MyClass類對象數(shù)組的定義和初始化語句中,正確的是(  )。
    A.MyClassarray[2];
    B.MyClassarray[2]={MyClass(5)};
    C.MyClassarray[2]={MyClass(5),Myclass(6)};
    D.MyClass*array=newMyClass[2];
    參考答案:C
    參考解析:A只是聲明,沒有初始化;B的初始化錯誤,另一個數(shù)組對象沒有指明地址;D同樣做的不是初始化的事情。
    19[單選題]下列函數(shù)的功能是判斷字符串str是否對稱,對稱則返回true,否則返回false,則橫線處應(yīng)填上(  )。
    

    A.
    

    B.
    

    C.
    

    D.
    

    參考答案:A
    參考解析: