C語言-習(xí)題集答案全部_第1頁
C語言-習(xí)題集答案全部_第2頁
C語言-習(xí)題集答案全部_第3頁
已閱讀5頁,還剩31頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、.目 錄第一章 C語言基礎(chǔ)知識(shí)參考答案- 2 -第二章順序結(jié)構(gòu)參考答案- 5 -第三章選擇結(jié)構(gòu)參考答案- 7 -第四章循環(huán)結(jié)構(gòu)參考答案- 11 -第五章函數(shù)參考答案- 15 -第六章指針參考答案- 18 -第七章一維數(shù)組參考答案- 21 -第八章二維數(shù)組參考答案- 28 -第九章字符串參考答案- 31 -第十章對C語言的深入討論參考答案- 33 -第十一章結(jié)構(gòu)體與共用體參考答案- 34 -第十二章文件參考答案- 35 -. v.第一章 C語言基礎(chǔ)知識(shí) 參考答案一,選擇題1 C2 D3 A4 C5 A6 D7C 分析:C答案以數(shù)字開頭了8D 分析:int 是關(guān)鍵字9 C10 D11 B12 D

2、分析:Visual C+6.0中int類型的變量占的字節(jié)數(shù)為4。13 B分析:B中出現(xiàn)了8,而八進(jìn)制只能有0到7組成14 D分析:答案D中開頭是0不是o15 A16 D17 B18 D分析:3.6-5/2+1.2+5%2=3.6-2+1.2+1=3.8本題目考察算術(shù)運(yùn)算符,需要注意整數(shù)除以整數(shù)結(jié)果只能是整數(shù)19 A20C21A22 C23 D24 C分析:考察的是強(qiáng)制類型轉(zhuǎn)換,正確的是k%(int)f 25B26 C27 C28 B29A分析:本題目主要考察n+表達(dá)式的值是n變化之前的值,然后使n的值增加130 A31D分析:(int)a+b/b=(int)5.5+2.5/2.5=5+1.00

3、0000=b=6.000000同樣a,b的類型是double型的32D分析:long 和short不能相互修飾33 A34 C35 B36 B分析:C語言的標(biāo)識(shí)符中只能包含字線、數(shù)字和下劃線,沒有連接符。37D分析:不同的計(jì)算機(jī)系統(tǒng)或者編譯系統(tǒng),對3種整數(shù)類型所占用的字節(jié)數(shù)有不同的規(guī)定。38 B39A分析:+運(yùn)算符有前綴和后綴兩種形式,本題中的選項(xiàng)C就是前綴形式,其表達(dá)式的值為增1后的值,而選項(xiàng)A為后綴形式,其表達(dá)式的值為增1之前的值。而選項(xiàng)B和D的表達(dá)式都是k加1之后的值40D分析:字符常量是用單引號(hào)括起來的單個(gè)字符,所以選項(xiàng)B錯(cuò)誤;此外還有一種特殊的字符專為控制設(shè)計(jì),稱為轉(zhuǎn)義字符,有三種轉(zhuǎn)

4、義字符:一種是由一個(gè)“”開頭加一個(gè)普通字符組成,代表一個(gè)字符。如表示一個(gè)單引號(hào)字符,所以選項(xiàng)D正確;表示一個(gè)斜杠字符,而選項(xiàng)C中的則是錯(cuò)誤的;用“”與其后的13位八進(jìn)制數(shù)字構(gòu)成的字符序列,表示ASCII碼等值于該八進(jìn)制數(shù)的字符;用“x”與其后的12位十六進(jìn)制數(shù)字構(gòu)成的字符序列,表示ASCII碼等值于該十六進(jìn)制數(shù)的字符;所以選項(xiàng)A錯(cuò)誤。41 B分析:字符常量是用單引號(hào)括起來的單個(gè)字符,所以選項(xiàng)A正確;此外還有一種特殊的字符專為控制設(shè)計(jì),稱為轉(zhuǎn)義字符,有三種轉(zhuǎn)義字符:一種是由一個(gè)“”開頭加一個(gè)普通字符組成,代表一個(gè)字符。如n表示一個(gè)換行符,所以選項(xiàng)D正確;用“”與其后的13位八進(jìn)制數(shù)字構(gòu)成的字符序

5、列,表示ASCII碼等值于該八進(jìn)制數(shù)的字符,所以選項(xiàng)B錯(cuò)誤,因?yàn)?不是八進(jìn)制數(shù)字;用“x”與其后的12位十六進(jìn)制數(shù)字構(gòu)成的字符序列,表示ASCII碼等值于該十六進(jìn)制數(shù)的字符;所以選項(xiàng)C正確。42 D43 B44 A45 B分析:選項(xiàng)A中字符0的ASCII碼值為48,所以A的結(jié)果不為1;選項(xiàng)B中0代表空值,空值NULL的ASCII碼值為0所以結(jié)果為1;選項(xiàng)C中字符1的ASCII碼值為49,所以結(jié)果不為1;選項(xiàng)D相當(dāng)于用0-48結(jié)果也不為1。46D如果要表示十六進(jìn)制字符,則要用x開頭,所以選項(xiàng)A錯(cuò)誤;如果要表示八進(jìn)制,則0開頭,后面跟13位的八進(jìn)制數(shù),八進(jìn)制數(shù)由07組成,不包含8,所以選項(xiàng)B錯(cuò)誤;

6、用單引號(hào)括起來的單個(gè)字符才是字符常量,所以C錯(cuò)誤;而n是轉(zhuǎn)義字符,用來表示回車符。47 C先將c1 變量中的字符的ASCII碼值輸出,即為65,將變量c2中字符的ASCII碼值減2后輸出,即為66。48 A變量c1和c2中的值相同,所以轉(zhuǎn)換成二進(jìn)制數(shù)后,對應(yīng)的二進(jìn)制位上的值也相同,當(dāng)兩值相同時(shí),只有進(jìn)行異或運(yùn)算,結(jié)果才為0,所以c1c2值為0。所以本題的正確答案為A。二,填空題1 位 0 12 關(guān)鍵字 預(yù)定義標(biāo)識(shí)符 用戶標(biāo)識(shí)符3 84 八 十 十六5 int float double6 5+3.6/2=5+1.8=6.87 15 16 a+表達(dá)式的值是a變化之前的值,當(dāng)然a本身增加了18 把1

