2023年二級C語言筆試習(xí)題集答案及解析_第1頁
2023年二級C語言筆試習(xí)題集答案及解析_第2頁
2023年二級C語言筆試習(xí)題集答案及解析_第3頁
2023年二級C語言筆試習(xí)題集答案及解析_第4頁
2023年二級C語言筆試習(xí)題集答案及解析_第5頁
已閱讀5頁,還剩54頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

C語言基礎(chǔ)知識

一,選擇題

1答案是A

A對的

B{}可以作為復(fù)合語句的標志

Cmain函數(shù)不是用戶命名的

D分號是語句結(jié)束的標志,肯定是語句的一部分

做這個題目需要對書上的概念透徹的理解

2答案是A

A錯誤用戶標記符:命名時,標記符的選擇由用戶自定,但是不能與關(guān)鍵字相同,所以A選項錯

誤。這個題目考察用戶標記符

3答案是B

用戶標記符是標記符,所以可以是有下劃線,但是中劃線不屬于字母,

數(shù)字,下劃線其中一種。這個題目考察用戶標記符的概念。

4答案是B

define是預(yù)定義標記符,而預(yù)定義標記符可以是用戶標記符,所以

define可以是用戶標記,if是關(guān)鍵字,而關(guān)鍵字不能是用戶標記符,

所以if不可以是用戶標記符

5答案是D

long是關(guān)鍵字,參照附錄二

注:6--13考察用戶標記符概念

6答案是D

D答案以數(shù)字2開頭了,不符合標記符定義

7答案是C

C答案以數(shù)字開頭了

8答案是D

int是關(guān)鍵字

9答案是B

答案A是關(guān)鍵字,答案C是以數(shù)字開頭了,不符合概念,答案D出

現(xiàn)了小數(shù)點

10答案是A

答案A出現(xiàn)了小數(shù)點

11答案是C

答案C以數(shù)字開頭了

12答案是A

B答案中float是關(guān)鍵字,C答案中3c以數(shù)字3開頭了,D答案中.5d

中-不屬于字母,數(shù)字,下劃線中一種

13答案是A

B答案中-max中-錯誤,C答案中3COM以字母3開頭了,D答案中

int是關(guān)鍵字,不是用戶標記符

14答案是B

A答案中15.后面不應(yīng)當有點,C答案中出現(xiàn)了逗號,D中字母B有

問題

15答案是D

VisualC++6.0中int類型的變量占的字節(jié)數(shù)為4。

16答案是B

B中出現(xiàn)了8,而八進制只能有()到7組成

17答案是D

答案D中開頭是()不是。

18答案是C

答案A中E后面是整數(shù),0.5是小數(shù)

答案B中E后面不能為空

答案D中E前面不能為空

本題口考察指數(shù)的表達形式

19答案是C

答案A中2.()有問題,不能為小數(shù)形式

答案B中E前面不能為空

答案D中E后面不能為空

本題目考察指數(shù)的表達形式

20答案是A

B中八進制中不能出現(xiàn)數(shù)字8,C中e后面不能是小數(shù),D中e后面

不能為空

21答案是B

B中0.4是小數(shù),不對的

22答案是C

C中0.5是小數(shù),不對的

23答案是D

3.6-5Z2+1.2+5%2=3.6-2+1.2+1=3.8

本題目考察算術(shù)運算符,需要注意整數(shù)除以整數(shù)結(jié)果只能是整數(shù)

24答案是D

%不能用于實型的計算

25答案是D

D答案中$不屬于字母,數(shù)字,下劃線

26答案是A

A答案是逗號表達式,B答案中x+1=y是賦值表達式,左邊只能是變

量,而這里是x+1,同理答案C中x+10也是錯誤的,在D答案中,

考察的是強制類型轉(zhuǎn)換,

對的的是(double)x/10

27答案是A

本題考察的是注釋需要注意的地方,具體解答見課本第2頁中間部分

28答案是B

答案A中n2沒有定義,答案C中在定義f之前不能使用它,答案D

中E后面必須是整數(shù)

29答案是C

考察的是強制類型轉(zhuǎn)換,對的的是k%(int)f

30答案是D

本題目類似與第七課時的例一,解題方法是要抓住

表達式的值是變量變化之后的值,而n-表達式的值是變量n變化之

前的值

31答案是B

本題目考察的是負

整數(shù)與無符號正整數(shù)在計算機中存放的格式的同樣的,但表達的不

同的兩個數(shù)

32答案是C

A答案中%運算對象不能為實型,26.8錯誤,B答案中考察的賦值

運算符,賦值運算符左邊必須是變量,所以賦值運算符左邊1+2錯

誤,同理答案D錯誤

33答案是C

本題目考察的是課本第15頁的關(guān)于自加與自減運算符的第一點說

明,即增量運算符的運算對象只能是變量,而在C答案中++(i+l)

中,i+1是表達式

34答案是B

本題目考察的是整數(shù)除以整數(shù)結(jié)果是整數(shù),在B答案中1/2結(jié)果是0,導(dǎo)致整個表達式的值是0,

明顯是錯誤的

35答案是D

對于++、__單目運算符來說,其運算對象可以是char型、血型和float型變量

36答案是A

本題目重要考察n++表達式的值是n變化之前的值,然后使n的值增長1

37答案是B

c=a/b+0.4c=8/5+0.4c=1+0.4c=1.4由于c是int型的,所以c的值是1,做此題目需要仔細

閱讀題目

38答案是D

(int)a+b/b=(int)5.5+2.5/2.5=5+1.000000=b=6.000000

同樣a,b的類型是double型的

39答案是D

long和short不能互相修飾

40答案是C

標記符中不能有$

41答案是C

A選項中,在變量賦值時不能賦給表達式,而y*5是表達式;選項B中進行強制類型轉(zhuǎn)換時,類型標

