2013年軟考程序員模擬試題及答案解析2

字號:

16.設(shè)整型變量m,n,a,b,c,d均為1,執(zhí)行“( m=a>b)&&(n=a>b)"后m,n的值是( )
    A.0,0
    B.0,l
    C.1,0
    D.1,l
    【解析】表達式(m=a >b)&&(n=a >b)是一個邏輯表達式,它的計算過程是先計算邏輯與的左分量(m=a>b,其中又是先計算a>b。因a>b不成立,結(jié)果為0,將0賦給變量m,最后邏輯與的左分量結(jié)果為0。由于邏輯運算采用特別的優(yōu)化計算規(guī)則,當邏輯與的左分量結(jié)果為0時,不再計算邏輯與的右分量,而直接以0為邏輯與的結(jié)果。所以,上述表達式計算使m的值變?yōu)?,而n的值沒有變,依舊為l。所以解答是B。
    【參考答案】B
    17. 設(shè)有代碼“int a=3;”,則執(zhí)行了語句“a+=a-= a*a;”后,變量a的值是( )
    A.3
    B. 0
    C. 9
    D. -12
    【解析】由于賦值運算符的結(jié)合性自右至左,語句“a+=a-=a*a;”的執(zhí)行是先計算a*a,得到值 9,再計算 a-=a*a,使 a的值為-6,接著計算 a+=a,使 a的值為-12。所以解答是D。
    【參考答案】D
    18.在以下一組運算符中,優(yōu)先級的運算符是( )
    A.<=
    B.=
    C.%
    D.&&
    【解析】常規(guī)運算符的優(yōu)先級自高到低的排列順序是算術(shù)運算符、移位運算符、關(guān)系運算符。按位運算符、邏輯運算符、條件運算符、賦值運算符、逗號運算符。所以問題所給的四個運算符按優(yōu)先級自高到低的排列順序是%,<=,&&,=。所以解答是C。
    【參考答案】C
    19.設(shè)整型變量i的值為3,則計算表達式i---i后表達式的值為( )
    A.0
    B.l
    C.2
    D.表達式出錯
    【解析】有些運算符只有一個字符,也有許多運算符由兩個字符組成。特別是有些字符既可是單個字符的運算符,又能組成雙字符的運算符。編譯系統(tǒng)在識別源程序時,通常是盡量多地讀八字符,能組成多字符單詞的先盡量組成多字符單詞。所以表達式i---i,被編譯器理解為(i--)-i。另外,當表達式中某變量有后綴自增和自減運算時,先按變量的原值計算表達式,然后再對變量進行自增和自減運算。同樣地,當表達式中某變量有前綴自增和自減運算時,先對變量進行自增和自減運算,然后再按變量的新值計算表達式。按這個約定,求表達式(i--)-i是計算i-i的值為0,然后再對i作自減運算。這樣,表達式(i--)-i的值為0。所以解答是A。
    【參考答案】A
    20.設(shè)整型變量 a、b、c均為2,表達式 a+++b+++c++ 的結(jié)果是( )
    A.6
    B.9
    C.8
    D.表達式出錯
    【解析】與上一小題解答的理由相同,表達式a+++b+++c++被系統(tǒng)理解成:((a++)+(b++))+c++)。表達式“變量++”的值是變量的原來值,所以在變量a、b.c均為2的前題下,執(zhí)行上述表達式,得到結(jié)果為6。所以解答是A。
    【參考答案】A
    21.若已定義 x和 y為double類型,則表達式: x=l, y=x+3/2結(jié)果是( )
    A.l
    B.2
    C.2.0
    D.2.5
    【解析】由于變量x和y都是double類型,表達式 x=l, y=x+3/2是先計算 x=1,由于 1是整型的,x是double類型的,該計算先將整數(shù)1轉(zhuǎn)換成double類型的1.0,并將1.0賦給變量x。計算 y=X+3/2是先求 3/2的值,因是兩整數(shù)相除,結(jié)果是整型值 1,然后在計算 X+1時,也先將 1轉(zhuǎn)換成 1.0,然后求得 X+l的值為2.0,最后將該值賦給變量 y,并得到整個表達式的值為2.0.所以解答是C。
    【參考答案】C
    22.設(shè)a為整型變量,下列C表達式中,不能表達數(shù)學(xué)關(guān)系式:10
    A.10
    B.a==11||a==12|| a==13|| a==14
    C.a>10&&a<15
    D.!(a<=10)&&!(a>=15)
    【解析】數(shù)學(xué)關(guān)系式 1010&& a<15,或!(a<=10)&&!(a>=15),或a==11||a==12 || a==13||a==14等。若寫成10
    【參考答案】A
    23.下列表達式中,正確的C賦值表達式是( )
    A.a=7+b+C=a+7
    B. C=7+b++=a+7
    C.a=(7+b, b++, a+7)
    D. a= 7+b, c=a+7
    【解析】賦值運算符是運算符之一,賦值運算也可以出現(xiàn)在一般表達式中。賦值運算時,出現(xiàn)在賦值運算符左邊的表達式應(yīng)該是引用一個存儲對象,例如變量。不可以是一個數(shù)值計算表達式。如表達式a=7+b+c=a+7因算術(shù)運算符比賦值運算符的優(yōu)先級高,要把a+7的結(jié)果賦給7+b+c,這是錯誤的。同樣理由,表達式a= 7+b++=a+7也是錯誤的。而表達式a=(7+b,b++,a+7)就是正確的賦值表達式,它是先計算賦值號左邊的括號內(nèi)的表達式,括號表達式內(nèi)是一個逗號表達式,遠號表達式要求順序逐一計算各子表達式,并以最后一個子表達式的值作為遠號表達式的結(jié)果,最后將該結(jié)果賦給變量a。而表達式a=7+b,c=a+7則不是一個賦值表達式,而是一個逗號表達式,它由兩個賦值子表達式組成。所以解答是C。
    【參考答案】C
    24.若有以下定義: char a;int b;float c; double d;則表達式a*b+d-c值的類型為( )
    A.float
    B. int
    C. char
    D. double
    【解析】基本類型的數(shù)據(jù)可以混合運算,但運算時,對要求運算分量類型相同的運算來說,如運算分量的類型不是全相同,則會有自動類型轉(zhuǎn)換發(fā)生。類型自動轉(zhuǎn)換規(guī)則規(guī)定類型低(簡單)的向類型高(復(fù)雜)的轉(zhuǎn)換。各類型由高到低的排列順序是:long double、float、unsigned long、long、unsigned int、int這樣,若有定義: char a; int b;float c;double d;則表達式a*b+d-c的值的類型是double的。首先計算 a*b,得到int類型的值,接著計算a*b+d,得到double類型的值,最后計算a*b+d-c,得到double類型的值。所以解答是D。
    【參考答案】D
    25.表達式“9!=7”的值是( )
    A.true
    B.非0值
    C.0
    D.1
    【解析】關(guān)系運算的結(jié)果只有0和1,若關(guān)系成立,則結(jié)果為1;若關(guān)系不成立,則結(jié)果為0。因關(guān)系式9!=7成立,所以表達式的結(jié)果為1。雖然1也是非0值,在供選擇的答案中有1,所以最確切的解答是D。
    【參考答案】D
    26.用十進制數(shù)表示表達式“12|012”的運算結(jié)果是( )
    A.1
    B.0
    C. 14
    D. 16
    【解析】按位運算將運算分量視作二進位的位申信息,對兩運算分量的對應(yīng)位進行運算,產(chǎn)生H進位的位串信息結(jié)果。整數(shù)12最低8位二進位是00001100,整數(shù)012是八進制數(shù),它的最低8位二進位是00001010。這兩個二進位位串信息按位或運算,得到結(jié)果是00001110,對應(yīng)十進制數(shù)14,八進制數(shù)是016。所以解答是C。
    【參考答案】C
    27.設(shè)字符型變量 a=3,b=6,計算表達式 C=(a^b)<< 2后C的二進制值是( )
    A. 00011100
    B.00000111
    C. 00000001
    D. 00010100
    【解析】a的值為3,寫成8位二進制數(shù)形式是00000011,b的值為6,寫成8位二進制數(shù)形式是00000110。表達式c=(a^b)<<2,先計算a與b的按位加,得到結(jié)果00000101,將這結(jié)果向左移2位,得到二進位的位串信息是00010100。所以解答是D。
    【參考答案】D
    28.設(shè) a,b和 c都是int型變量,且a=3,b=4,c=5,則下面的表達式中值為 0的是( )
    A.’a’&&b’
    B.a<=b
    C.a||b+c&&b-c
    D. !((a<b)&&!c||1)
    【解析】對于表達式’a’&&’b,兩個非O運算分量的邏輯與結(jié)果為1。對于表達式a<=b,由于關(guān)系式成立,結(jié)果也為此又由于變量 a為非 0,表達式a||b+c&&b-c的結(jié)果也為1。對于表達式!((a<b)&&!c||1),先是計算(a<b)得到結(jié)果1;計算!C得到結(jié)果為0;再計算它們的邏輯與,結(jié)果為0。繼續(xù)與1求邏輯或,得到結(jié)果為1。最后,對1求邏輯非,得到結(jié)果為0。所以解答是A。
    【參考答案】A
    29.設(shè)Ch是Char型變量,其值為’A’,則下面表達式的值是( )
    ch=(ch>=’A’&&ch<=’Z’)?(ch+32):ch
    A.’A’
    B.’a’
    C.’Z’
    D.’z’
    【解析】由于字符型變量ch的值為’ A’,計算表達式ch=h>=’ A’&&ch<=’ Z’)?(ch+32):ch,先計算其中條件表達式,由于條件(ch>=’A&&h<=’Z’)成立,該條件表達式以 ch+32=97為結(jié)果,將該值賦給變量 ch,以字符表達這個值為’a’。所以解答是B。
    【參考答案】B
    30. 設(shè)有無符號短整型變量i、j、k,i值為013,j值為 OX13。計算表達式“k=~i|j>> 3”后,k的值是( )
    A. 06
    B. 0177776
    C. 066
    D. 0177766
    【解析】將變量 i的八進制數(shù)值 013寫成二進制形式為00001011,將變量j的十六進制值 oxl3寫成二進制數(shù)形式為00010011。表達式k=~i|j>>3的計算過程是先求~i,結(jié)果用八進制代碼表示為0177764;接著計算j>>3,結(jié)果為02。對它們進行按位或運算結(jié)果為0177766。所以解答是D。
    【參考答案】D