7、0賦給變量B9printf(“*a=%d,b=%d*”,a,b);103整個(gè)表達(dá)式是一個(gè)逗號(hào)表達(dá)式,變量n和i賦值為2后,通過+i將i的值增加1變?yōu)?,然后再通過i+為i增加1,整個(gè)逗號(hào)表達(dá)式的值為i+的值,此時(shí)是后綴,所以整個(gè)i+表達(dá)式的值為3,而變量i的值為2。11、112、3. v.第二章 順序結(jié)構(gòu) 參考答案一 選擇題1.C 解析:結(jié)構(gòu)化程序的算法可以解決任何復(fù)雜的問題。2.C 解析:C程序的基本組成單位是函數(shù),在C程序中每行可以寫多條語句,每條語句以分號(hào)結(jié)束,每條語句可以占用幾行,在幾行內(nèi)寫完。3.C 解析:隨意使用空語句會(huì)導(dǎo)致邏輯上出現(xiàn)錯(cuò)誤,不要隨便使用。4.D5.D6.B7.A8.

8、C9.B 解析:在printf語句中,格式控制的個(gè)數(shù)只有一個(gè),即d,而輸出項(xiàng)有兩項(xiàng),即a和b。而得到的結(jié)果應(yīng)該只有一個(gè),所以應(yīng)該輸出第一個(gè)變量的值,即變量a的值。10.C 解析:m=0256,即m是八進(jìn)制的數(shù)0256,要以八進(jìn)制無符號(hào)的形式輸出,即輸出256;n=256,即n是十進(jìn)制的數(shù)256,也要以八進(jìn)制無符號(hào)的形式輸出,首先要把十進(jìn)制數(shù)轉(zhuǎn)化為八進(jìn)制數(shù),256轉(zhuǎn)化為八進(jìn)制為0400,以無符號(hào)形式輸出,即輸出400。11.C 解析:第一個(gè)數(shù)據(jù)的輸出控制寬度是2位,但是x的值是102,占3位,要輸出的數(shù)據(jù)寬度大于規(guī)定的輸出寬度,由于數(shù)據(jù)時(shí)右對齊方式,所以按數(shù)據(jù)的實(shí)際寬度輸出,輸出102。第二個(gè)數(shù)

9、據(jù)要求以十進(jìn)制形式輸出,輸出控制寬度是2,y的值為012,是八進(jìn)制數(shù),所以要轉(zhuǎn)換成十進(jìn)制數(shù)10后再輸出。12.C13.A14.D 解析:float x=-123.456;說明x為單精度浮點(diǎn)數(shù)據(jù),單精度浮點(diǎn)數(shù)據(jù)對應(yīng)的輸出格式應(yīng)該為%f。15.C16.D.解析:m遵循從右向左結(jié)合的原則;m的值為m自增之前的值,所以執(zhí)行完xm以后,x被賦值為3;表達(dá)式xx8/+n中有加號(hào)除號(hào),先算8/+n,+n的值為自增之后的值為5,8/5取整為1,即xx8/+n轉(zhuǎn)化為xx1,即把x1的值賦給x,x的值變?yōu)?。17.B 解析:輸入控制中第一個(gè)數(shù)要求以“2d”形式輸入,即要求輸入一個(gè)兩位的數(shù),而從鍵盤輸入的數(shù)為876

10、,所以從左到右取兩位數(shù)字87,即把87賦值給整型變量a,余下的6再賦值給浮點(diǎn)型變量b,自動(dòng)進(jìn)行類型轉(zhuǎn)換,b的值為6.000000,后面輸入的543則沒有賦值給變量。18.B19.B20.A21.A 解析:從鍵盤輸入數(shù)據(jù)的格式必須與輸入控制要求的格式一樣,B答案三個(gè)之間不要有空格;C答案用逗號(hào)分開是多余的;D答案格式不匹配。22.C23.C 解析:x乘以100是為了把x小數(shù)點(diǎn)后的兩位小數(shù)變?yōu)檎麛?shù),再加上0.5,如果小數(shù)點(diǎn)后一位大于等于5則會(huì)進(jìn)一位,如果小數(shù)點(diǎn)后一位小于5則不會(huì)出現(xiàn)進(jìn)位的情況,再對其進(jìn)行強(qiáng)制類型轉(zhuǎn)換,采用舍去法丟掉小數(shù)部分,即對x乘上100后的數(shù)實(shí)現(xiàn)了小數(shù)位到整數(shù)位的四舍五入。最后

11、再除以100.0,把數(shù)字變回原來的大小,整數(shù)與浮點(diǎn)數(shù)相除結(jié)果為浮點(diǎn)數(shù),即實(shí)現(xiàn)了要求。24.C25.A26.D 解析:第1個(gè)輸出語句要求ch以%c(字符)形式輸出所以為輸出“a”,以%d(整數(shù))形式輸出為,字符轉(zhuǎn)換為整型要使用ASCII碼所以為“97”,k沒有對應(yīng)的輸出符所以沒有輸出,第2個(gè)輸出語句要求以整型方式輸出k得到“12”。結(jié)果為“a,97,k=12”。27.C28.D二填空題1.結(jié)構(gòu)化2.一條語句 分號(hào)3.884.115.25 21 376.27.58.099.i=10,j=2010.1611.AB回車12.B 6513.3457914.12<CR>315.12. v.第三

12、章 選擇結(jié)構(gòu) 參考答案一、選擇題1、D 邏輯運(yùn)算符兩側(cè)運(yùn)算對象可以是任意合法的表達(dá)式,應(yīng)該是兩條語句,所以選D。2、A 此題主要是考查C語言中if語句的合法條件表達(dá)式描述,在C語言中“不等于”用“!=”描述而不是用“<>”描述。B、C、D選項(xiàng)都是合法的表達(dá)式。3、D if語句的表達(dá)式可以是任意合法的表達(dá)式4、D 此題主要是考邏輯運(yùn)算和關(guān)系運(yùn)算的優(yōu)先級(jí)別.只要掌握!、算術(shù)運(yùn)算和&&的優(yōu)先級(jí)別便可選對.這幾種運(yùn)算符的具體優(yōu)先級(jí)關(guān)系見見教材P188,附錄三。5、A 此題主要是考邏輯運(yùn)算符!、&&和|之間的優(yōu)先級(jí)別。!最高,&&次之,|最低。

13、先求得!a為0,所以不必計(jì)算!b的值,即!a&&!b的值為0,由c=0,!c=1,而0|1=1,所以選A。6、答案是BC語言的字符以其ASCII碼的形式存在,所以要確定某個(gè)字符是大寫字母,只要確定它的ASCII碼在A和Z之間就可以了,選項(xiàng)A和C符合要求。大寫字母的ASCII碼值的范圍為65到90,所以D選項(xiàng)符合要求,所以只有C是錯(cuò)誤的。7、D 此題考到了+運(yùn)算符以及邏輯運(yùn)算。當(dāng)計(jì)算機(jī)碰到a&&b時(shí),先計(jì)算表達(dá)式a的值,若為真才會(huì)計(jì)算表達(dá)式b的值,否則將不會(huì)去計(jì)算b的值,因?yàn)橐坏゛=0,則0&&b必為0;而a|b則正好是相反的,即先計(jì)算表達(dá)式a的值