記符要加上括號,所以錯誤;選項D^,%(求余運算符)運算對象只能是整形數(shù)。

42答案是A

選項A中,b變量還沒有定義

43答案是C

選項A中l(wèi)ong是關(guān)鍵字;選項B中符號不屬于字母、數(shù)字或下劃線;選項D中,

int是關(guān)鍵字。

44答案是B

選項A中,八進制數(shù)只能由0—7之間的數(shù)字組成;選項C,十六進制數(shù)應(yīng)當以0X開頭,

并且由0—9以及a—f組成,Oabc不對的;選項D中10,()()()包含逗號,不對的。

45答案是B

C語言的標記符中只能包含字線、數(shù)字和下劃線,沒有連接符。

46答案是C

既然在內(nèi)存中,字符數(shù)據(jù)以ASCII碼存儲,它的存儲形式就與整數(shù)的存儲形式類似.這

樣使字符型數(shù)據(jù)和整型數(shù)據(jù)之間可以通用。一個字符數(shù)據(jù)既可以以字符形式輸出,也可

以以整數(shù)形式輸出.以字符形式輸出時,需要先將存儲單元中的ASCII碼轉(zhuǎn)換成相應(yīng)字

符,然后輸出。以整數(shù)形式輸出時,直接將ASCII碼作為整數(shù)輸出。也可以對字符數(shù)據(jù)

進行算術(shù)運算,此時相稱于對它們的ASCII碼進行算術(shù)運算。

47答案是D

不同的計算機系統(tǒng)或者編譯系統(tǒng),對3種整數(shù)類型所占用的字節(jié)數(shù)有不同的規(guī)定。

48答案是A

選項B中求余運算(%)的運算對象必須是整型;選項C中,賦值運算符(=)的左邊

必須是變量,不能是常量或表達式;選項D與選項C同理。

49答案是A

++運算符有前綴和后綴兩種形式,本題中的選項C就是前綴形式,其表達式的值為增1后的值,

而選項A為后綴形式,其表達式的值為增1之前的值。而選項B和D的表達式都是k

加1之后的值

50答案是A

51答案是C

選項A中將一個變量j的值賦給了一個表達式,這種寫法是錯誤的,只能給變量賦值,而不能

給常量和表達式賦值;選項B中強制類型轉(zhuǎn)換的格式使用犯錯,強制類型轉(zhuǎn)換時,類型

標記符必須用括號括起來;選項D中,求余運算符(%)的兩端必須是整形數(shù)。

52答案是D

字符常量是用單引號括起來的單個字符,所以選項B錯誤;此外尚有一種特殊的字符專為控

制設(shè)計,稱為轉(zhuǎn)義字符,有三種轉(zhuǎn)義字符:一種是由一個開頭加一個普通字符組成,

代表一個字符。如‘'表達一個單引號字符,所以選項D對的;'W表達一個斜杠

字符,而選項C中的'則是錯誤的;用“\”與其后的1?3位八進制數(shù)字構(gòu)成的字符

序列,表達ASCII碼等值于該八進制數(shù)的字符;用“\x”與其后的1~2位十六進制數(shù)字

構(gòu)成的字符序列,表達ASCII碼等值于該十六進制數(shù)的字符;所以選項A錯誤。

53答案是B

字符常量是用單引號括起來的單個字符,所以選項A對的;此外尚有一種特殊的字符專

為控制設(shè)計,稱為轉(zhuǎn)義字符,有三種轉(zhuǎn)義字符:一種是由一個開頭加一個普通字符組

成,代表一個字符。如'\n'表達一個換行符,所以選項D對的;用與其后的1?3

位八進制數(shù)字構(gòu)成的字符序列,表達ASCII四等值于該八進制數(shù)的字符,所以選項B錯

誤,由于9不是八進制數(shù)字;用“\x”與其后的1?2位十六進制數(shù)字構(gòu)成的字符序列,表

達ASCII碼等值于該十六進制數(shù)的字符;所以選項C對的。

54答案是D

大寫字母的ASCII碼值比小寫字母的ASCII碼值小32

55答案是A

選項A中的字符變量ch只能接受單個字符,?‘a(chǎn)b'不是單個字符,所以錯誤。

56答案是B

charx="C'將一個大寫字母賦給了字符型變量X;然后通過x=x+32將x中字符的

ASCII碼值加32,即為小寫字符‘c'的ASCII碼值;然后將x以字符形式輸出,即為小

寫字母Co

57答案是A

語句charx,y;定義兩個字符型變量x,y;然后通過x='B'?'A'+'a'將用大寫字

母B的ASCII碼送去大寫字母A的ASCII碼,結(jié)果便為1,然后再加上小寫字每a的AS

CII碼,結(jié)果就為小寫字母b的ASCII碼,然后再賦值給變量x;通過y=x+2,將變量x中

的ASCII碼值加2,即變成小寫字母d的ASCII碼值再賦值給變量y;然后以數(shù)值形式輸

出變量x中的ASCII碼值為98,再以字符形式輸出變量y中的字符為do

58答案是B

