1.若已定義 x和 y為double類型,則表達(dá)式: x=l, y=x+3/2結(jié)果是( )
A.l
B.2
C.2.0
D.2.5
【解析】由于變量x和y都是double類型,表達(dá)式 x=l, y=x+3/2是先計(jì)算 x=1,由于 1是整型的,x是double類型的,該計(jì)算先將整數(shù)1轉(zhuǎn)換成double類型的1.0,并將1.0賦給變量x。計(jì)算 y=X+3/2是先求 3/2的值,因是兩整數(shù)相除,結(jié)果是整型值 1,然后在計(jì)算 X+1時,也先將 1轉(zhuǎn)換成 1.0,然后求得 X+l的值為2.0,最后將該值賦給變量 y,并得到整個表達(dá)式的值為2.0.所以解答是C。
【參考答案】C
2.設(shè)a為整型變量,下列C表達(dá)式中,不能表達(dá)數(shù)學(xué)關(guān)系式:
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
3.下列表達(dá)式中,正確的C賦值表達(dá)式是( )
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
【解析】賦值運(yùn)算符是運(yùn)算符之一,賦值運(yùn)算也可以出現(xiàn)在一般表達(dá)式中。賦值運(yùn)算時,出現(xiàn)在賦值運(yùn)算符左邊的表達(dá)式應(yīng)該是引用一個存儲對象,例如變量。不可以是一個數(shù)值計(jì)算表達(dá)式。如表達(dá)式a=7+b+c=a+7因算術(shù)運(yùn)算符比賦值運(yùn)算符的優(yōu)先級高,要把a(bǔ)+7的結(jié)果賦給7+b+c,這是錯誤的。同樣理由,表達(dá)式a= 7+b++=a+7也是錯誤的。而表達(dá)式a=(7+b,b++,a+7)就是正確的賦值表達(dá)式,它是先計(jì)算賦值號左邊的括號內(nèi)的表達(dá)式,括號表達(dá)式內(nèi)是一個逗號表達(dá)式,遠(yuǎn)號表達(dá)式要求順序逐一計(jì)算各子表達(dá)式,并以最后一個子表達(dá)式的值作為遠(yuǎn)號表達(dá)式的結(jié)果,最后將該結(jié)果賦給變量a。而表達(dá)式a=7+b,c=a+7則不是一個賦值表達(dá)式,而是一個逗號表達(dá)式,它由兩個賦值子表達(dá)式組成。所以解答是C。
【參考答案】C
4.若有以下定義: char a;int b;float c; double d;則表達(dá)式a*b+d-c值的類型為( )
A.float
B. int
C. char
D. double
【解析】基本類型的數(shù)據(jù)可以混合運(yùn)算,但運(yùn)算時,對要求運(yùn)算分量類型相同的運(yùn)算來說,如運(yùn)算分量的類型不是全相同,則會有自動類型轉(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;則表達(dá)式a*b+d-c的值的類型是double的。首先計(jì)算 a*b,得到int類型的值,接著計(jì)算a*b+d,得到double類型的值,最后計(jì)算a*b+d-c,得到double類型的值。所以解答是D。
【參考答案】D
5.表達(dá)式“9!=7”的值是( )
A.true
B.非0值
C.0
D.1
【解析】關(guān)系運(yùn)算的結(jié)果只有0和1,若關(guān)系成立,則結(jié)果為1;若關(guān)系不成立,則結(jié)果為0。因關(guān)系式9!=7成立,所以表達(dá)式的結(jié)果為1。雖然1也是非0值,在供選擇的答案中有1,所以最確切的解答是D。
【參考答案】D
6.用十進(jìn)制數(shù)表示表達(dá)式“12|012”的運(yùn)算結(jié)果是( )
A.1
B.0
C. 14
D. 16
【解析】按位運(yùn)算將運(yùn)算分量視作二進(jìn)位的位申信息,對兩運(yùn)算分量的對應(yīng)位進(jìn)行運(yùn)算,產(chǎn)生H進(jìn)位的位串信息結(jié)果。整數(shù)12最低8位二進(jìn)位是00001100,整數(shù)012是八進(jìn)制數(shù),它的最低8位二進(jìn)位是00001010。這兩個二進(jìn)位位串信息按位或運(yùn)算,得到結(jié)果是00001110,對應(yīng)十進(jìn)制數(shù)14,八進(jìn)制數(shù)是016。所以解答是C。
【參考答案】C
7.設(shè)字符型變量 a=3,b=6,計(jì)算表達(dá)式 C=(a^b)<< 2后C的二進(jìn)制值是( )
A. 00011100
B.00000111
C. 00000001
D. 00010100
【解析】a的值為3,寫成8位二進(jìn)制數(shù)形式是00000011,b的值為6,寫成8位二進(jìn)制數(shù)形式是00000110。表達(dá)式c=(a^b)<<2,先計(jì)算a與b的按位加,得到結(jié)果00000101,將這結(jié)果向左移2位,得到二進(jìn)位的位串信息是00010100。所以解答是D。
【參考答案】D
8.設(shè) a,b和 c都是int型變量,且a=3,b=4,c=5,則下面的表達(dá)式中值為 0的是( )
A.’a’&&b’
B.a<=b
C.a||b+c&&b-c
D. !((a< p>
【解析】對于表達(dá)式’a’&&’b,兩個非O運(yùn)算分量的邏輯與結(jié)果為1。對于表達(dá)式a<=b,由于關(guān)系式成立,結(jié)果也為此又由于變量 a為非 0,表達(dá)式a||b+c&&b-c的結(jié)果也為1。對于表達(dá)式!((a< p>
【參考答案】A
9.設(shè)Ch是Char型變量,其值為’A’,則下面表達(dá)式的值是( )
ch=(ch>=’A’&&ch<=’Z’)?(ch+32):ch
A.’A’
B.’a’
C.’Z’
D.’z’
【解析】由于字符型變量ch的值為’ A’,計(jì)算表達(dá)式ch=h>=’ A’&&ch<=’ Z’)?(ch+32):ch,先計(jì)算其中條件表達(dá)式,由于條件(ch>=’A&&h<=’Z’)成立,該條件表達(dá)式以 ch+32=97為結(jié)果,將該值賦給變量 ch,以字符表達(dá)這個值為’a’。所以解答是B。
【參考答案】B
10. 設(shè)有無符號短整型變量i、j、k,i值為013,j值為 OX13。計(jì)算表達(dá)式“k=~i|j>> 3”后,k的值是( )
A. 06
B. 0177776
C. 066
D. 0177766
【解析】將變量 i的八進(jìn)制數(shù)值 013寫成二進(jìn)制形式為00001011,將變量j的十六進(jìn)制值 oxl3寫成二進(jìn)制數(shù)形式為00010011。表達(dá)式k=~i|j>>3的計(jì)算過程是先求~i,結(jié)果用八進(jìn)制代碼表示為0177764;接著計(jì)算j>>3,結(jié)果為02。對它們進(jìn)行按位或運(yùn)算結(jié)果為0177766。所以解答是D。
【參考答案】D
11.設(shè) a=3,b=4執(zhí)廳‘printf(”%d,%d’,(a,b)(b,a));”的輸出是( )
A.3,4
B.4,3
C.3, 3
D.4,4
【解析】在調(diào)用格式輸出函數(shù)的語句中,其中每個格式符對應(yīng)一個輸出項(xiàng),格式符d要求輸出項(xiàng)內(nèi)容以十進(jìn)制整數(shù)形式輸出。第一個輸出項(xiàng)(a,b)是一個逗號表達(dá)式,該表達(dá)式的值是b的值,輸出4。接著輸出字符逗號。第二個輸出項(xiàng)(b,a)的值是a的值,輸出3。所以語句執(zhí)行將輸出4,3。
【參考答案】C
12.使用“Scanf("X=%f,y=%f",&x,&y)”,要使 X,y均為1.25,正確的輸入是( )
A.1.25,1.25
B.1.25 1.25
C.x=1.25,y=1.25
D.X=1.25 y=1.25
【解析】格式輸入函數(shù)的格式字符串中的字符可以分成三類:空格類字符、其它普通字符和格式轉(zhuǎn)換說明。其中空格類字符用來跳過一個空格類字符序列,直至下一個非空格類字符。普通字符要求輸入字符與其完全相同。格式轉(zhuǎn)換說明對輸入字符列按格式轉(zhuǎn)換說明進(jìn)行轉(zhuǎn)換,得到內(nèi)部值存儲到對應(yīng)輸入項(xiàng)所指定的存儲位置中。函數(shù)調(diào)用scanf(“x=%f,y=%f,&x,&y)以普通字符X=開頭,輸入時也要先輸入X=。接著是一個浮點(diǎn)數(shù)輸入格式,所有能構(gòu)成一個浮點(diǎn)數(shù)1.25的字符序列都能滿足要求。接著是普通字符列“,y=”,在輸入的浮點(diǎn)數(shù)之后也要有字符列“,y=”。最后又是浮點(diǎn)數(shù)輸入格式,同樣所有能構(gòu)成一個浮點(diǎn)數(shù)1.25的字符序列都能滿足要求。問題給出的供選擇答案中只有x=1.25,y=1.25是能滿足上述要求的。所以正確選擇是C。
【參考答案】C
13.設(shè)有int i=010,j=10;則執(zhí)行“printf("%d,%d\n",++i,j--);”的輸出是( )
A.ll, 10
B. 9,10
C. 010,9
D. 10, 9
【解析】變量i和j的初值分別為八進(jìn)制數(shù)010和十進(jìn)制數(shù) 10,函數(shù)調(diào)用Printf(“%d,%d\n”,++i,j--)中,++i的值是變量 i增1后的值,原來值是八進(jìn)制數(shù) 010,等于十進(jìn)制數(shù)8,輸出9。j--的值是變量j減1之前的值,輸出10。格式字符申中的逗號是普通字符照原樣輸出。所以問題給出的格式輸出函數(shù)調(diào)用將輸出9,10。正確的解答是B。
【參考答案】B
14.設(shè)a,b為字符型變量,執(zhí)行"scanf("a=%c,b=%c",&a,&b)"后使a為'A',b為'B',從鍵盤上的正確輸入是( )
A.’A”B’
B.’A’,’B’
C.A=A,B=B
D.a=A b=B
【解析】函數(shù)調(diào)用scanf("c=%c,b=%c",&c,&b)中,普通字符必須按格式字符串要求照原樣輸入,c格式對緊接的任何字符都輸入。所以實(shí)現(xiàn)問題的要求,輸入字符列應(yīng)為“a=A,b=B”。另外要特別指出,在程序中,為表示字符常量,字符前后需加單引號。但用字符格式輸入字符時,在要輸入字符前后不必另鍵人單引號。若鍵人單引號,則這個單引號也將作為字符被輸入。正確的解答是D。
【參考答案】D
15.設(shè)X、y、Z、t均為int型變量,則執(zhí)行以下語句后,t的值為( )
x=y=z=1;t=++x||++y&&++z;
A.不定值
B.2
C.l
D.0
【解析】語句序列“x=y=z=l;t=++x||++y&&++z;”使變量x的值為1,變量t是賦一個邏輯表達(dá)式的值。在C語言中,由邏輯與和邏輯或構(gòu)成的邏輯表達(dá)式有特別的計(jì)算規(guī)則,順序計(jì)算各邏輯子表達(dá)式,并當(dāng)一旦能得到邏輯表達(dá)式的結(jié)果時,就立即結(jié)束邏輯表達(dá)式的計(jì)算,不再計(jì)算后繼邏輯子表達(dá)式。本題的邏輯表達(dá)式是兩個運(yùn)算分量的邏輯或,而且左運(yùn)算分量++X的值為非0,立即得到邏輯或運(yùn)算的結(jié)果為1,并將1賦給變量t,所以變量t的值為1。正確解答為C。
【參考答案】C
16. 設(shè)x、y、z均為int型變量,則執(zhí)行以下語句后,x、y, z的值為( )
X=1; y=0; Z=2; y++&&++Z ||++ X;
A.2、l、3
B.2、0、3
C.2、l、3
D.2、1、2
【解析】語句序列“x=l;y=0;z=2; y++&&++z||++x;”先使變量x的值為 1,變量y的值為0,變量Z的值為2。由邏輯與和邏輯或構(gòu)成的邏輯表達(dá)式的特別計(jì)算規(guī)則,順序計(jì)算各邏輯子表達(dá)式,并當(dāng)一旦能得到邏輯子表達(dá)式的結(jié)果時,就立即結(jié)束邏輯子表達(dá)式的計(jì)算,不再計(jì)算該邏輯子表達(dá)式。計(jì)算y++因y的值為0,使y++&&++z的結(jié)果為0,立即去計(jì)算++X,這次計(jì)算使變量y的值變成1,而變量Z的值本改變。接著計(jì)算++X,使X的值變?yōu)?。所以經(jīng)上述語句執(zhí)行后,X、y、Z的值依次為2、1、Z。 確解答為D。
【參考答案】D
17.假定所有變量均已正確定義,下列程序段運(yùn)行后X的值是( )
a=b=c=0; x=35;
if(!a)x--; else if(b);if(c)x=3;else x=4;
A.34
B. 4
C. 35
D. 3
【解析】以變量 a,b,c的值均為 0,變量x的值為 35,語句:
if(!a)x--;else if(b);if(c)x=3;else x=4;
由兩個證語句組成。首先執(zhí)行前一個if語句“if(!a)x--;else if(b);”,因變量a的值為0,條件!a成立,執(zhí)行x--使x的值變?yōu)?4。接著執(zhí)行后繼的if語句“if(c)x=3; else X=4;”,因變量c的值為0,條件不成立而執(zhí)行X=4,最終使變量X的值為4。正確解答是B。
注意前一個if語句的else部分的成分語句只有“if(b);”,這是一個單分支if語句,且其成分語句為空語句。
【參考答案】B
18.下面的程序段所表示的數(shù)學(xué)函數(shù)關(guān)系是( )
y=-l;
if( x!= 0)if(x>0)y=l; else y=0 ;
1(x<0) 1(x<0)
A. y= { 0(x= 0)
B. y={-l(X=0)
1(X>0) 0(X>0)
o(X< 0) -l(X< 0)
C. y= {-1(x= 0)
D. y={ 1(X= 0)
1(X> 0) 0(X> 0)
【解析】程序段首先置變量y的值為一l,接著按變量x值的不同情況重置變量y的值。重置的首要條件是x!=0,若變量x的值為0,則不再重置變量y的值,所以在X值為0情況下,y的值是-l。在變量X的值不等于0的條件下,若X的值大于0,重置變量y的值為1;若變量X的值小于0,重置變量y的值為0。所以程序段實(shí)現(xiàn)當(dāng)變量x的值為0時,變量y的值為-1;當(dāng)變量X的值大于0時,置變量y的值為1;當(dāng)變量X的值小于0時,置變量y的值為0。正確解答為C。
【參考答案】C
19.下列語句中,句法錯誤的是(不考慮語義)( )
A. while(x=y)5 ;
B. do x++ while(x==10) ;
C.while(0);
D.do 2;while(a==b);
【解析】 while語句的一般形式是:
while(表達(dá)式) 語句
這里的表達(dá)式可以是任何合理的表達(dá)式,語句可以是任何語句,包括空語句,或表達(dá)式語句??赡軙鴮懙膚hile語句沒有任何意義,如供選擇的A.while(x=y)5;和C.while(0);,但這兩個語句的句法沒有任何錯誤。do-While語句的一般形式是:
do語句while(表達(dá)式);
其中的成分語句也可以是任何語句,但供選擇答案B.do x++while(x==10) ;中的代碼x++是一個表達(dá)式,不是語句,所以是錯誤的。正確解答是B。
【參考答案】B
20.若i、j已定義為int類型,則以下程序段中的內(nèi)循環(huán)體的執(zhí)行次數(shù)是( )
for( i=5; i; i--)
for(j= 0; j<4;j++){……}
A.20
B. 24
C. 25
D. 30
【解析】問題所給的程序段的外循環(huán)是一個階循環(huán)語句,它的初始化部分置變量i的初值為5,循環(huán)條件簡寫成i,即i!=0,每次循環(huán)后變量i的值減1。所以外循環(huán)共控制5次循環(huán)。內(nèi)循環(huán)也是一個for循環(huán)語句,它的初始化部分置變量j的初值為0,循環(huán)條件是j<4,每次循環(huán)后變量j的值增1。所以內(nèi)循環(huán)共控制4次循環(huán)。這樣,如內(nèi)循環(huán)的體內(nèi)未曾對變量i和j有修改,在內(nèi)、外循環(huán)一起控制下,內(nèi)循環(huán)的體共被重復(fù)執(zhí)行20次。正確解答是A。
【參考答案】A
A.l
B.2
C.2.0
D.2.5
【解析】由于變量x和y都是double類型,表達(dá)式 x=l, y=x+3/2是先計(jì)算 x=1,由于 1是整型的,x是double類型的,該計(jì)算先將整數(shù)1轉(zhuǎn)換成double類型的1.0,并將1.0賦給變量x。計(jì)算 y=X+3/2是先求 3/2的值,因是兩整數(shù)相除,結(jié)果是整型值 1,然后在計(jì)算 X+1時,也先將 1轉(zhuǎn)換成 1.0,然后求得 X+l的值為2.0,最后將該值賦給變量 y,并得到整個表達(dá)式的值為2.0.所以解答是C。
【參考答案】C
2.設(shè)a為整型變量,下列C表達(dá)式中,不能表達(dá)數(shù)學(xué)關(guān)系式:
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
3.下列表達(dá)式中,正確的C賦值表達(dá)式是( )
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
【解析】賦值運(yùn)算符是運(yùn)算符之一,賦值運(yùn)算也可以出現(xiàn)在一般表達(dá)式中。賦值運(yùn)算時,出現(xiàn)在賦值運(yùn)算符左邊的表達(dá)式應(yīng)該是引用一個存儲對象,例如變量。不可以是一個數(shù)值計(jì)算表達(dá)式。如表達(dá)式a=7+b+c=a+7因算術(shù)運(yùn)算符比賦值運(yùn)算符的優(yōu)先級高,要把a(bǔ)+7的結(jié)果賦給7+b+c,這是錯誤的。同樣理由,表達(dá)式a= 7+b++=a+7也是錯誤的。而表達(dá)式a=(7+b,b++,a+7)就是正確的賦值表達(dá)式,它是先計(jì)算賦值號左邊的括號內(nèi)的表達(dá)式,括號表達(dá)式內(nèi)是一個逗號表達(dá)式,遠(yuǎn)號表達(dá)式要求順序逐一計(jì)算各子表達(dá)式,并以最后一個子表達(dá)式的值作為遠(yuǎn)號表達(dá)式的結(jié)果,最后將該結(jié)果賦給變量a。而表達(dá)式a=7+b,c=a+7則不是一個賦值表達(dá)式,而是一個逗號表達(dá)式,它由兩個賦值子表達(dá)式組成。所以解答是C。
【參考答案】C
4.若有以下定義: char a;int b;float c; double d;則表達(dá)式a*b+d-c值的類型為( )
A.float
B. int
C. char
D. double
【解析】基本類型的數(shù)據(jù)可以混合運(yùn)算,但運(yùn)算時,對要求運(yùn)算分量類型相同的運(yùn)算來說,如運(yùn)算分量的類型不是全相同,則會有自動類型轉(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;則表達(dá)式a*b+d-c的值的類型是double的。首先計(jì)算 a*b,得到int類型的值,接著計(jì)算a*b+d,得到double類型的值,最后計(jì)算a*b+d-c,得到double類型的值。所以解答是D。
【參考答案】D
5.表達(dá)式“9!=7”的值是( )
A.true
B.非0值
C.0
D.1
【解析】關(guān)系運(yùn)算的結(jié)果只有0和1,若關(guān)系成立,則結(jié)果為1;若關(guān)系不成立,則結(jié)果為0。因關(guān)系式9!=7成立,所以表達(dá)式的結(jié)果為1。雖然1也是非0值,在供選擇的答案中有1,所以最確切的解答是D。
【參考答案】D
6.用十進(jìn)制數(shù)表示表達(dá)式“12|012”的運(yùn)算結(jié)果是( )
A.1
B.0
C. 14
D. 16
【解析】按位運(yùn)算將運(yùn)算分量視作二進(jìn)位的位申信息,對兩運(yùn)算分量的對應(yīng)位進(jìn)行運(yùn)算,產(chǎn)生H進(jìn)位的位串信息結(jié)果。整數(shù)12最低8位二進(jìn)位是00001100,整數(shù)012是八進(jìn)制數(shù),它的最低8位二進(jìn)位是00001010。這兩個二進(jìn)位位串信息按位或運(yùn)算,得到結(jié)果是00001110,對應(yīng)十進(jìn)制數(shù)14,八進(jìn)制數(shù)是016。所以解答是C。
【參考答案】C
7.設(shè)字符型變量 a=3,b=6,計(jì)算表達(dá)式 C=(a^b)<< 2后C的二進(jìn)制值是( )
A. 00011100
B.00000111
C. 00000001
D. 00010100
【解析】a的值為3,寫成8位二進(jìn)制數(shù)形式是00000011,b的值為6,寫成8位二進(jìn)制數(shù)形式是00000110。表達(dá)式c=(a^b)<<2,先計(jì)算a與b的按位加,得到結(jié)果00000101,將這結(jié)果向左移2位,得到二進(jìn)位的位串信息是00010100。所以解答是D。
【參考答案】D
8.設(shè) a,b和 c都是int型變量,且a=3,b=4,c=5,則下面的表達(dá)式中值為 0的是( )
A.’a’&&b’
B.a<=b
C.a||b+c&&b-c
D. !((a< p>
【解析】對于表達(dá)式’a’&&’b,兩個非O運(yùn)算分量的邏輯與結(jié)果為1。對于表達(dá)式a<=b,由于關(guān)系式成立,結(jié)果也為此又由于變量 a為非 0,表達(dá)式a||b+c&&b-c的結(jié)果也為1。對于表達(dá)式!((a< p>
【參考答案】A
9.設(shè)Ch是Char型變量,其值為’A’,則下面表達(dá)式的值是( )
ch=(ch>=’A’&&ch<=’Z’)?(ch+32):ch
A.’A’
B.’a’
C.’Z’
D.’z’
【解析】由于字符型變量ch的值為’ A’,計(jì)算表達(dá)式ch=h>=’ A’&&ch<=’ Z’)?(ch+32):ch,先計(jì)算其中條件表達(dá)式,由于條件(ch>=’A&&h<=’Z’)成立,該條件表達(dá)式以 ch+32=97為結(jié)果,將該值賦給變量 ch,以字符表達(dá)這個值為’a’。所以解答是B。
【參考答案】B
10. 設(shè)有無符號短整型變量i、j、k,i值為013,j值為 OX13。計(jì)算表達(dá)式“k=~i|j>> 3”后,k的值是( )
A. 06
B. 0177776
C. 066
D. 0177766
【解析】將變量 i的八進(jìn)制數(shù)值 013寫成二進(jìn)制形式為00001011,將變量j的十六進(jìn)制值 oxl3寫成二進(jìn)制數(shù)形式為00010011。表達(dá)式k=~i|j>>3的計(jì)算過程是先求~i,結(jié)果用八進(jìn)制代碼表示為0177764;接著計(jì)算j>>3,結(jié)果為02。對它們進(jìn)行按位或運(yùn)算結(jié)果為0177766。所以解答是D。
【參考答案】D
11.設(shè) a=3,b=4執(zhí)廳‘printf(”%d,%d’,(a,b)(b,a));”的輸出是( )
A.3,4
B.4,3
C.3, 3
D.4,4
【解析】在調(diào)用格式輸出函數(shù)的語句中,其中每個格式符對應(yīng)一個輸出項(xiàng),格式符d要求輸出項(xiàng)內(nèi)容以十進(jìn)制整數(shù)形式輸出。第一個輸出項(xiàng)(a,b)是一個逗號表達(dá)式,該表達(dá)式的值是b的值,輸出4。接著輸出字符逗號。第二個輸出項(xiàng)(b,a)的值是a的值,輸出3。所以語句執(zhí)行將輸出4,3。
【參考答案】C
12.使用“Scanf("X=%f,y=%f",&x,&y)”,要使 X,y均為1.25,正確的輸入是( )
A.1.25,1.25
B.1.25 1.25
C.x=1.25,y=1.25
D.X=1.25 y=1.25
【解析】格式輸入函數(shù)的格式字符串中的字符可以分成三類:空格類字符、其它普通字符和格式轉(zhuǎn)換說明。其中空格類字符用來跳過一個空格類字符序列,直至下一個非空格類字符。普通字符要求輸入字符與其完全相同。格式轉(zhuǎn)換說明對輸入字符列按格式轉(zhuǎn)換說明進(jìn)行轉(zhuǎn)換,得到內(nèi)部值存儲到對應(yīng)輸入項(xiàng)所指定的存儲位置中。函數(shù)調(diào)用scanf(“x=%f,y=%f,&x,&y)以普通字符X=開頭,輸入時也要先輸入X=。接著是一個浮點(diǎn)數(shù)輸入格式,所有能構(gòu)成一個浮點(diǎn)數(shù)1.25的字符序列都能滿足要求。接著是普通字符列“,y=”,在輸入的浮點(diǎn)數(shù)之后也要有字符列“,y=”。最后又是浮點(diǎn)數(shù)輸入格式,同樣所有能構(gòu)成一個浮點(diǎn)數(shù)1.25的字符序列都能滿足要求。問題給出的供選擇答案中只有x=1.25,y=1.25是能滿足上述要求的。所以正確選擇是C。
【參考答案】C
13.設(shè)有int i=010,j=10;則執(zhí)行“printf("%d,%d\n",++i,j--);”的輸出是( )
A.ll, 10
B. 9,10
C. 010,9
D. 10, 9
【解析】變量i和j的初值分別為八進(jìn)制數(shù)010和十進(jìn)制數(shù) 10,函數(shù)調(diào)用Printf(“%d,%d\n”,++i,j--)中,++i的值是變量 i增1后的值,原來值是八進(jìn)制數(shù) 010,等于十進(jìn)制數(shù)8,輸出9。j--的值是變量j減1之前的值,輸出10。格式字符申中的逗號是普通字符照原樣輸出。所以問題給出的格式輸出函數(shù)調(diào)用將輸出9,10。正確的解答是B。
【參考答案】B
14.設(shè)a,b為字符型變量,執(zhí)行"scanf("a=%c,b=%c",&a,&b)"后使a為'A',b為'B',從鍵盤上的正確輸入是( )
A.’A”B’
B.’A’,’B’
C.A=A,B=B
D.a=A b=B
【解析】函數(shù)調(diào)用scanf("c=%c,b=%c",&c,&b)中,普通字符必須按格式字符串要求照原樣輸入,c格式對緊接的任何字符都輸入。所以實(shí)現(xiàn)問題的要求,輸入字符列應(yīng)為“a=A,b=B”。另外要特別指出,在程序中,為表示字符常量,字符前后需加單引號。但用字符格式輸入字符時,在要輸入字符前后不必另鍵人單引號。若鍵人單引號,則這個單引號也將作為字符被輸入。正確的解答是D。
【參考答案】D
15.設(shè)X、y、Z、t均為int型變量,則執(zhí)行以下語句后,t的值為( )
x=y=z=1;t=++x||++y&&++z;
A.不定值
B.2
C.l
D.0
【解析】語句序列“x=y=z=l;t=++x||++y&&++z;”使變量x的值為1,變量t是賦一個邏輯表達(dá)式的值。在C語言中,由邏輯與和邏輯或構(gòu)成的邏輯表達(dá)式有特別的計(jì)算規(guī)則,順序計(jì)算各邏輯子表達(dá)式,并當(dāng)一旦能得到邏輯表達(dá)式的結(jié)果時,就立即結(jié)束邏輯表達(dá)式的計(jì)算,不再計(jì)算后繼邏輯子表達(dá)式。本題的邏輯表達(dá)式是兩個運(yùn)算分量的邏輯或,而且左運(yùn)算分量++X的值為非0,立即得到邏輯或運(yùn)算的結(jié)果為1,并將1賦給變量t,所以變量t的值為1。正確解答為C。
【參考答案】C
16. 設(shè)x、y、z均為int型變量,則執(zhí)行以下語句后,x、y, z的值為( )
X=1; y=0; Z=2; y++&&++Z ||++ X;
A.2、l、3
B.2、0、3
C.2、l、3
D.2、1、2
【解析】語句序列“x=l;y=0;z=2; y++&&++z||++x;”先使變量x的值為 1,變量y的值為0,變量Z的值為2。由邏輯與和邏輯或構(gòu)成的邏輯表達(dá)式的特別計(jì)算規(guī)則,順序計(jì)算各邏輯子表達(dá)式,并當(dāng)一旦能得到邏輯子表達(dá)式的結(jié)果時,就立即結(jié)束邏輯子表達(dá)式的計(jì)算,不再計(jì)算該邏輯子表達(dá)式。計(jì)算y++因y的值為0,使y++&&++z的結(jié)果為0,立即去計(jì)算++X,這次計(jì)算使變量y的值變成1,而變量Z的值本改變。接著計(jì)算++X,使X的值變?yōu)?。所以經(jīng)上述語句執(zhí)行后,X、y、Z的值依次為2、1、Z。 確解答為D。
【參考答案】D
17.假定所有變量均已正確定義,下列程序段運(yùn)行后X的值是( )
a=b=c=0; x=35;
if(!a)x--; else if(b);if(c)x=3;else x=4;
A.34
B. 4
C. 35
D. 3
【解析】以變量 a,b,c的值均為 0,變量x的值為 35,語句:
if(!a)x--;else if(b);if(c)x=3;else x=4;
由兩個證語句組成。首先執(zhí)行前一個if語句“if(!a)x--;else if(b);”,因變量a的值為0,條件!a成立,執(zhí)行x--使x的值變?yōu)?4。接著執(zhí)行后繼的if語句“if(c)x=3; else X=4;”,因變量c的值為0,條件不成立而執(zhí)行X=4,最終使變量X的值為4。正確解答是B。
注意前一個if語句的else部分的成分語句只有“if(b);”,這是一個單分支if語句,且其成分語句為空語句。
【參考答案】B
18.下面的程序段所表示的數(shù)學(xué)函數(shù)關(guān)系是( )
y=-l;
if( x!= 0)if(x>0)y=l; else y=0 ;
1(x<0) 1(x<0)
A. y= { 0(x= 0)
B. y={-l(X=0)
1(X>0) 0(X>0)
o(X< 0) -l(X< 0)
C. y= {-1(x= 0)
D. y={ 1(X= 0)
1(X> 0) 0(X> 0)
【解析】程序段首先置變量y的值為一l,接著按變量x值的不同情況重置變量y的值。重置的首要條件是x!=0,若變量x的值為0,則不再重置變量y的值,所以在X值為0情況下,y的值是-l。在變量X的值不等于0的條件下,若X的值大于0,重置變量y的值為1;若變量X的值小于0,重置變量y的值為0。所以程序段實(shí)現(xiàn)當(dāng)變量x的值為0時,變量y的值為-1;當(dāng)變量X的值大于0時,置變量y的值為1;當(dāng)變量X的值小于0時,置變量y的值為0。正確解答為C。
【參考答案】C
19.下列語句中,句法錯誤的是(不考慮語義)( )
A. while(x=y)5 ;
B. do x++ while(x==10) ;
C.while(0);
D.do 2;while(a==b);
【解析】 while語句的一般形式是:
while(表達(dá)式) 語句
這里的表達(dá)式可以是任何合理的表達(dá)式,語句可以是任何語句,包括空語句,或表達(dá)式語句??赡軙鴮懙膚hile語句沒有任何意義,如供選擇的A.while(x=y)5;和C.while(0);,但這兩個語句的句法沒有任何錯誤。do-While語句的一般形式是:
do語句while(表達(dá)式);
其中的成分語句也可以是任何語句,但供選擇答案B.do x++while(x==10) ;中的代碼x++是一個表達(dá)式,不是語句,所以是錯誤的。正確解答是B。
【參考答案】B
20.若i、j已定義為int類型,則以下程序段中的內(nèi)循環(huán)體的執(zhí)行次數(shù)是( )
for( i=5; i; i--)
for(j= 0; j<4;j++){……}
A.20
B. 24
C. 25
D. 30
【解析】問題所給的程序段的外循環(huán)是一個階循環(huán)語句,它的初始化部分置變量i的初值為5,循環(huán)條件簡寫成i,即i!=0,每次循環(huán)后變量i的值減1。所以外循環(huán)共控制5次循環(huán)。內(nèi)循環(huán)也是一個for循環(huán)語句,它的初始化部分置變量j的初值為0,循環(huán)條件是j<4,每次循環(huán)后變量j的值增1。所以內(nèi)循環(huán)共控制4次循環(huán)。這樣,如內(nèi)循環(huán)的體內(nèi)未曾對變量i和j有修改,在內(nèi)、外循環(huán)一起控制下,內(nèi)循環(huán)的體共被重復(fù)執(zhí)行20次。正確解答是A。
【參考答案】A