14、,若a為假才會(huì)計(jì)算表達(dá)式b的值,否則將不會(huì)去計(jì)算b的值,因?yàn)橐坏゛=1,則1|b的值必為1,理解了這兩點(diǎn)后,我們在看題目:i+=1的值為1,此時(shí)i為2,所以計(jì)算&&后的表達(dá)式,首先計(jì)算+j=3的值為1,j的值為3,由上面的原理我們可知,|后面的表達(dá)式不用再計(jì)算,所以此時(shí)i,j,k的值分別為2,3,3。8、C 此題主要是從概念上考if和else的配對問題9、A 此題主要是從實(shí)際應(yīng)用上考if和else的配對問題,a=1,則!a的值是假,程序執(zhí)行第一個(gè)if下的第一個(gè)else語句,在判斷a=0顯然條件為假查看第二個(gè)if是否有其配對的else,發(fā)現(xiàn)沒有,則執(zhí)行最后一條printf語句輸出

15、b的值,因?yàn)樵谡麄€(gè)過程中程序沒有對b的值做任何改變,所以答案選擇A.10、D 此題主要是考if和else的一般形式。if后面的語句要么是單條語句,要么是由 擴(kuò)起來的復(fù)合語句,不能是if后有兩條語句的,所以本題程序在運(yùn)行的時(shí)候會(huì)出錯(cuò)。11、C 此題考到了關(guān)系運(yùn)算和邏輯運(yùn)算及一定數(shù)學(xué)知識(shí)。|x-y|<10可等價(jià)為-10<x-y<10,首先選項(xiàng)A表示x-y的絕對值小于10,與題中的數(shù)學(xué)關(guān)系一樣;將-10<x-y<10用邏輯表達(dá)式表示的話就是B選項(xiàng);而D選項(xiàng)只是數(shù)學(xué)變換,所以選擇C12、D 此題也是考到了真假條件的變換和if-else語句。A、B、C三項(xiàng)都是表示a為真時(shí)輸

16、出x,為假時(shí)輸出y,而D則是a為假時(shí)輸出x,為真時(shí)輸出y。13、D 此題考查了賦值表達(dá)式的一般格式,=的左邊是變量名,右邊是表達(dá)式,所以D項(xiàng)錯(cuò)誤。14、C 此題主要是考查邏輯值用整數(shù)值替代的結(jié)果,數(shù)0代表邏輯假,非零值代表邏輯真。15、C 此題主要是考查if-else-if和if語句。具體分析見教材第49頁例7。16、C此題主要是考查if-else-if以及關(guān)系表達(dá)式的運(yùn)算。首先判斷第一個(gè)條件a>b>c的值為0,所以不執(zhí)行第一條語句;在判斷第二個(gè)條件,c-1>=c表達(dá)式的結(jié)果為假,所以也不執(zhí)行其下面的語句,因此執(zhí)行最后一條語句,將輸出d+2的值為4 。17、C 此題主要是考查

17、條件表達(dá)式和條件運(yùn)算符。首先要注意條件表達(dá)式的結(jié)合方向,它是從右至左的(可參照附錄三) 第一個(gè)條件表達(dá)式的值為a,第二個(gè)條件表達(dá)式的值為c ,而c=6,所以答案選C 。18、A此題主要是考查if-else語句和條件表達(dá)式的轉(zhuǎn)化。只要理解了if-else語句和條件表達(dá)式的運(yùn)算規(guī)則的話,就很容易選出A。19、D 此題主要是考查在switch語句中break和default的作用及break的適用范圍。詳細(xì)說明可參看教材第三章 P53對switch的說明部分。20、 B 此題考查的是條件表達(dá)式求解問題。先看第一個(gè)條件表達(dá)式語句,a<b為真,所以k=b=2;再看第二個(gè)條件表達(dá)式語句,k>c

18、為假,所以k=k=2選 B21、C 此題考查邏輯與 && 的運(yùn)算工作特性,&&運(yùn)算的是從左至右,當(dāng)左邊表達(dá)式的值為假時(shí),右邊的表達(dá)式則不執(zhí)行,因本題中 k1=k1>k2的值為0亦為假,該表達(dá)式是一個(gè)賦值語句,且此時(shí)k1的值為0,因而右邊的表達(dá)式k2=k2>k1不執(zhí)行,因此K2的值沒有做任何改變。值依然是20,所以本題選選B。22、C 此題考查的是真假條件的等價(jià)問題。x-y為真表示x-y是非0的,也即x-y<0或x-y>0 即選C。23 答案是B滿足表達(dá)式(c>=2&&c<=6)的整型變量c的值是2,3,4,5,

19、6。當(dāng)變量c的值不為2,4,6時(shí),其值只能為3或5,所以表達(dá)式c!=3和c!=5中至少有一個(gè)為真,即不論c為何值,B選項(xiàng)中的表達(dá)式的值都為真,所以B選項(xiàng)正確。24 答案是D 舉個(gè)例子 如x=3帶入得出結(jié)果為0的選項(xiàng)是D選項(xiàng)。25 答案是D條件x=0|x=1為真,所以執(zhí)行y=1,然后執(zhí)行y=x*x-(x-2)*(x-2)=1-(-1)*(-1)=1-1=0,所以選擇A。26 答案是B此題考查if語句條件表達(dá)式后的語句塊區(qū)分問題。題中第一條if語句之后有兩條賦值語句,但他們不在一個(gè)復(fù)合語句之內(nèi),所以只有a=b是直接附屬于第一條if語句的,因此當(dāng)a=3,b=5,c=7,則a>b為0,程序不執(zhí)行

20、a=b,但執(zhí)行c=a 此時(shí)c的值是3,在第二條if語句的條件表達(dá)式中c!=a條件值為0,則不執(zhí)行c=b因此最終a、b、c的值為3、5、3,因此選B27 答案是DC語言的字符以其ASCII碼的形式存在,所以要確定某個(gè)字符是大寫字母,只要確定它的ASCII碼在A和Z之間就可以了,選項(xiàng)B的書寫格式錯(cuò)誤,而選項(xiàng)C不符合要求。大寫字母的ASCII碼值的范圍為65到90,所以A選項(xiàng)不符合要求,小寫字母的ASCII碼比大寫字母的ASCII碼大32,所以只有D是正確的。28 答案是B,此題考查三目運(yùn)算符的運(yùn)算特性。29 答案是B,此題考查switch語句運(yùn)算過程。30 答案是C,表達(dá)式y(tǒng)%3=0的值為1,所以