選項A中字符‘(T的ASCII碼值為48,所以A的結(jié)果不為1;選項B中'\(T代表空

值,空值NULL的ASCII碼值為。所以結(jié)果為1;選項C中字符'1'的ASCII碼值為

49,所以結(jié)果不為1;選項D相稱于用()-48結(jié)果也不為lo

59答案是D

假如要表達十六進制字符,則要用‘\x'開頭,所以選項A錯誤;假如要表達八進制,

則'\()'開頭,后面跟卜3位的八進制數(shù),八進制數(shù)由()~7組成,不包含8,所以選項B錯

誤;用單引號括起來的單個字符才是字符常量,所以C錯誤;而'是轉(zhuǎn)義字符,用

來表達回車符。

60答案是B

用單引號括起來的單個字符,稱為字符常量,所以選項B錯誤。

61答案是C

先將cl變量中的字符的ASCII碼值輸出,即為65,將變量c2中字符的ASCII碼值減2

后輸出,即為66o

62答案是A

我們知道異或運算,只有兩個操作數(shù)不同,結(jié)具才為1。所以07=1,ri=o,由此可推理,

任何數(shù)與1進行異或運算都得它的相反數(shù);變量b中的高4位為1,所以要讓變量a的

高4位取反,即可讓變量a和變量b進行異或運算。

63答案是A

變量cl和c2中的值相同,所以轉(zhuǎn)換成二進制數(shù)后,相應(yīng)的二進制位上的值也相同,當兩

值相同時,只有進行異或運算,結(jié)果才為0,所以cic2值為0o所以本題的對的答案為

Ao

64答案是A

4|3轉(zhuǎn)換成相應(yīng)的二進制數(shù)即1001011=111再轉(zhuǎn)換為卜進制數(shù)即為7;而4&3轉(zhuǎn)換成相

應(yīng)的二進制數(shù)即1()0&()11=()()(),再轉(zhuǎn)換為十進制數(shù)即為():所以選擇A。

65答案是D

x/y的值為l,z的值也為1,1和1求反進行與運算,結(jié)果一定為0。所以本題選擇D。

66答案是D

2+x=00000010+10100111=10101001;-3=-00000011=11111100;所以就相稱于

10101001人11111100=01010101,所以選擇D。

67答案是D

a=0x3轉(zhuǎn)換為二進制數(shù)即為00000011;b=a|0x8轉(zhuǎn)換為二進制數(shù)即為

00000011100001000=00001011即b=ll,b?i即00001011<<1=00010。0即c=22,所以本

題選擇Do

二,填空題

1位01

2關(guān)鍵字預(yù)定義標記符用戶標記符

38

4八十十六

5inifloatdouble

65+3.6/2=5+l.8=6.8

71516a++表達式的值是a變化之前的值,當然a自身增長了1

8把10賦給變量B

9123.460000

(int)(x*1004-0.5)/100.0=(int)(l2345.67+0.5)/100.0=(int)(l2346.17)/100.0=12346/100.0=123.

460000o

103

整個表達式是一個逗號表達式,變量n和i賦值為2后,通過++i將i的值增長1變?yōu)?,然后再通過

i++為i增長1,整個逗號表達式的值為i++的值,此時是后綴,所以整個i++表達式的值為3,而變量i

的值為2o

1111110111

第11題沒有具體解析并且答案犯錯:

AA

-xAy<<1_^0000001000000101?l-l1111l0100001010-l1110111

122

只有‘\\'和'\b,是對的的

13220.000000

x=f*=n/=(c=5())是一個賦值表達式,它的順序是從右向左賦值,先執(zhí)行c=5(),然后執(zhí)行n/=5()即

n=n/50=100/50=2,接著執(zhí)行f*=2即f=f*2=10*2=20.000000,最后再將值賦給變量x0輸出變量n和x

的值,即為220.000000。

14a=14

表達式a=(3*5,a+4)的括號中是一個逗號表達式,其結(jié)果是最后一個表達式的值,即將

a+4=14的值賦給變量a。所以輸出結(jié)果為a=14。

第二章順序結(jié)構(gòu)

一選擇題

I,答案是c

隨意使用空語句會導(dǎo)致邏輯上出現(xiàn)錯誤,不要隨便使用。

2,答案是B

語句必須以分號結(jié)尾,A,C,D表達式后面均沒有分號。

3,答案是C

int*=13,k4;說明乂,丫均為整型,所以x/y只取整數(shù)部分(舍去法),值為3,把3賦值給x,整

個x二x/y表式的值為左邊變量x的值,所以輸出為30

4,答案是A

a,b均為整型,a/b是取a+b所得商的整數(shù)部分,所以是0,再把0賦值給c,所以是c的值是

0o

5,答案是D

A注釋語句可以放在代碼的任何位置

B將r定義為整型不會在編譯時犯錯,會自動進行類型轉(zhuǎn)換

C變量s為浮點型,格式描述符%£時對的的

Dn是非法的變量

6,答案是D

(x,y)是逗號表達式,它的值只有一個,所以格式說明符的個數(shù)和輸出項的個數(shù)是相等的。并

且逗號表達式的值為最后一個表達式的值,最后一個表達式是尸2023,所以整個表達式的值

是2023,因此輸出值為2023。

7,答案是A

m是十進制整數(shù)以十進制有符號的形式輸出,即照原樣輸32767,n=032767,032767是八進制的整

數(shù)以八進制無符號形式輸出,去掉前面的0。見教材P34

8,答案是C

m,n的值都是十六進制數(shù)Oxabc,m-=n即是m=m-n,把m-n的值賦給m,

即把0賦給rn,再把m值以十六進制無符號的形式輸出,輸出的十六進制

數(shù)不用在前面Ox或者0X。見教材P35

9,答案是B

表達式i一一的值是在變量自減之前的值,i的初值為10,所以該表達式的值也為!0;表達式j(luò)++

的值是變量自加之后的值,j初值為1,所以該表達

式在值是2。

10,答案是C

m二0256,即ni是八進制的數(shù)0256,要以八進制無符號的形式輸出,即輸出

256;n=256,即n是十進制的數(shù)256,也要以八進制無符號的形式輸出,首

先要把十進制數(shù)轉(zhuǎn)化為八進制數(shù),256轉(zhuǎn)化為八進制為0400,以無符號形

式輸出,即輸出400。

11,答案是B

在printf語句中,格式控制的個數(shù)只有一個,即%小而輸出項有兩項,即a和b。而得到的結(jié)果

應(yīng)當只有一個,所以應(yīng)當輸出第一個變量的值,即變量a的值。

12,答案是C

