2016年9月計算機(jī)二級C++備考練習(xí)題及答案(2)

字號:


    (1)以下都是C++語言標(biāo)識符的是
    A)dsfa,df4,f$
    B)huhj,a^,k2
    C)3k,h,j_9
    D)_ok,jk,k8
    (2)C++語言中用于定義類的關(guān)鍵字是
    A)class
    B)struct
    C)default
    D)sizeof
    (3)設(shè)以下變量均為int類型,則值不等于7的表達(dá)式是
    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)
    (4)以下程序的輸出結(jié)果是
    #include
    void main()
    { int a=21,b=11;
    cout << --a+b;}
    A)30
    B)31
    C)32
    D)33
    (5)while 和do-while循環(huán)的主要區(qū)別是
    A)do-while的循環(huán)體至少無條件執(zhí)行一次
    B)while的循環(huán)控制條件比do-while的循環(huán)控制條件更嚴(yán)格
    C)do-while允許從外部轉(zhuǎn)到循環(huán)體內(nèi)
    D)do-while 的循環(huán)體不能是復(fù)合語句
    (6)與 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;
    (7)若二維數(shù)組a有m列,則計算任一元素a[i][j]在數(shù)組中相對位置的公式為 (假設(shè)a[0][0]位于數(shù)組的第一個位置上)
    A)i*m+j
    B)j*m+i
    C)i*m+j-1
    D)i*m+j+1
    (8)下面程序段的運行結(jié)果是
    #include
    void main()
    { char *s="abcde";
    s+=2;
    cout << &s;}
    A)cde
    B)字符′c′
    C)字符′c′的地址
    D)無確定的輸出結(jié)果
    (9)下面敘述不正確的是
    A)派生類一般都用公有派生
    B)對基類成員的訪問必須是無兩義性的
    C)賦值兼容規(guī)則也適用于多重繼承的組合
    D)基類的公有成員在派生類中仍然是公有的
    (10)下面程序應(yīng)能對兩個整型變量的值進(jìn)行交換。以下正確的說法是
    #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)D
    解析: C++語言標(biāo)識符只能由數(shù)字,字母和下劃線組成,并且只能以字母和下劃線為開頭。
    (2)A
    解析: C++中類定義的關(guān)鍵字是class。class不能大寫。
    (3)C
    解析: C++語言中逗號","也是一種運算符,稱為逗號運算符。其功能是把兩個表達(dá)式連接起來組成一個表達(dá)式,稱為逗號表達(dá)式。其一般形式為:表達(dá)式1, 表達(dá)式2,其求值過程是分別求兩個表達(dá)式的值,并以表達(dá)式2的值作為整個逗號表達(dá)式的值。逗號表達(dá)式的一般形式可以擴(kuò)展為:表達(dá)式1,表達(dá)式2,表達(dá)式3,…,表達(dá)式n,它的值為表達(dá)式n的值。
    (4)B
    解析: 自減運算符位于變量之前時,先使變量的值減1,再進(jìn)行運算。
    (5)A
    解析: while是先判斷條件再執(zhí)行語句;do-while則是先執(zhí)行一次語句再判斷條件,從而決定是否繼續(xù)再執(zhí)行循環(huán)體中的語句,這正是二者主要區(qū)別。
    (6)A
    解析: 條件運算符要求有三個操作對象,它是C++語言中惟一的一個三目運算符。條件表達(dá)式的一般形式為:表達(dá)式1?表達(dá)式2:表達(dá)式3,先求解表達(dá)式1,若為非0(真)則求解表達(dá)式2,此時表達(dá)式2的值就作為整個條件表達(dá)式的值。若表達(dá)式1的值為0(假),則求解表達(dá)式3,表達(dá)式3的值就是整個條件表達(dá)式的值。本題中用了兩次三目運算符。
    (7)A
    解析: a[i][j]元素之前有i行元素(每行有m個元素),在a[i][j]的前面還有j個元素,因此a[i][j]之前共有i*m+j個元素。
    (8)C
    解析: 對于字符串指針,其保留的是整個串的首地址,即為第一個字符的起始地址,當(dāng)該指針做算術(shù)運算時,就是該指針根據(jù)其類型向后移動相應(yīng)的存儲空間。
    (9)D
    解析: C++語言中如果基類的成員是公有的,它被繼承后在子類中該成員可能是公有的,也可能不是,主要看繼承的權(quán)限。
    (10)D
    解析: 本題應(yīng)該把swap()函數(shù)改成這樣:swap(int *p,int *q){int t; t=*p;*p=*q;*q=t;}執(zhí)行程序時,先將a的地址傳遞給指針變量p,b的地址傳遞給指針變量q,然后將*p(a的值)的值傳遞給t,將*q(b的值)傳遞給*p,將t的值傳遞給*q,從而將a值和b值互換。