21、執(zhí)行下面的輸出語句,表達(dá)式y(tǒng)的值為8,所以輸出結(jié)果是8。選擇C。31 答案是C,表達(dá)式x%3的值為2,非0所以執(zhí)行下面的輸出語句,將x-的值8輸出,此時(shí)x的值變?yōu)?,然后再執(zhí)行下一個(gè)輸出語句,將-x的值6輸出,x的值也變?yōu)?,所以選擇C。32 答案是D,這是嵌套形式的switch語句,因?yàn)閎reak結(jié)構(gòu)影響較大,而此程序中的第一個(gè)case后沒有break語句,程序執(zhí)行時(shí),x=1,執(zhí)行內(nèi)嵌的switch語句,因y=0,執(zhí)行a+,使變量a的值為1并終止內(nèi)層switch結(jié)構(gòu),回到外層。程序繼續(xù)執(zhí)行case 2后面的語句a+;b+;,這使變量a,b的值分別為2和1,外層switch語句結(jié)束。所以此題選

22、擇D。33 答案是C,switch語句中開關(guān)條件必須是整型、字符型和float類型,此外強(qiáng)制類型轉(zhuǎn)換的格式C選項(xiàng)正確。二、填空題1、答案是:(x%3=0)&&(x%7=0)2、答案是: 4分析:程序中是一個(gè)ifelse結(jié)構(gòu)。分析時(shí)要理清if與else的配對情況。3、答案是:4,5,99分析:題中的重點(diǎn)在于兩個(gè)if結(jié)構(gòu),大家要注意兩點(diǎn):第一,如果if后面沒有花括號(hào),則它后面的第一條語句是它的結(jié)構(gòu)體,并且只有一條語句。(如果后面是一個(gè)結(jié)構(gòu),則整個(gè)結(jié)構(gòu)都屬于if結(jié)構(gòu)的結(jié)構(gòu)體)。第二,變量在不斷的被重新賦值,所以其值在不斷的變化。4、答案是:yes,分析:該題與第二題是同一回事。5、答

23、案是:1。分析:這個(gè)題還上一個(gè)ifelse結(jié)構(gòu),考查點(diǎn)仍然是考察考生是否能夠正確識(shí)別if后面括號(hào)里的表達(dá)式p=a!=0,根據(jù)運(yùn)算符的優(yōu)先級(jí)知道,這里應(yīng)該先算a!=0,這是一個(gè)邏輯運(yùn)算,a的值為5,所以a!=0為真,其邏輯值為1,將1賦值給p,所以條件為真,輸出p的值,為1。6、答案是:非零7、答案是:585858。分析:題中有三個(gè)if結(jié)構(gòu),注意,這三個(gè)if結(jié)構(gòu)是相互獨(dú)立的,是互不相關(guān)的,只要他們的條件成立,就要執(zhí)行其結(jié)構(gòu)體(后面的輸出語句)。通過鍵盤輸入,得a的值為58,所以a>50為真,輸出58;然后判斷a>40,仍然為真,再輸出58,最后判斷a>30,肯定為真,所以再輸出

24、58,連續(xù)三次輸出58。8、答案是:0。分析:本題的關(guān)鍵在于關(guān)系運(yùn)算符的運(yùn)算次序,a=5,b=4,c=3.a>b>c看起來是真的,但是這這是數(shù)學(xué)里面是這樣的,這里我們要一步一步的計(jì)算,先算a>b,a確實(shí)大于b,所以為真,邏輯值為1,后面的計(jì)算就變成了1>c,顯然為假,邏輯值為0,并將它賦值給d,所以最后輸出d的值為0。9、答案是:3。分析:這個(gè)題主要考察條件運(yùn)算符。程序要輸出(P/3>0"p/10:p%3)這個(gè)條件表達(dá)式的值。P為30,所以p/3=10,10>0顯然為真,所以整個(gè)表達(dá)式的值應(yīng)該是p/10的值,p/10得3。10、答案是:2 1。分析

25、:題中是一個(gè)switch嵌套結(jié)構(gòu)。里面的switch是case 1的語句,題的關(guān)鍵點(diǎn)在于這個(gè)語句(即里面的這個(gè)switch結(jié)構(gòu))的后面并沒有跳出整個(gè)結(jié)構(gòu)的break語句。所以,當(dāng)x=1,與case相配以后,執(zhí)行完后面的語句(即里面的這個(gè)switch結(jié)構(gòu)),然后沒有遇到break語句,所以并不跳出結(jié)構(gòu)體,而是繼續(xù)執(zhí)行case 2后面的語句。所以最后得到的結(jié)果應(yīng)該是2 1,而不是1 0。11、答案是:0。字符空格的ASCII碼不為0,所以本題中表達(dá)式!c的值為0,b=0&&1的結(jié)果顯然為0。12、答案是:2。此題考查邏輯或運(yùn)算的運(yùn)算特性,當(dāng)|運(yùn)算的左邊的表達(dá)式值為1時(shí)則不進(jìn)行右邊表

26、達(dá)式的計(jì)算。此外對于自增運(yùn)算a+的運(yùn)算規(guī)則是先使用在自增。13、答案是:-4。表達(dá)式!n的值為1,所以執(zhí)行x-=1后x=1;表達(dá)式m的值為非0值,所以執(zhí)行其后的語句x-=2后x的值為-1,表達(dá)式x的值也為非0,所以執(zhí)行其后的語句后x的值為-4,最后輸出x的值即為-4。14、答案是:*&。表達(dá)式c=5的值為真,所以表達(dá)式的值等于1,因此輸出符號(hào)“*”,然后執(zhí)行“break”,繼而去執(zhí)行“default:printf(“&”);”語句,輸出符號(hào)“&”。15、答案是:12 17。當(dāng)從鍵盤輸入x的值為12時(shí),程序自上而下執(zhí)行經(jīng)過三個(gè)if條件判斷第一個(gè)條件不滿足,第二、第三兩個(gè)都

27、滿足。因此最終輸出結(jié)果為12 17。16、答案是:a:b c:t1。條件表達(dá)式類似于if語句,根據(jù)“.”前面子表達(dá)式的邏輯值來判斷應(yīng)該計(jì)算“:”前面的子表達(dá)式還是后面的作為整個(gè)條件表達(dá)式的結(jié)果。題目要求輸出a、b、c3個(gè)變量中的最小值,所以當(dāng)a<b時(shí),應(yīng)該選a,否則選b,幫前一空應(yīng)填a:b。同理,后一空應(yīng)填c:t1。. v.第四章 循環(huán)結(jié)構(gòu) 參考答案一、選擇題:1. B 解析:a的值為1,a<6為真,執(zhí)行循環(huán)體,b的值加a后為3,a的值加2后為3,b的值與10求余運(yùn)算后值為3。 a的值為3,a<6為真,執(zhí)行循環(huán)體,b的值加a后為6,a的值加2后為5,b的值與10求余運(yùn)算后值為

28、6。 a的值為6,a<6為真,執(zhí)行循環(huán)體,b的值加a后為11,a的值加2后為7,b的值與10求余運(yùn)算后值為1。 a的值為7,a<6為假,不執(zhí)行循環(huán)體,直接輸出a、b的值為7,1。2. A 解析:k的值為5,進(jìn)入循環(huán),(-k)表達(dá)式的值為4(真),同時(shí)k的值改變?yōu)?,輸出表達(dá)式k-=3的值1,同時(shí)k的值為1。k為1,表達(dá)式(k)的值為0, 結(jié)束循環(huán)。3. A 解析:X=0,y=5,z=3,(z>0&&x<4)值為真,進(jìn)入循環(huán)體,y值為4,z值為2, x值為11 (z>0&&x<4)值為真,進(jìn)入循環(huán)體, y值為3,z值為1, x值