第一個數(shù)據(jù)的輸出控制寬度是2位,但是x的值是102,占3位,要輸出的數(shù)據(jù)寬度大于規(guī)定的輸

出寬度,所以按數(shù)據(jù)的實際寬度輸出,輸出102。第二個數(shù)據(jù)規(guī)定以十進制形式輸出,輸出控制寬

度是2,y的值為012,是八進制數(shù),所以要轉(zhuǎn)換成十進制數(shù)10后再輸出。

13,答案是B

表達式a=f/=c*=(x=6.5),按從右到左結(jié)合,先把6.5賦值給x,再執(zhí)行c=c*6.5,c的值變?yōu)?5,

再執(zhí)行f=f/65,為浮點數(shù)的除法,f的值為1.53……,再把f的值賦給a,a為整型數(shù)據(jù),執(zhí)行強

制類型轉(zhuǎn)換,a的值為loa相應(yīng)的輸出格式為%d,即輸出1:c相應(yīng)的輸出格式為%d,輸出65,

f相應(yīng)的輸出格式%3.If,即輸出控制寬度為3位,保存小數(shù)點后一位小數(shù),即輸出1.5,x相應(yīng)

的輸出格式也為%3.If,輸出出5。

14,答案是D

floatx=-123.456;說明x為單精度浮點數(shù)據(jù),單精度浮點數(shù)據(jù)相應(yīng)的輸出格式應(yīng)當為%f。

15,答案是C

m=(k+=i*=k);按從右到左結(jié)合,先執(zhí)行i=i*k;即i被賦值為4,再執(zhí)行k=k+4;k被賦值為6,

最后把6賦給m,輸出m和i的值。

16,答案是C

略(參考12題)

17,答案是D

—m++遵循從右向左結(jié)合的原則;H1++的值為m自增之前的值,所以執(zhí)行完x=—m++以后,x

被賦值為一3;表達式x=x+8/++n中有加號除號,先算8/++n,++n的值為自增之后的值為5,8/5

取整為L即x=x+8/++n轉(zhuǎn)化為x=x+l,即把x+1的值賦給x,x的值變?yōu)橐?。

18,答案是D

A輸入函數(shù)應(yīng)為scanf();

B,C輸入數(shù)據(jù)列表必須是地址表達式;

19,答案是A

從鍵盤輸入數(shù)據(jù)的格式必須與輸入控制規(guī)定的格式同樣

B答案三個之間不要有空格;C答案用逗號分開是多余的;D答案格式不匹配。

20,答案是A

格式控制規(guī)定輸入的兩個數(shù)據(jù)之間要用逗號隔開,A沒有逗號所以錯誤,D兩個輸入數(shù)之間的回車

換行可以忽略。

21,答案是C

x乘以100是為了把x小數(shù)點后的兩位小數(shù)變?yōu)檎麛?shù),再加上0.5,假如小數(shù)點后一位大于等于5

則會進一位,假如小數(shù)點后一位小于5則不會出現(xiàn)進位的情況,再對其進行強制類型轉(zhuǎn)換,采用舍

去法丟掉小數(shù)部分,即對x乘上100后的數(shù)實現(xiàn)了小數(shù)位到整數(shù)位的四舍五入。最后再除以100.0,

把數(shù)字變回本來的大小,整數(shù)與浮點數(shù)相除結(jié)果為浮點數(shù),即實現(xiàn)了規(guī)定。

22,答案是C

從鍵盤輸入數(shù)據(jù)的格式必須與輸入控制規(guī)定的格式同樣。

23,答案是B

輸入控制中第一個數(shù)規(guī)定以“%2d”形式輸入,即規(guī)定輸入一個兩位的數(shù),而從鍵盤輸入的數(shù)為

876,所以從左到右取兩位數(shù)字87,即把87賦值給整型變量a,余下的6再賦值給浮點型變量b,

自動進行類型轉(zhuǎn)換,b的值為6.000000,后面輸入的543則沒有賦值給變量。

24,答案是D

25,“%%”會輸出一個“%”,“d”會照原樣輸出,由于沒有格式說明,m,n無法輸出到屏

幕。

26,答案是D

27,第1個輸出語句規(guī)定ch以枇(字符)形式輸出所認為輸出“a”,以%d(整數(shù))形式輸出為,

字符轉(zhuǎn)換為整型要使用ASCII碼所認為“97”,k沒有相應(yīng)的輸出符所以沒有輸出,第2個

輸出語句規(guī)定以整型方式輸出k得到“12”。結(jié)果為“a,97,k二12”

28,答案是B

29,a+b的結(jié)果為30,按照"a+b=%d\n”的輸出格式得到輸出結(jié)果“a+b=30"B

30,答案是B

31,printf可以沒有輸出項:沒有輸出項的printf只是沒有輸出內(nèi)容;整數(shù)不能以十二進制輸

出,getchar()只能讀入字符。

32,答案是A

getchar()可以讀入空格符合回車符。

二填空題

1,一條語句分號

2,88

一方面將八進制數(shù)0210轉(zhuǎn)化為十六進制的數(shù)0X88,輸出格式說明要以十六進制無符號的形式

輸出,所以省略0X,直接輸出88。

3,11

把十進制數(shù)轉(zhuǎn)化為八進制數(shù),以無符號的形式輸出

4,252137

b為八進制數(shù)025,c為十六進制數(shù)0X25,一方面把b、c都轉(zhuǎn)化為十進制的整數(shù),分別為

21、37,按照輸出格式規(guī)定a、b、c以十進制整數(shù)形式輸出,中間以空格分開,所以輸出為2521

370

5,nl=%d\nn2=%d

除了nl,n2的值之外,還必須加入“nl=”“n2=”照原樣輸出的字符,很明顯在兩個數(shù)據(jù)之

間還加了換行符。

6,i=10,j=20<回車)

格式控制中加入了格式說明以外的其他字符,則在輸入數(shù)據(jù)時這些字符也要同樣輸入。輸入格

式控制為i日d,jKd,所以則應(yīng)當從鍵盤輸入i=10,j=20

7,261

a為十進制數(shù)177轉(zhuǎn)化為八進制的數(shù)為0261,以無符號的形式輸出為261

8,16

9,a的初值為0,在表達式a+=(a=8)中,a一方面被賦值為8,再執(zhí)行操作a=a+a,所以a最后

被賦值為16,即輸出a的值為16

10,printf("a=%d,b=%d",a,b);

11,B66

12,B在ASCII碼中派在A的后面A為65,那么B為66。

13,10

14,012為八進制數(shù),轉(zhuǎn)換為十進制為10。

15,1234

16,在scanf函數(shù)中指定了寬度為2,輸入123456,a=12,b=34,后面的567無效。

17,12

程序運營時輸入12,getchar()函數(shù)只能接受單個字符,所以chi='1',ch2='2'。

nl=chl-,0,轉(zhuǎn)化為ASCII碼計算nl=50-49,nl的值為1。n2=nl*10+(ch2-,0')轉(zhuǎn)化為

ASCII碼計算n2=1*10+(51-49),n2的值為12。

第三章選擇結(jié)構(gòu)

一、選擇題

LD此題重要是考語句的特性。一條語句只包含一個分號,D項有兩個分號,應(yīng)當是兩條語句,所

以選D

2.C此題重要是考真假條件的等價。題目中的E為非0時條件為真,為0時為假。那么把非0和0

帶到選項中可知,C項正好是E為。時表達式為真,非。時為假,所以選C。

3.D任意合法的表達式都可以作為邏輯運算符的運算對象

4.D此題重要是考邏組運算和關(guān)系運算的優(yōu)先級別.只要掌握!、算術(shù)運算和&&的優(yōu)先級別便可選對.

這幾種運算符的具體優(yōu)先級關(guān)系見見教材P188,附錄三。

5.A此題重要是考邏輯運算符!、&&和||之間的優(yōu)先級別。!最高,&&次之,||最低。先求得!a

為0,所以不必計算!b的值,即!a&&!b的值為0,*c=0,!c=l,W0||l=l,所以選A。

6.A此題重要是考了邏輯、關(guān)系和算術(shù)運算,純熟掌握邏輯運算、關(guān)系運算和算術(shù)運算的優(yōu)先級別

后,就不難了。A選項中!a為0,所以!為假,那么就不用計算&&后面的表達式了,由于。與

任何數(shù)均為假;B項中先計算出a<b為假,則(a<b)&&!c也為假,而0||1二1;C項中a和b均為真,

所以aft&b的值為1;D項中先計算出(b+b)&&(c-a)=l,又a=2,2||1二1所以選A。

7、D此題考到了十十運算符以及邏輯運算。當計算機碰到a&&b時,先計算表達式a的值,若為真才

會計算表達式b的值,否則將不會去計算b的值,由于一旦a=0,則0&&b必為0;而a||b則正好是

相反的,即先計算表達式a的值,若a為假才會計算表達式b的值,否則將不會去計算b的值,由

于一旦a=l,則l||b的值必為1,理解了這兩點后,我們在看題目:的值為1,此時i為2,

所以計算&&后的表達式,一方面計算++j=3的值為1,j的值為3,由上面的原理我們可知,||后

面的表達式不用再計算,所以此時i,j,k的值分別為2,3,3O

8、D此題和題2非常的相似,也是考真假條件的轉(zhuǎn)換,其中D項中只有k為0時,!k%2==l才成

立,顯然和A.B.C三項不同。

9、C此題重要是考if和else的配對問題。見教材P5L

10、D此題重要是考if和else的一般形式。if后面的語句要么是單條語句,要么是由{}擴起來

的復(fù)合語句,不能是if后有兩條語句的,所以本題程序在運營的時候會犯錯。

11.C此題考到了關(guān)系運算和邏輯運算及一定數(shù)學(xué)知識。|x-y|<10可等價為-10<x-八10,一方面選

項A表達x-y的絕對值小于10,與題中的數(shù)學(xué)關(guān)系同樣;將T0<x-y<10用邏輯表達式表達的話就

是B選項;而D選項只是數(shù)學(xué)變換,所以選擇C

12.D此題也是考到了真假條件的變換和if-else語句。A.B.C三項都是表達a為真時輸出x,為假

時輸出y,而D則是a為假時輸出x,為真時輸出vQ

13.D此題考察了賦值表達式的一般格式,二的左邊是變量名,右邊是表達式,所以D項錯誤。

14.C此題重要是考察邏輯運算符當計算機碰到a||b,先計算表達式a的值,若為假才會計算

表達式b的值,否則將不會去計算b的值,由于一旦a=l,則0||b必為0。題中b>a為真,所以

(n二b>a)為1,那么將不會去計算m二水b的值,k被并賦值1,所以ni仍然為0。

15.C此題重要是考察if-else-if和if語句。具體分析見教材第49頁例7。

16.C此題重要是考察if-else-if以及關(guān)系表達式的運算。一方面判斷第一個條件a>b>c的值為0,

所以不執(zhí)行第一條語句;在判斷第二個條件,c-l>=c表達式的結(jié)果為假,所以也不執(zhí)行其下面的

語句,因此執(zhí)行最后一條語句,將輸出d+2的值為4o

17、C此題重要是考察條件表達式和條件運算符。一方面要注意條件表達式的結(jié)合方向,它是從右

至左的(可參照附錄三)第一個條件表達式的值為a,第二個條件表達式的值為c,而c=6,所以答

案選C

18、A此題重要是考察if-else語句和條件表達式的轉(zhuǎn)化。只要理解了if-else語句和條件表達式

的運算規(guī)則的話,就很容易選出A

19>D此題重要是考察在switch語句中break和default的作用及break的合用范圍。具體說明

可參看教材第三章P53對switch的說明部分。

20、B

此題考察的是條件表達式求解問題。先看第一個條件表達式語句,a〈b為真,所以k=b=2;再看第二

個條件表達式語句,k>c為假,所以k=k=2選B

21.A

此題考察的是條件表達式的求解順序。參照附錄三可知,它的結(jié)合方向是自右至左,所以先求得右

邊一個條件表達式的值為2,再求得左邊一個的值為1,即選A

22.C

此題考察的是真假條件的等價問題。x-y為真表達x-y是非0的,也即x-y<0或x-y>0即選C

23答案是B

C語言的字符以其ASCH碼的形式存在,所以要擬定某個字符是大寫字母,只要擬定它的ASCH碼

在‘A'和'7:之間就可以了,選項A和C符合規(guī)定°大寫字母的ASCH碼值的范圍為65到90,

所以D選項符合規(guī)定,所以只有C是錯誤的。

24答案是B

滿足表達式(c>=2&&c<=6)的整型變量c的值是2,3,4,5,6。當變量c的值不為2,4,6時,其值只

能為3或5,所以表達式c!=3和c!二5中至少有一個為真,即不管c為什么值,B選項中的表達式的值

都為真,所以B選項對的。

25答案是A

條件x=0||x==l為真,所以執(zhí)行y=l,然后執(zhí)行

y=x*x-(x-2)*(x-2)=1-(-1)*(-1)=1-1=0,所以選擇A。

26答案是B

當表達式EXP為非0值時條件成立,即執(zhí)行語句i++;當EXP等于0時執(zhí)行語句j-;o這就等同

于條件表達式“(EXP!=0)?i++:j—"。所以本題選擇B。

27答案是D

C語言的字符以其ASCII碼的形式存在,所以要擬定某個字符是大寫字母,只要擬定它的ASCH碼

在‘A'和'Z'之間就可以了,選項B的書寫格式錯誤,而選項C不符合規(guī)定。大寫字母的ASCII

碼值的范圍為65到90,所以A選項不符合規(guī)定,小寫字母的ASCII碼比大寫字母的ASCII碼大32,

所以只有D是對的的。

28答案是D

奇數(shù)和2求余一定不為0,所以當x為奇數(shù)時,x%2==0是不成立的,值為0,此題選擇Do

29答案是B

兩個if語句的判斷條件都不滿足,程序只執(zhí)行了c=a這條語句,所以變量c的值等于3,變量b的值沒

有變化,程序輸出的結(jié)果是3,5,3。所以本題選擇B。

30答案是C

表達式y(tǒng)%3==0的值為1,所以執(zhí)行下面的輸出語句,表達式一y的值為8,所以輸出結(jié)果是8。選擇

Co

31答案是C

表達式x%3的值為2,非0所以執(zhí)行下面的輸出語句,將x—的值8輸出,此時x的值變?yōu)?,然