29、為22 (z>0&&x<4)值為真,進(jìn)入循環(huán)體, y值為2,z值為0, x值為33 (z>0&&x<4)值為假,結(jié)束循環(huán)。4 輸出x,y,z的值3,2,04. D 解析:當(dāng)K的值為3時(shí),只執(zhí)行case 3后面的語句n+=k,n的值為3;當(dāng)k的值為2時(shí),先執(zhí)行case 2后面的語句,但沒有break,所以不會(huì)退出,繼續(xù)執(zhí)行case 3后面的語句n+=k,n的值為5;當(dāng)k的值為1時(shí),先執(zhí)行case 1后面的語句n+=k,n的值為6,先執(zhí)行case 2后面的語句(沒有),繼續(xù)執(zhí)行case 3后面的語句n+=k,n的值為7。輸出n的值7。5. B

30、 解析: 在循環(huán)體中有“s+=1;”s的初始值為0,要讓s的值等于2必須是循環(huán)體執(zhí)行兩遍。當(dāng)循環(huán)提執(zhí)行兩遍后a的值等于-3,所以在n=-3的時(shí)候循環(huán)體執(zhí)行兩遍后條件表達(dá)試(a!=0)為假,會(huì)退出循環(huán)。6. B 解析: 程序開始時(shí),y=10,while循環(huán)中執(zhí)行y自減運(yùn)算,值的注意的是他的循環(huán)體只是一個(gè)空語句,則由于自減運(yùn)算y- 的特點(diǎn):先使用后自減,因?yàn)楫?dāng)y的值減為0時(shí),while循環(huán)結(jié)束,但y變量依然執(zhí)行自減運(yùn)算,此時(shí)y = -1。因此最終輸出的y的值為 y=-1,因此選B。7. A 解析:x3; 先執(zhí)行循環(huán)體,輸出表達(dá)式x-=2的值1,同時(shí)x的值也改變成1,再判斷表達(dá)式的值(!x),x的值

31、為1(真),(!x)為假,循環(huán)結(jié)束。8. B 解析:分析:B選項(xiàng)每次進(jìn)入循環(huán)體,都要先執(zhí)行p=1;即1賦值給p.所以不能求出5!的值。9. D解析:變量i每次增量為2,變化過程為:1->3->5->7->9,語句s+=1每次執(zhí)行使s增加的數(shù)為:2,4,6,8,10,所以s的值為自然數(shù)110中偶數(shù)的值。10. C 解析:C項(xiàng)s=s+1/n, 1/n首先運(yùn)算,n為整型變量,1也是整型變量,當(dāng)n=210時(shí),1/n的值為整數(shù)0,故C不正確11. B 分析過程與第6題類似。12. C13. A從鍵盤輸入 1 2 3 4 5 0后,程序從main函數(shù)開始執(zhí)行,先將1讀入到s變量中,

32、while的判斷條件s>0成立,則執(zhí)行循環(huán)體。循環(huán)體語句是一個(gè)switch結(jié)構(gòu)的語句,依據(jù)s的值去執(zhí)行相應(yīng)的case語句,直到碰到break語句跳出switch結(jié)構(gòu)。第一次s為1,執(zhí)行case 1: 此時(shí)輸出6,沒有碰到break語句,繼續(xù)執(zhí)行case 2:輸出5,緊接著碰到break語句跳出本次switch結(jié)構(gòu)。然后程序再次讀入整數(shù)2再次執(zhí)行while循環(huán)。此題需要理解switch語句的執(zhí)行過程。14. D 解析:在循環(huán)中當(dāng)x等于0,3,6,9時(shí)x%3等于0,這時(shí)會(huì)進(jìn)入if語句執(zhí)行printf語句,在輸出前x會(huì)先自加。屏幕上輸出14710。15. D 解析: 注意a變量在for循環(huán)的表

33、達(dá)式3和循環(huán)體中都有改變。16. 2345 解析:選擇中沒有此答案。本題注意的是在循環(huán)第一次進(jìn)入switch語句的時(shí)候是執(zhí)行的default后面的語句塊,由于沒有break,所以還會(huì)執(zhí)行case2:case4:后面的語句。17. A解析: 首先執(zhí)行+n,判斷條件表達(dá)式n<=0為假退出循環(huán)。B條件表達(dá)式1永遠(yuǎn)為真是無限循環(huán),C條件表達(dá)式n的值為10永遠(yuǎn)為真是無限循環(huán),D沒有條件表達(dá)式,所以沒有退出條件,是無限循環(huán)。此題要注意的是0為假,非0為真。18. B解析:此題考查for語句的嵌套以及if語句的執(zhí)行。此題輸出的結(jié)果是m=1。分析:第一次循環(huán) i=1,j=319. D 解析:第一次循環(huán)x

34、=8,x%3<>0,進(jìn)入if語句輸出x的值為8,然后x自減1,執(zhí)行continue立即進(jìn)行下次循環(huán)條件判斷。第二次循環(huán)x=6,x%3=0,不進(jìn)入if語句,執(zhí)行if語句后面的printf(“%d,”,-x),x先自減1再輸出得到5。第三次循環(huán)x=4,x%3<>0,進(jìn)入if語句輸出x的值為4,然后x自減1,執(zhí)行continue立即進(jìn)行下次循環(huán)條件判斷。第四次循環(huán)x=2,x%3<>0,進(jìn)入if語句,輸出x的值為2,然后x自減1,執(zhí)行continue立即進(jìn)行下次循環(huán)條件判斷。第五次循環(huán)x=0,判斷表達(dá)式x>0為假。結(jié)束循環(huán)輸出結(jié)果為8,5,4,2。答案D20.