后再執(zhí)行下一個輸出語句,將一x的值6輸出,x的值也變?yōu)?,所以選擇C。

32答案是D

這是嵌套形式的switch語句,由于break結(jié)構(gòu)影響較大,而此程序中的第一個case后沒有break語句,

程序執(zhí)行時,x=l,執(zhí)行內(nèi)嵌的switch語句,因y=0,執(zhí)行a++,使變量a的值為1并終止內(nèi)層switch結(jié)

構(gòu),回到外層。程序繼續(xù)執(zhí)行case2后面的語句a++;b++;,這使變量a,b的值分別為2和1,外層

switch語句結(jié)束。所以此題選擇D。

33答案是D

break與continue語句都可用于switch語句中。選擇D。

二、填空題

1.答案是:10200

分析:多數(shù)同學(xué)得到的答案是10201,顯然是沒有弄清楚第三條賦值語句:

c=(a%b<l)||(a/b>l).這是將后面一個邏輯表達式的值給c,那么關(guān)于邏輯表達式的考題,無非就

是考察運算符的優(yōu)先級,也就是說先算哪個,后算哪個的問題。在這個題里面,先計算第一個圓括

號里面的內(nèi)容,a%b的值是10,所以10<1為假;a/b的值為0,0>1為假。在邏輯或運算的時候,

兩個運算對象都為假,則結(jié)果為假。所以c的值為0.答案是:10200

2.答案是:1

分析?:程序中是一個if-olse結(jié)構(gòu)v這個題最容易犯錯的地方在于if的條件,注意,里面的是

c=a是一個賦值表達式,不是將c與a的值進行比較。所以條件為真,輸出賦值以后c的值,為

lo

3.答案是:4,5,99

分析:題中的重點在于兩個if結(jié)構(gòu),大家要注意兩點:第一,假如if后面沒有花括號,則它后面

的第一條語句是它的結(jié)構(gòu)體,并且只有一條語句。(假如后面是一個結(jié)構(gòu),則整個結(jié)構(gòu)都屬于if

結(jié)構(gòu)的結(jié)構(gòu)體)。第二,變量在不斷的被重新賦值,所以其值在不斷的變化。

4.答案是:yes

分析?:該題與第二題是同一回事。

5.答案是:1

分析:這個題還上一個if—else結(jié)構(gòu),考察點仍然是考察考生是否可以對的辨認if后面括號里的

表達式p=a!=0,根據(jù)運算符的優(yōu)先級知道,這里應(yīng)當先算a!=0,這是一個邏輯運算,a的值為5,

所以a!=0為真,其邏輯值為1,將1賦值給p,所以條件為真,輸出p的值,為1。

6.答案是:20,0

分析:見第3題分析。

7、答案是:585858

分析:題中有三個if結(jié)構(gòu),注意,這三個if結(jié)構(gòu)是互相獨立的,是互不相關(guān)的,只要他們的條件

成立,就要執(zhí)行其結(jié)構(gòu)體(后面的輸出語句)。通過鍵盤輸入,得a的值為58,所以a>50為真,

輸出58;然后判斷a>40,仍然為真,再輸出58,最后判斷a>30,肯定為真,所以再輸出58,連

續(xù)三次輸出58o

8、答案是:0

分析:本題的關(guān)鍵在于關(guān)系運算符的運算順序,a=5,b=4,c=3.a〉b>c看起來是真的,但是這這是數(shù)

學(xué)里面是這樣的,這里我們要一步一步的計算,先算a>b,a的確大于b,所認為真,邏輯值為1,

后面的計算就變成了1>3顯然為假,邏轉(zhuǎn)值為0,并將它賦值給d,所以最后輸出d的值為0。

9、答案是:3

分析:這個題重要考察條件運算符。程序要輸出(P/3>0?p/10:p%3)這個條件表達式的值。P為30,

所以p/3=10,10>0顯然為真,所以整個表達式的值應(yīng)當是p/10的值,p/10得3。

10、答案是:21

分析:題中是一個switch嵌套結(jié)構(gòu)。里面的switch是case1的語句,題的關(guān)鍵點在于這個語句

(即里面的這個switch結(jié)構(gòu))的后面并沒有跳出整個結(jié)構(gòu)的break語句。所以,當x=l,與case

相配以后,執(zhí)行完后面的語句(即里面的這個switch結(jié)構(gòu)),然后沒有碰到break語句,所以并

不跳出結(jié)構(gòu)體,而是繼續(xù)執(zhí)行case2后面的語句。所以最后得到的結(jié)果應(yīng)當是21,而不是1

0o

11.答案是:0

字符空格的ASCH碼不為0,所以本題中表達式!c的值為0,b=0&&l的結(jié)果顯然為0。

12.答案是:1

執(zhí)行"j=!ch&&i++”時,一方面判斷j=!ch的值,由于ch='$'不為0,所以j=!ch=O,編譯

便不再計算表達式i++的值,i的值不變?nèi)詾?。

13.答案是:-4

表達式!n的值為1,所以執(zhí)行x-=l后x=l;表達式m的值為非()值,所以執(zhí)行其后的語句x-=2后x的值為-1,表達

式x的值也為非0,所以執(zhí)行其后的語句后x的值為-4,最后輸出x的值即為?4。

14.答案是:做

表達式c=5的值為真,所以表達式的值等于1,因此輸出符號“#”,然后執(zhí)行“break",繼

而去執(zhí)行adefault:printf();”語句,輸出符號。

15.答案是:1

由于在條件表達式(a<b)a:b中,比較表達式a<b為真,所以x的值為a的值等于1。后面兩

個條件表達式中的比較表達式都真,所以最終x的值等于lo

16.答案是:a:bc:tl

條件表達式類似于if語句,根據(jù)“?”前面子表達式的邏輯值來判斷應(yīng)當計算”前面的子表

達式還是后面的作為整個條件表達式的結(jié)果。題目規(guī)定輸出a、b、c3個變量中的最小值,所以當

a〈b時,應(yīng)當選a,否則選b,幫前一空應(yīng)填a:b。同理,后一空應(yīng)填c:tl。

第四章循環(huán)結(jié)構(gòu)

1.選擇題:

①答案:B

②N的值為10,n>7為真,執(zhí)行循環(huán)體,n的值減1后為9,輸出n的值9

③N的值為9,n>7為真,執(zhí)行循環(huán)體,n的值減1后為8,輸出n的值8

④N的值為8,n>7為真,執(zhí)行循環(huán)體,n的值減1后為7,輸出n的值7

N的值為7,n>7為假,結(jié)束循環(huán)。

答案:A

k的值為5,進入循環(huán),(--k)表達式的值為4(真),同時k的值改變?yōu)?,輸出表達式k-

二3的值1,同時k的值為1。k為1,表達式(一k)的值為0,結(jié)束循環(huán)。

1.答案:A

2.X=0,y=5,z=3,(z>0&&x<4)值為真,進入循環(huán)體,y值為4,z值為2,x值為1

3.(z〉0&&x<4)值為真,進入循環(huán)體,y值為3,z值為1,x值為2

4.(z〉0&&x<4)值為真,進入循環(huán)體,y值為2,z值為0,x值為3