35、 C解析:第一次循環(huán)a=0,a%2=0,進(jìn)入if語句的else部分輸出字符A,第二次循環(huán)a=1,a%2=1,進(jìn)入if語句輸出字符2, 第三次循環(huán)a=2,a%2=0,進(jìn)入if語句的else部分輸出字符C, 第四次循環(huán)a=3,a%2=1,進(jìn)入if語句輸出字符4, 第五次循環(huán)a=4,a%2=0,進(jìn)入if語句的else部分輸出字符E, 第六次循環(huán)a=5,a%2=1,進(jìn)入if語句輸出字符6,此時(shí)a=6,跳出循環(huán),因此最終結(jié)果輸出:A2C4E6。21. A22. B 解析:外層循環(huán)3次,i的值在內(nèi)層循環(huán)中依次為1,2,3內(nèi)層循環(huán)次數(shù)依次為3,2,1次。23. D 解析:代碼“if(n%3!=0) cont

36、inue;”無實(shí)際意義。當(dāng)n自加到4的時(shí)候結(jié)束循環(huán)。答案D。24. D解析: 表達(dá)式2為賦值語句k=1,條件永遠(yuǎn)為真,會(huì)進(jìn)入死循環(huán)。答案D25. A 解析:0%任何數(shù)等于0,所以第一次循環(huán)的時(shí)候就進(jìn)入了if語句退出了for循環(huán)。i=21,i<20為假,退出了while循環(huán)。a的值為21。26. D 解析:i的初值為0,第一次循環(huán)的時(shí)候滿足i<0,進(jìn)入第一個(gè)if語句,執(zhí)行continue直接進(jìn)行下次循環(huán),i的值沒有改變。第二次循環(huán)又重復(fù)了第一次循環(huán)的操作,所以是死循環(huán)。27. B解析: 控制每行輸出“*”號(hào)的過程。一共四行,每行輸出奇數(shù)個(gè)。二填空題:1. 7 解析:從鍵盤輸入14 6

37、3后程序?qū)?4賦給變量m,63賦值給變量n,最外層的while條件m!=n為真,進(jìn)入循環(huán)體。循環(huán)體語句是兩組while循環(huán),依次計(jì)算改變m、n的值直到m=n時(shí)程序結(jié)束,因此最終輸出m的值為7。2. 11解析:循環(huán)的判斷表達(dá)式為i<5,i的初值是1,所以i得值依次是1,2,3,4。sum=sum+1+2+3+4,sum的值等于11.答案是113. n=n/10 解析:此題的解法是先用輸入的數(shù)據(jù)%10可以得到個(gè)位數(shù),再讓輸入的數(shù)據(jù)除以10,使十位變成個(gè)位。循環(huán)使用上面的方法。當(dāng)只剩下個(gè)位的時(shí)候也就是n小于10的時(shí)候n/10等于0退出循環(huán)。所以填入的是“n=n/10”。4. 3 4解析:此題考

38、查for循環(huán)語句的執(zhí)行機(jī)制。表達(dá)式3在跳出循環(huán)前會(huì)執(zhí)行一遍,因此i的值最后為3。5. 5解析:for循環(huán)語句的循環(huán)體是空語句。6. 6 解析:此題屬于循環(huán)的嵌套。當(dāng)i=1時(shí),輸出0個(gè)號(hào),當(dāng)i=2時(shí),輸出1個(gè)號(hào),當(dāng)i=3時(shí),輸出2個(gè)號(hào),當(dāng)i=,4時(shí),輸出3個(gè)號(hào),共輸出6個(gè)號(hào)。7. 0 解析:getchar()只能獲得單個(gè)字符,輸入“1234567890”ch的值為1。循環(huán)條件為假,循環(huán)一次也沒有執(zhí)行。答案為:0 8. 23 解析:參考第3題。答案:543219. k<=n k+解析: 見書59,64頁while和for循環(huán)的執(zhí)行過程。答案:k<=n k+10. ACE解析:理解字符轉(zhuǎn)

39、化為整形數(shù)使用到ASCII碼,a的ASCII碼是97,f是102,A是65。答案是ACE11. k<=n12. 23 解析:此題需理解的是在switch中case后面沒有break的話會(huì)繼續(xù)執(zhí)行下一個(gè)case或default后面的語句。答案為2313. 1 3 2 解析:m=0,n=0,k=0,i=9當(dāng)i值為9時(shí),i<=11為真,執(zhí)行switch語句,(i/10)的值為0,匹配case 0,執(zhí)行m+,n+,再執(zhí)行break語句,跳出switch體,再執(zhí)行i+, i值為10;此時(shí)m值為1,n的值為1,k的值為0.當(dāng)i值為10時(shí),i<=11為真,執(zhí)行switch語句,(i/10)

40、的值為1,匹配default,執(zhí)行k+,n+,結(jié)束switch體,執(zhí)行i+,i值為11. 此時(shí)m值為1,n的值為2,k的值為1.當(dāng)i值為11時(shí),i<=11為真,執(zhí)行switch語句,(i/10)的值為1,匹配default,執(zhí)行k+,n+,結(jié)束 switch體,執(zhí)行i+,i值為12. 此時(shí)m值為1,n的值為3,k的值為2. i值為12時(shí),i<=11為假,結(jié)束for循環(huán)。最后輸出m,n,k的值132.14. i<10 i%3 解析:根據(jù)題意先得到100以內(nèi)所有個(gè)位是6的數(shù),在判斷哪些能被3整除。答案為i<10 i%3!=0。15. 074 解析:當(dāng)a的值為0時(shí),a<

41、20為真,則執(zhí)行b=a%10后b的值為0,執(zhí)行putchar函數(shù)后輸出字符0,for循環(huán)中表達(dá)式3中每次a遞增7,所以第二次循環(huán)時(shí),a的值為7,a<20為真,則執(zhí)行b=a%10后b的值為7,執(zhí)行putchar函數(shù)后輸出字符7。第三次a的值為14,a<20為真,則執(zhí)行b=a%10后b的值為4,執(zhí)行putchar函數(shù)后輸出字符4,此時(shí)執(zhí)行表達(dá)式3后a的值為21,a<20條件為假,循環(huán)結(jié)束。因此最終答案為輸出:074. v.第五章 函數(shù) 參考答案一 選擇題1.C 解析:在C程序的書寫時(shí),嚴(yán)格的縮進(jìn)要求可以增強(qiáng)程序的可讀性,但是不會(huì)影響程序的編譯于運(yùn)行。2.B 解析:在C程序中必須有