5.(z>0&&x(4)值為假,結(jié)束循環(huán)。

6.輸出*,丫,2的值3,2,0

答案:D

分析:

當K的值為3時,只執(zhí)行case3后面的語句n+二k,n的值為3;

當k的值為2時,先執(zhí)行case2后面的語句,但沒有break,所以不會退出,繼續(xù)執(zhí)行case

3后面的語句n+二k,n的值為5;

當k的值為1時,先執(zhí)行case1后面的語句n+二k,n的值為6,先執(zhí)行case2后面的語句(沒

有),繼續(xù)執(zhí)行case3后面的語句n+=k,n的值為7。輸出n的值7。

答案:B

在循環(huán)體中有“s+二1;"s的初始值為0,要讓s的值等于2必須是循環(huán)體執(zhí)行兩遍。當循環(huán)提執(zhí)行

兩遍后a的值等于-3,所以在n=-3的時候循環(huán)體執(zhí)行兩遍后條件表達試(a!=0)為假,會退出循

環(huán)。

答案:A

分析:

t值為1,s的值為0。從鍵盤中輸入一3后,n的值為一3.先執(zhí)行循環(huán)體。

執(zhí)行s=s+t;s的值為1,執(zhí)行t=t-2;t的值為7.再判斷表達式的值

t!二n為真,再次執(zhí)行循環(huán)體。執(zhí)行s=s+t;s的值為0,執(zhí)行的值為-3.再判斷表達式的

t!二n為假,結(jié)束為..while循環(huán)。最后輸出s的值0。

答案:A

分析:x=3;先執(zhí)行循環(huán)體,輸出表達式x-=2的值1,同時x的值也改變成1,再判斷表達式的值

(!x),x的值為1(真),(!x)為假,循環(huán)結(jié)束。

答案:B

分析:B選項每次進入循環(huán)體,都要先執(zhí)行p二1;即1賦值給p.所以不能求出5!的值

答案:D

分析:變量i每次增量為2,變化過程為:1->3->5->7->9,語句s+=l每次執(zhí)行使s增長的數(shù)為:

2,4,6,8,10,所以s的值為自然數(shù)CIO中偶數(shù)的值。

答案:C

分析:C項s=s+l/n,1/n一方面運算,n為整型變量,1也是整型變量,當n=2…10時,1/n的值為

整數(shù)0,故C不對的

答案:A

執(zhí)行第一次循環(huán)時,a=7,b=4,a!=b為真繼續(xù)循環(huán)。第二次循環(huán)a=3,b=l,a!=b為真繼續(xù)

循環(huán)。第三次循環(huán)a=2,b=1,a!二b為真繼續(xù)循環(huán)。第四次循環(huán)a=l,b=l,

a!二b為假退出循環(huán)。

答案:C

答案:C

分析?:x的值為15.執(zhí)行while循環(huán),(x>10)為真,執(zhí)行循環(huán)體。執(zhí)行x++;x的值為16.再執(zhí)

行if語句。(x%3)為真,執(zhí)行x++,x的值為17,再執(zhí)行break;語句,退出循環(huán)體,結(jié)束while

語句的執(zhí)行。最后輸出x的值17o

答案:D

在循環(huán)中當x等于0,3,6,9時x%3等于0,這時會進入if語句執(zhí)行printf語句,在輸出前

x會先自加。屏幕上輸出14710。

答案:D

分析:continue語句會提前結(jié)束本次循環(huán)體的執(zhí)行,不會結(jié)束整個for語句的執(zhí)行.

答案:2345

選擇中沒有此答案。

解析:本題注意的是在循環(huán)第一次進入switch語句的時候是執(zhí)行的default后面的語句塊,由于沒

有break,所以還會執(zhí)行case2:cased:后面的語句。

答案:A

本題答案為A

解析:A一方面執(zhí)行++n,判斷條件表達式nCO為假退出循環(huán)。B條件表達式1永遠為真是無限循

環(huán),C條件表達式n的值為10永遠為真是無限循環(huán),D沒有條件表達式,所以沒有退出條件,是無

限循環(huán)。此題要注意的是0為假,非0為真。

答案:A

do-while循環(huán)先執(zhí)行后判斷,先執(zhí)行循環(huán)體中的printf語句輸出n的值0,在while(i++)中i

先執(zhí)行再自加,所以while[i++)的等于while(O)為假退出循環(huán)。輸出結(jié)果為“0,0”。

答案:D

分析:第一次循環(huán)x=8,x%3<〉0,進入if語句輸出x的值為8,然后x自減1,執(zhí)行continue立即

進行下次循環(huán)條件判斷。第二次循環(huán)x=6,x%3=0,不進入if語句,執(zhí)行if語句后面的

printf(a%d,Mx),x先自減1再輸出得到5o第三次循環(huán)x=4,x%3<>0,進入if語句輸出x的值

為4,然后x自減1,執(zhí)行con二inue立即進行下次循環(huán)條件判斷。第四次循環(huán)x=2,感3<〉0,進入if

語句,輸出x的值為2,然后x自減1,執(zhí)行continue立即進行下次循環(huán)條件判斷。第五次循環(huán)

x=0,判斷表達式x>0為假。結(jié)束循環(huán)輸出結(jié)果為&5,4,2o答案D

2.C

第一次循環(huán)y=9,y%3=0,進入if語句y先自減,輸出y的值為8。第二次循環(huán)y=7,y%3<>0,

進入下次循環(huán)。第三次循環(huán)y=6,y%3=0,進入if語句y先自減,輸出y的值為5。第四次循環(huán)

y=4,y%3<>0,進入下次循環(huán)。第五次循環(huán)y=3,y%3=0,進入if語句y先自減,輸出y的值為

20第六次循環(huán)y=l,y%3<)0,進入下次循環(huán)。第七次循環(huán)尸0,判斷表達式y(tǒng)>0為假結(jié)束循

環(huán)。輸出結(jié)果為8,5,2o答案C

3.B

在第一層循環(huán)中,當i自加到值等于3的時候才會進入第二層循環(huán)55%3=1O輸出m的值為1.

4.B

外層循環(huán)3次,i的值在內(nèi)層循環(huán)中依次為1,2,3內(nèi)層循環(huán)次數(shù)依次為3,2,1次。

5.D

代碼“if(n%3!=0)continue;"無實際意義。當n自加到4的時候結(jié)束循環(huán)。答案D

6.B

需要填入的實際是每行輸出的個數(shù),從圖形看到每行的個數(shù)是行數(shù)的兩倍減一,i可以

代表行數(shù)。所以填入的是。答案B

7.A

0行任何數(shù)等十0,所以第一次循環(huán)的時候就進入了if語句退出了for循環(huán)。i=21,i<20為假,

退出了while循環(huán)。a的值為21。

26.D

1.i的初值為0,第一次循環(huán)的時候滿足i<0,進入第一個if語句,執(zhí)行continue直接進行下次

循環(huán),i的值沒有改變。第二次循環(huán)乂反復(fù)了第一次循環(huán)的操作,所以是死循環(huán)。

2.填空題:

答案:一1

分析:此題的循環(huán)體是省咯了大括號的空語句;,x的初值是2;執(zhí)行while語句,先判斷

表達式的值,(x-)的值為1(真),同時x的值減1變?yōu)?,再執(zhí)行循環(huán)體(空語句;),再判斷表

達式(x一)的值,表達式的值為0

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論