42、且僅有一個(gè)主函數(shù)為main函數(shù),它是程序的入口和出口。但是沒有規(guī)定它在程序中具體的位置。3.A4.B5.A 解析:函數(shù)的實(shí)參可以使被調(diào)用函數(shù)的調(diào)用語句。但是總之函數(shù)的實(shí)參個(gè)數(shù)之間用逗號(hào)隔開,個(gè)數(shù),類型分別于形參的一一對應(yīng)。6.B 解析:當(dāng)程序在函數(shù)體中執(zhí)行時(shí),遇到return語句結(jié)束函數(shù)的調(diào)用。即使函數(shù)體中有多個(gè)return語句,但是遇見第一個(gè)return語句時(shí)函數(shù)的調(diào)用就結(jié)束了,后面的return語句是不會(huì)再執(zhí)行的(也就是說即使有多條return語句,最終執(zhí)行的只有一句)。而返回值是void類型的函數(shù)一般有return語句是缺省的,如果要有不能return語句后面不能有返回值,可以是retu

43、rn;;如果函數(shù)體中沒有使用return語句,當(dāng)函數(shù)調(diào)用結(jié)束后,還是會(huì)回到調(diào)用處的。7.B 解析:其他解析同上。return語句中可以有表達(dá)式和常量,變量等。8.D.解析:調(diào)用語句可以出現(xiàn)在表達(dá)式,實(shí)參和當(dāng)一句話獨(dú)立存在,但是不能出現(xiàn)在形參中,形參一般情況下是變量。9.C 解析:考察的是函數(shù)的調(diào)用;其中的實(shí)參有兩個(gè),實(shí)參1為逗號(hào)表達(dá)式最終的值,實(shí)參2為自增表達(dá)式的值。10.C解析:f1(x,y)的作用是返回x、y中較大的,f2(x,y)的作用是返回x、y中較小的。d=f1(a,b)=f1(4,3)=4d=f1(d,c)=f1(4,5)=5e=f2(a,b)=f2(4,3)=3e=f2(e,c)

44、=f2(3,5)=3此時(shí)各值為a=4,b=3,c=5,d=5,e=3,f=a+b+c-d-e=4。所以答案d, f , e為5, 4, 311.A解析:函數(shù)不能嵌套調(diào)用,但是可以自己調(diào)用自己成為遞歸;被調(diào)用函數(shù)在調(diào)用之前可以先聲明,再調(diào)用,后定義;構(gòu)成C程序的基本單位是函數(shù)而不是語句。12.C 解析:fun1(a)=a2,fun2(x,y)=(int)(fun1(x)+fun1(y)=(int)( x2+ y2),所以fun1(1.1,2.0)=(int)(1.21+4.0)=(int)5.21=5由于w是double型的,所以w的值為5.0。13.C 解析:函數(shù)的值是單向傳遞的,只能是從實(shí)參

45、傳到形參,而且只有當(dāng)從實(shí)參傳到形參時(shí)才為形參分配一定的存儲(chǔ)空間。等函數(shù)調(diào)用結(jié)束后,這個(gè)空間就會(huì)被釋放掉。14.B解析:考察函數(shù)的調(diào)用。調(diào)用語句中的實(shí)參有兩個(gè),實(shí)參1為表達(dá)式2*a,其值為8,實(shí)參2為調(diào)用語句fun(b,c),在這個(gè)調(diào)用語句中又有兩個(gè)實(shí)參分別傳給fun函數(shù)的形參a和b,調(diào)用結(jié)束后返回的值為5;故實(shí)參2的最終值為5,再次調(diào)用函數(shù)fun,分別把8傳給a,把5傳給b,最后返回的結(jié)果值為6.故答案選B.15.C 解析:函數(shù)不能嵌套定義。改變形參的值不會(huì)影響實(shí)參的值。函數(shù)體中要使用C中的庫函數(shù),得包含定義其所在的頭文件。16.A 考察的是函數(shù)的聲明。在函數(shù)聲明時(shí),聲明是一句話,其中形參的類

46、型不能省略,但是形參名可以省略;聲明時(shí)形參名可以和定義時(shí)的形參名不相同,但是類型必須匹配;聲明時(shí)必須指出函數(shù)的返回值類型和名稱,這兩點(diǎn)必須與定義時(shí)的返回值類型和名稱一一對應(yīng)。17.B 解析:允許這種函數(shù)說明的方式存在。如果只在主函數(shù)中說明,則只能在主函數(shù)中調(diào)用f;如果在主函數(shù)以前說明,則包括主函數(shù)的所有函數(shù)都可以調(diào)用,如果同時(shí)主函數(shù)又說明了,則不影響。18.B19.C20.A 解析:程序的執(zhí)行總是從main函數(shù)開始,在main函數(shù)結(jié)束,無論main函數(shù)在程序的什么地方。21.D22.A 解析:函數(shù)f(int v,int w)的功能是將實(shí)參v和w進(jìn)行交換,但是實(shí)參值的變化對形參沒有影響,所以本題

47、中x,y,z中的值不發(fā)生變化。23.C 解析:本題考察的是函數(shù)的遞歸調(diào)用。在解決這類題時(shí),先找出何時(shí)被調(diào)用函數(shù)調(diào)用結(jié)束,然后確定被調(diào)用函數(shù)總共被調(diào)用了幾次。再分析最終的結(jié)果。24.B上面已經(jīng)分析過同類問題。25.A 考察的還是遞歸調(diào)用的問題。26.B.同時(shí)。27.A.解析:在主函數(shù)中確定循環(huán)的次數(shù)為三次,實(shí)參i的值分別為0,10.20.故調(diào)用f函數(shù)的次數(shù)為3次;故結(jié)果為1+101+401=503.28.B.解析:主函數(shù)中第一次調(diào)用fun函數(shù)時(shí)實(shí)參為3,故調(diào)用fun函數(shù)時(shí)在函數(shù)體中循環(huán)了3次,輸出了3個(gè)*;第二次調(diào)用fun函數(shù)時(shí)實(shí)參為4,故輸出了4個(gè)*;由此可以確定選擇B答案。29.B30.D

48、主函數(shù)的循環(huán)語句中對fun函數(shù)總共調(diào)用了4次,每次都返回形參a的值;只有在把值從實(shí)參傳給形參時(shí)才為形參分配存儲(chǔ)空間,等函數(shù)調(diào)用結(jié)束,這個(gè)空間會(huì)消失掉。所以形參a的值在每次調(diào)用時(shí)都為2,故最后主函數(shù)中的s的值為2*2*2*2=16.二填空題1.1.0,1.0,1.0解析:分別求出變量的初始值。a=a*x為的是求xn ,所以其初始值為1,b=b*i位的是求n!,所以其初始值為1,當(dāng)n=0時(shí),s=1,所以s的初始值為1。由于定義的是double型的數(shù)據(jù),所以答案為a=1.0,b=1.0,s=1.0;2.m=fun(a,4)+fun(b,4)-fun(a+b),4);解析:由程序可以看出fun(x,n

49、)=xn。fun(a,4)=a4, fun(b,4)=b4,fun(a+b,3)=(a+b)3,當(dāng)要計(jì)算m= a4+ b4+(a+b)3 時(shí),函數(shù)調(diào)用語句為m= fun(a,4)+ fun(b,4)+ fun(a+b,3);3. x,x*x+1解析:1)求f(x)的累加和,即為求f(0)+f(1)+ f(2)+ f(3)+ f(4)+,函數(shù)SunFun來實(shí)現(xiàn)此功能。括號(hào)中應(yīng)該填入累加的序號(hào)值,即為x。2)f(x)=x2+1,F(xiàn)(int x)函數(shù)來實(shí)現(xiàn)這個(gè)功能,所以填寫x*x+1。4. 5.0解析:fun1(a)=a2,fun2(x,y)=(int)(fun1(x)+fun1(y)=(int)(

50、 x2+ y2),所以fun1(1.1,2.0)=(int)(1.21+4.0)=(int)5.21=5由于w是double型的,所以w的值為5.0。5.1 3 解析:fun函數(shù)是一個(gè)遞歸函數(shù),主函數(shù)中調(diào)用的fun(3)共遞歸兩次,fun(3)中又調(diào)用fun(3/2)即fun(1),先輸出fun(1)中x的值,為1,然后再輸出fun(3)中x的值為3。所以結(jié)果為1 3。6. double max解析:通過程序可以看出,main函數(shù)中使用了max函數(shù),而其他地方?jīng)]有對max函數(shù)進(jìn)行說明。所以程序中應(yīng)該對max函數(shù)進(jìn)行說明。說明的格式為double max(double,double)。7.3,2

51、,2,3 解析:同課本本章第三節(jié)例1。8.2 5解析:同上面第5題相類似。9.5510.30 0. v.第六章 指針 參考答案一、選擇題1 答案:A 分析:本題主要考指針賦值,n2=n1;是把n2的值賦給n1,故根據(jù)指針賦值的定義可知選A,即把q所指對象的值賦給p所指對象。2 答案:B 分析:本題主要考指針定義,因?yàn)閜指向變量x,故輸出其值的時(shí)候應(yīng)該是x的值。3 答案:C 分析:本題主要考指針的定義和賦值,C前面是定義一個(gè)量a并賦值為10,后面定義一個(gè)指針,并把a(bǔ)的值賦給這個(gè)指針。4 答案:D5 答案:A分析:本題主要考的是指針的變量的賦值,在使用scanf()函數(shù)的時(shí)候,后面跟的是一個(gè)地址,

52、由于pa本身保存的是地址,故選A6 答案:D分析:本題主要考的指針的賦值及指向指針的指針的賦值,根據(jù)定義知選D。B的正確形式是*q2;C的正確形式應(yīng)該是q=&p。7 答案:C分析:本題主要考的是全局變量和局部變量,以及指針的用法,第一個(gè)f(&a)的返回值是5,第二個(gè)返回值是2。8 答案:A 分析:本題主要考的是變量自加,指針傳值,以及指針的賦值。通過第二行a=b可知p1,p2指向的變量的值相同,都指向了b所指的對象,也是p2所指的對象a,由于(*a)+;是實(shí)現(xiàn)a所指對象的自加,故由a變成b,故最終選A。9 答案:A 分析:本題主考NULL,一般來說當(dāng)我們把一個(gè)空值以整數(shù)的形式輸

53、出出來的時(shí)候,默認(rèn)的情況是0。10 答案:C11 答案:C 分析:本題主要考指針的指針,c先指向b,b是一個(gè)指針,它指向a,故c最終是指向a的,故其值是a中的值。12 答案:A 分析:本題主要考指針的賦值,我們不能把一個(gè)具體的值賦給一個(gè)指針變量。B選項(xiàng)是w,p指向同一對象。C是p指向a。D是把w所指對象的值賦給p所指對象。13 答案:B 分析:本題主要考指針傳值,p,q分別指向a,b,然而r會(huì)指向它們的較小值。14 答案:D 分析:在D中把一個(gè)整形變量的值賦給一個(gè)指針的地址,故而是錯(cuò)的。應(yīng)該寫成p=&a。15 答案:D16 答案:D17 答案:C 分析:本題主要考指針標(biāo)識(shí)符*和乘號(hào)*的

54、區(qū)別,*p=*p1*(*p2)中第1,2,4個(gè)*號(hào)是指針標(biāo)識(shí)符,而第三個(gè)是乘號(hào),故其運(yùn)算的結(jié)果是3。18 答案:A19 答案:A 分析:本題主要說的是函數(shù)的遞歸調(diào)用,函數(shù)fun()實(shí)現(xiàn)的功能是從1加到n,然后返回給主函數(shù)。20 答案:D分析:A不能把一個(gè)具體的值賦給一個(gè)指針變量。B q是指向指針的指針只能保存指針的地址。C同B。21 答案:D分析:A指針賦處初值時(shí)不能把一個(gè)具體的值賦給一個(gè)指針變量指向的地址。B語法錯(cuò)誤,C不能發(fā)地址賦給浮點(diǎn)型變量。22 答案:C分析:scanf()函數(shù)的輸入數(shù)據(jù)列表應(yīng)該是合法的地址表達(dá)式。23 答案:D分析:A中b需要預(yù)先定義,B中字符變量b只能接收單個(gè)字符。C中二級(jí)指針應(yīng)定義為*c。24 答案D25 答案:B二、填空題1 答案:8 4 分析:void f()函數(shù)里的x,y分別是一個(gè)指針變量和整型變量,指針x指向一個(gè)整型的變量,即指向主函數(shù)里的x,故在函數(shù)void f()里修改指針x的值,會(huì)影響到主函數(shù)里的x的值,但修改void f()里的y的值卻不會(huì)影響到主函數(shù)里的y的值。因?yàn)橹骱瘮?shù)x傳的是地址,y傳的是值。2 答案:d。 3 答案:35分析:p,q分別指向x,y,然后調(diào)用函數(shù)swap();它的功能是把兩個(gè)指針?biāo)赶虻膶ο蠼粨Q,原來a,b分別指向x,y,但交換后分別指向y,x,

溫馨提示

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

評(píng)論

0/150

提交評(píng)論