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

下載本文檔

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

文檔簡(jiǎn)介

C語言基礎(chǔ)知識(shí)一,選擇題1答案是AA對(duì)的B{}可以作為復(fù)合語句的標(biāo)志Cmain函數(shù)不是用戶命名的D分號(hào)是語句結(jié)束的標(biāo)志,肯定是語句的一部分做這個(gè)題目需要對(duì)書上的概念透徹的理解2答案是AA錯(cuò)誤用戶標(biāo)記符:命名時(shí),標(biāo)記符的選擇由用戶自定,但是不能與關(guān)鍵字相同,所以A選項(xiàng)錯(cuò)誤。這個(gè)題目考察用戶標(biāo)記符3答案是B用戶標(biāo)記符是標(biāo)記符,所以可以是有下劃線,但是中劃線不屬于字母,數(shù)字,下劃線其中一種。這個(gè)題目考察用戶標(biāo)記符的概念。4答案是Bdefine是預(yù)定義標(biāo)記符,而預(yù)定義標(biāo)記符可以是用戶標(biāo)記符,所以define可以是用戶標(biāo)記,if是關(guān)鍵字,而關(guān)鍵字不能是用戶標(biāo)記符,所以if不可以是用戶標(biāo)記符5答案是Dlong是關(guān)鍵字,參照附錄二注:6--13考察用戶標(biāo)記符概念6答案是DD答案以數(shù)字2開頭了,不符合標(biāo)記符定義7答案是CC答案以數(shù)字開頭了8答案是Dint是關(guān)鍵字9答案是B答案A是關(guān)鍵字,答案C是以數(shù)字開頭了,不符合概念,答案D出現(xiàn)了小數(shù)點(diǎn)10答案是A答案A出現(xiàn)了小數(shù)點(diǎn)11答案是C答案C以數(shù)字開頭了12答案是AB答案中float是關(guān)鍵字,C答案中3c以數(shù)字3開頭了,D答案中-5d中-不屬于字母,數(shù)字,下劃線中一種13答案是AB答案中-max中-錯(cuò)誤,C答案中3COM以字母3開頭了,D答案中int是關(guān)鍵字,不是用戶標(biāo)記符14答案是BA答案中15.后面不應(yīng)當(dāng)有點(diǎn),C答案中出現(xiàn)了逗號(hào),D中字母B有問題15答案是DVisualC++6.0中int類型的變量占的字節(jié)數(shù)為4。16答案是BB中出現(xiàn)了8,而八進(jìn)制只能有0到7組成17答案是D答案D中開頭是0不是o18答案是C答案A中E后面是整數(shù),0.5是小數(shù)答案B中E后面不能為空答案D中E前面不能為空本題目考察指數(shù)的表達(dá)形式19答案是C答案A中2.0有問題,不能為小數(shù)形式答案B中E前面不能為空答案D中E后面不能為空本題目考察指數(shù)的表達(dá)形式20答案是AB中八進(jìn)制中不能出現(xiàn)數(shù)字8,C中e后面不能是小數(shù),D中e后面不能為空21答案是BB中0.4是小數(shù),不對(duì)的22答案是CC中0.5是小數(shù),不對(duì)的23答案是D3.6-5/2+1.2+5%2=3.6-2+1.2+1=3.8本題目考察算術(shù)運(yùn)算符,需要注意整數(shù)除以整數(shù)結(jié)果只能是整數(shù)24答案是D%不能用于實(shí)型的計(jì)算25答案是DD答案中$不屬于字母,數(shù)字,下劃線26答案是AA答案是逗號(hào)表達(dá)式,B答案中x+1=y是賦值表達(dá)式,左邊只能是變量,而這里是x+1,同理答案C中x+10也是錯(cuò)誤的,在D答案中,考察的是強(qiáng)制類型轉(zhuǎn)換,對(duì)的的是(double)x/1027答案是A本題考察的是注釋需要注意的地方,具體解答見課本第2頁(yè)中間部分28答案是B答案A中n2沒有定義,答案C中在定義f之前不能使用它,答案D中E后面必須是整數(shù)29答案是C考察的是強(qiáng)制類型轉(zhuǎn)換,對(duì)的的是k%(int)f30答案是D本題目類似與第七課時(shí)的例一,解題方法是要抓住++m,--n,--m,表達(dá)式的值是變量變化之后的值,而n--表達(dá)式的值是變量n變化之前的值31答案是B本題目考察的是負(fù)整數(shù)與無符號(hào)正整數(shù)在計(jì)算機(jī)中存放的格式的同樣的,但表達(dá)的不同的兩個(gè)數(shù)32答案是CA答案中%運(yùn)算對(duì)象不能為實(shí)型,26.8錯(cuò)誤,B答案中考察的賦值運(yùn)算符,賦值運(yùn)算符左邊必須是變量,所以賦值運(yùn)算符左邊1+2錯(cuò)誤,同理答案D錯(cuò)誤33答案是C本題目考察的是課本第15頁(yè)的關(guān)于自加與自減運(yùn)算符的第一點(diǎn)說明,即增量運(yùn)算符的運(yùn)算對(duì)象只能是變量,而在C答案中++(i+1)中,i+1是表達(dá)式34答案是B本題目考察的是整數(shù)除以整數(shù)結(jié)果是整數(shù),在B答案中1/2結(jié)果是0,導(dǎo)致整個(gè)表達(dá)式的值是0,明顯是錯(cuò)誤的35答案是D對(duì)于++、--單目運(yùn)算符來說,其運(yùn)算對(duì)象可以是char型、int型和float型變量36答案是A本題目重要考察n++表達(dá)式的值是n變化之前的值,然后使n的值增長(zhǎng)137答案是Bc=a/b+0.4c=8/5+0.4c=1+0.4c=1.4由于c是int型的,所以c的值是1,做此題目需要仔細(xì)閱讀題目38答案是D(int)a+b/b=(int)5.5+2.5/2.5=5+1.000000=b=6.000000同樣a,b的類型是double型的39答案是Dlong和short不能互相修飾40答案是C標(biāo)記符中不能有$答案是CA選項(xiàng)中,在變量賦值時(shí)不能賦給表達(dá)式,而y*5是表達(dá)式;選項(xiàng)B中進(jìn)行強(qiáng)制類型轉(zhuǎn)換時(shí),類型標(biāo)記符要加上括號(hào),所以錯(cuò)誤;選項(xiàng)D中,%(求余運(yùn)算符)運(yùn)算對(duì)象只能是整形數(shù)。42答案是A選項(xiàng)A中,b變量還沒有定義43答案是C選項(xiàng)A中long是關(guān)鍵字;選項(xiàng)B中“-”符號(hào)不屬于字母、數(shù)字或下劃線;選項(xiàng)D中,int是關(guān)鍵字。44答案是B選項(xiàng)A中,八進(jìn)制數(shù)只能由0—7之間的數(shù)字組成;選項(xiàng)C,十六進(jìn)制數(shù)應(yīng)當(dāng)以0X開頭,并且由0—9以及a—f組成,Oabc不對(duì)的;選項(xiàng)D中10,000包含逗號(hào),不對(duì)的。45答案是BC語言的標(biāo)記符中只能包含字線、數(shù)字和下劃線,沒有連接符。46答案是C既然在內(nèi)存中,字符數(shù)據(jù)以ASCII碼存儲(chǔ),它的存儲(chǔ)形式就與整數(shù)的存儲(chǔ)形式類似。這樣使字符型數(shù)據(jù)和整型數(shù)據(jù)之間可以通用。一個(gè)字符數(shù)據(jù)既可以以字符形式輸出,也可以以整數(shù)形式輸出。以字符形式輸出時(shí),需要先將存儲(chǔ)單元中的ASCII碼轉(zhuǎn)換成相應(yīng)字符,然后輸出。以整數(shù)形式輸出時(shí),直接將ASCII碼作為整數(shù)輸出。也可以對(duì)字符數(shù)據(jù)進(jìn)行算術(shù)運(yùn)算,此時(shí)相稱于對(duì)它們的ASCII碼進(jìn)行算術(shù)運(yùn)算。47答案是D不同的計(jì)算機(jī)系統(tǒng)或者編譯系統(tǒng),對(duì)3種整數(shù)類型所占用的字節(jié)數(shù)有不同的規(guī)定。48答案是A選項(xiàng)B中求余運(yùn)算(%)的運(yùn)算對(duì)象必須是整型;選項(xiàng)C中,賦值運(yùn)算符(=)的左邊必須是變量,不能是常量或表達(dá)式;選項(xiàng)D與選項(xiàng)C同理。49答案是A++運(yùn)算符有前綴和后綴兩種形式,本題中的選項(xiàng)C就是前綴形式,其表達(dá)式的值為增1后的值,而選項(xiàng)A為后綴形式,其表達(dá)式的值為增1之前的值。而選項(xiàng)B和D的表達(dá)式都是k加1之后的值50答案是A 51答案是C選項(xiàng)A中將一個(gè)變量j的值賦給了一個(gè)表達(dá)式,這種寫法是錯(cuò)誤的,只能給變量賦值,而不能給常量和表達(dá)式賦值;選項(xiàng)B中強(qiáng)制類型轉(zhuǎn)換的格式使用犯錯(cuò),強(qiáng)制類型轉(zhuǎn)換時(shí),類型標(biāo)記符必須用括號(hào)括起來;選項(xiàng)D中,求余運(yùn)算符(%)的兩端必須是整形數(shù)。52答案是D字符常量是用單引號(hào)括起來的單個(gè)字符,所以選項(xiàng)B錯(cuò)誤;此外尚有一種特殊的字符專為控制設(shè)計(jì),稱為轉(zhuǎn)義字符,有三種轉(zhuǎn)義字符:一種是由一個(gè)“\”開頭加一個(gè)普通字符組成,代表一個(gè)字符。如’\’’表達(dá)一個(gè)單引號(hào)字符,所以選項(xiàng)D對(duì)的;’\\’表達(dá)一個(gè)斜杠字符,而選項(xiàng)C中的’\’則是錯(cuò)誤的;用“\”與其后的1~3位八進(jìn)制數(shù)字構(gòu)成的字符序列,表達(dá)ASCII碼等值于該八進(jìn)制數(shù)的字符;用“\x”與其后的1~2位十六進(jìn)制數(shù)字構(gòu)成的字符序列,表達(dá)ASCII碼等值于該十六進(jìn)制數(shù)的字符;所以選項(xiàng)A錯(cuò)誤。53答案是B字符常量是用單引號(hào)括起來的單個(gè)字符,所以選項(xiàng)A對(duì)的;此外尚有一種特殊的字符專為控制設(shè)計(jì),稱為轉(zhuǎn)義字符,有三種轉(zhuǎn)義字符:一種是由一個(gè)“\”開頭加一個(gè)普通字符組成,代表一個(gè)字符。如’\n’表達(dá)一個(gè)換行符,所以選項(xiàng)D對(duì)的;用“\”與其后的1~3位八進(jìn)制數(shù)字構(gòu)成的字符序列,表達(dá)ASCII碼等值于該八進(jìn)制數(shù)的字符,所以選項(xiàng)B錯(cuò)誤,由于9不是八進(jìn)制數(shù)字;用“\x”與其后的1~2位十六進(jìn)制數(shù)字構(gòu)成的字符序列,表達(dá)ASCII碼等值于該十六進(jìn)制數(shù)的字符;所以選項(xiàng)C對(duì)的。54答案是D大寫字母的ASCII碼值比小寫字母的ASCII碼值小3255答案是A選項(xiàng)A中的字符變量ch只能接受單個(gè)字符,‘a(chǎn)b’不是單個(gè)字符,所以錯(cuò)誤。56答案是Bcharx=’C’將一個(gè)大寫字母賦給了字符型變量x;然后通過x=x+32將x中字符的ASCII碼值加32,即為小寫字符’c’的ASCII碼值;然后將x以字符形式輸出,即為小寫字母c。57答案是A語句charx,y;定義兩個(gè)字符型變量x,y;然后通過x=’B’-‘A’+’a’將用大寫字母B的ASCII碼送去大寫字母A的ASCII碼,結(jié)果便為1,然后再加上小寫字每a的ASCII碼,結(jié)果就為小寫字母b的ASCII碼,然后再賦值給變量x;通過y=x+2,將變量x中的ASCII碼值加2,即變成小寫字母d的ASCII碼值再賦值給變量y;然后以數(shù)值形式輸出變量x中的ASCII碼值為98,再以字符形式輸出變量y中的字符為d。58答案是?B選項(xiàng)A中字符’0’的ASCII碼值為48,所以A的結(jié)果不為1;選項(xiàng)B中’\0’代表空值,空值NULL的ASCII碼值為0所以結(jié)果為1;選項(xiàng)C中字符’59答案是D假如要表達(dá)十六進(jìn)制字符,則要用’\x’開頭,所以選項(xiàng)A錯(cuò)誤;假如要表達(dá)八進(jìn)制,則’\0’開頭,后面跟1~3位的八進(jìn)制數(shù),八進(jìn)制數(shù)由0~7組成,不包含8,所以選項(xiàng)B錯(cuò)誤;用單引號(hào)括起來的單個(gè)字符才是字符常量,所以C錯(cuò)誤;而’\n’60答案是B?? 用單引號(hào)括起來的單個(gè)字符,稱為字符常量,所以選項(xiàng)B錯(cuò)誤。61答案是C先將c1變量中的字符的ASCII碼值輸出,即為65,將變量c2中字符的ASCII碼值減2后輸出,即為66。62答案是A我們知道異或運(yùn)算,只有兩個(gè)操作數(shù)不同,結(jié)果才為1。所以0^1=1,1^1=0,由此可推理,任何數(shù)與1進(jìn)行異或運(yùn)算都得它的相反數(shù);變量b中的高4位為1,所以要讓變量a的高4位取反,即可讓變量a和變量b進(jìn)行異或運(yùn)算。63答案是A變量c1和c2中的值相同,所以轉(zhuǎn)換成二進(jìn)制數(shù)后,相應(yīng)的二進(jìn)制位上的值也相同,當(dāng)兩值相同時(shí),只有進(jìn)行異或運(yùn)算,結(jié)果才為0,所以c1^c2值為0。所以本題的對(duì)的答案為A。64答案是A4|3轉(zhuǎn)換成相應(yīng)的二進(jìn)制數(shù)即100|011=111再轉(zhuǎn)換為十進(jìn)制數(shù)即為7;而4&3轉(zhuǎn)換成相應(yīng)的二進(jìn)制數(shù)即100&011=000,再轉(zhuǎn)換為十進(jìn)制數(shù)即為0;所以選擇A。65答案是Dx/y的值為1,z的值也為1,1和1求反進(jìn)行與運(yùn)算,結(jié)果一定為0。所以本題選擇D。66答案是D2+x=00000010+10100111=10101001;~3=~00000011=11111100;所以就相稱于10101001^11111100=01010101,所以選擇D。67答案是Da=0x3轉(zhuǎn)換為二進(jìn)制數(shù)即為00000011;b=a|0x8轉(zhuǎn)換為二進(jìn)制數(shù)即為00000011|00001000=00001011即b=11,b<<1即00001011<<1=00010110即c=22,所以本題選擇D。二,填空題1位012關(guān)鍵字預(yù)定義標(biāo)記符用戶標(biāo)記符384八十十六5intfloatdouble65+3.6/2=5+1.8=6.871516a++表達(dá)式的值是a變化之前的值,當(dāng)然a自身增長(zhǎng)了8把10賦給變量B??? 9123.460000?(int)(x*100+0.5)/100.0=(int)(12345.67+0.5)/100.0=(int)(12346.17)/100.0=12346/100.0=123.460000。103整個(gè)表達(dá)式是一個(gè)逗號(hào)表達(dá)式,變量n和i賦值為2后,通過++i將i的值增長(zhǎng)1變?yōu)椋?然后再通過i++為i增長(zhǎng)1,整個(gè)逗號(hào)表達(dá)式的值為i++的值,此時(shí)是后綴,所以整個(gè)i++表達(dá)式的值為3,而變量i的值為2。1111110111第11題沒有具體解析并且答案犯錯(cuò):~x^y<<1=~00000010^00000101<<1=11111101^00001010=11110111122? ?只有’\\’和’\b’是對(duì)的的13220.000000x=f*=n/=(c=50)是一個(gè)賦值表達(dá)式,它的順序是從右向左賦值,先執(zhí)行c=50,然后執(zhí)行n/=50即n=n/50=100/50=2,接著執(zhí)行f*=2即f=f*2=10*2=20.000000,最后再將值賦給變量x。輸出變量n和x的值,即為220.000000。14表達(dá)式a=(3*5,a+4)的括號(hào)中是一個(gè)逗號(hào)表達(dá)式,其結(jié)果是最后一個(gè)表達(dá)式的值,即將a+4=14的值賦給變量a。所以輸出結(jié)果為a=14。第二章順序結(jié)構(gòu)一選擇題1,答案是C隨意使用空語句會(huì)導(dǎo)致邏輯上出現(xiàn)錯(cuò)誤,不要隨便使用。2,答案是B語句必須以分號(hào)結(jié)尾,A,C,D表達(dá)式后面均沒有分號(hào)。3,答案是Cintx=13,y=4;說明x,y均為整型,所以x/y只取整數(shù)部分(舍去法),值為3,把3賦值給x,整個(gè)x=x/y表達(dá)式的值為左邊變量x的值,所以輸出為3。4,答案是Aa,b均為整型,a/b是取a÷b所得商的整數(shù)部分,所以是0,再把0賦值給c,所以是c的值是0。答案是DA注釋語句可以放在代碼的任何位置B將r定義為整型不會(huì)在編譯時(shí)犯錯(cuò),會(huì)自動(dòng)進(jìn)行類型轉(zhuǎn)換C變量s為浮點(diǎn)型,格式描述符%f時(shí)對(duì)的的Dπ是非法的變量答案是D(x,y)是逗號(hào)表達(dá)式,它的值只有一個(gè),所以格式說明符的個(gè)數(shù)和輸出項(xiàng)的個(gè)數(shù)是相等的。并且逗號(hào)表達(dá)式的值為最后一個(gè)表達(dá)式的值,最后一個(gè)表達(dá)式是y=2023,所以整個(gè)表達(dá)式的值是2023,因此輸出值為2023。答案是Am是十進(jìn)制整數(shù)以十進(jìn)制有符號(hào)的形式輸出,即照原樣輸32767,n=032767,032767是八進(jìn)制的整數(shù)以八進(jìn)制無符號(hào)形式輸出,去掉前面的0。見教材P348,答案是Cm,n的值都是十六進(jìn)制數(shù)0xabc,m-=n即是m=m-n,把m-n的值賦給m,即把0賦給m,再把m值以十六進(jìn)制無符號(hào)的形式輸出,輸出的十六進(jìn)制數(shù)不用在前面0x或者0X。見教材P359,答案是B表達(dá)式i--的值是在變量自減之前的值,i的初值為10,所以該表達(dá)式的值也為10;表達(dá)式j(luò)++的值是變量自加之后的值,j初值為1,所以該表達(dá)式在值是2。10,答案是Cm=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,答案是B在printf語句中,格式控制的個(gè)數(shù)只有一個(gè),即%d,而輸出項(xiàng)有兩項(xiàng),即a和b。而得到的結(jié)果應(yīng)當(dāng)只有一個(gè),所以應(yīng)當(dāng)輸出第一個(gè)變量的值,即變量a的值。12,答案是C第一個(gè)數(shù)據(jù)的輸出控制寬度是2位,但是x的值是102,占3位,要輸出的數(shù)據(jù)寬度大于規(guī)定的輸出寬度,所以按數(shù)據(jù)的實(shí)際寬度輸出,輸出102。第二個(gè)數(shù)據(jù)規(guī)定以十進(jìn)制形式輸出,輸出控制寬度是2,y的值為012,是八進(jìn)制數(shù),所以要轉(zhuǎn)換成十進(jìn)制數(shù)10后再輸出。13,答案是B表達(dá)式a=f/=c*=(x=6.5),按從右到左結(jié)合,先把6.5賦值給x,再執(zhí)行c=c*6.5,c的值變?yōu)?5,再執(zhí)行f=f/65,為浮點(diǎn)數(shù)的除法,f的值為1.53……,再把f的值賦給a,a為整型數(shù)據(jù),執(zhí)行強(qiáng)制類型轉(zhuǎn)換,a的值為1。a相應(yīng)的輸出格式為%d,即輸出1;c相應(yīng)的輸出格式為%d,輸出65,f相應(yīng)的輸出格式%3.1f,即輸出控制寬度為3位,保存小數(shù)點(diǎn)后一位小數(shù),即輸出1.5,x相應(yīng)的輸出格式也為%3.1f,輸出6.5。14,答案是Dfloat(yī)x=-123.456;說明x為單精度浮點(diǎn)數(shù)據(jù),單精度浮點(diǎn)數(shù)據(jù)相應(yīng)的輸出格式應(yīng)當(dāng)為%f。15,答案是Cm=(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é)合的原則;m++的值為m自增之前的值,所以執(zhí)行完x=-m++以后,x被賦值為-3;表達(dá)式x=x+8/++n中有加號(hào)除號(hào),先算8/++n,++n的值為自增之后的值為5,8/5取整為1,即x=x+8/++n轉(zhuǎn)化為x=x+1,即把x+1的值賦給x,x的值變?yōu)椋病?8,答案是DA輸入函數(shù)應(yīng)為scanf();B,C輸入數(shù)據(jù)列表必須是地址表達(dá)式;19,答案是A從鍵盤輸入數(shù)據(jù)的格式必須與輸入控制規(guī)定的格式同樣B答案三個(gè)之間不要有空格;C答案用逗號(hào)分開是多余的;D答案格式不匹配。20,答案是A格式控制規(guī)定輸入的兩個(gè)數(shù)據(jù)之間要用逗號(hào)隔開,A沒有逗號(hào)所以錯(cuò)誤,D兩個(gè)輸入數(shù)之間的回車換行可以忽略。21,答案是Cx乘以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)位的情況,再對(duì)其進(jìn)行強(qiáng)制類型轉(zhuǎn)換,采用舍去法丟掉小數(shù)部分,即對(duì)x乘上100后的數(shù)實(shí)現(xiàn)了小數(shù)位到整數(shù)位的四舍五入。最后再除以100.0,把數(shù)字變回本來的大小,整數(shù)與浮點(diǎn)數(shù)相除結(jié)果為浮點(diǎn)數(shù),即實(shí)現(xiàn)了規(guī)定。答案是C從鍵盤輸入數(shù)據(jù)的格式必須與輸入控制規(guī)定的格式同樣。答案是B輸入控制中第一個(gè)數(shù)規(guī)定以“%2d”形式輸入,即規(guī)定輸入一個(gè)兩位的數(shù),而從鍵盤輸入的數(shù)為876,所以從左到右取兩位數(shù)字87,即把87賦值給整型變量a,余下的6再賦值給浮點(diǎn)型變量b,自動(dòng)進(jìn)行類型轉(zhuǎn)換,b的值為6.000000,后面輸入的543則沒有賦值給變量。答案是D“%%”會(huì)輸出一個(gè)“%”,“d”會(huì)照原樣輸出,由于沒有格式說明,m,n無法輸出到屏幕。答案是D第1個(gè)輸出語句規(guī)定ch以%c(字符)形式輸出所認(rèn)為輸出“a”,以%d(整數(shù))形式輸出為,字符轉(zhuǎn)換為整型要使用ASCII碼所認(rèn)為“97”,k沒有相應(yīng)的輸出符所以沒有輸出,第2個(gè)輸出語句規(guī)定以整型方式輸出k得到“12”。結(jié)果為“a,97,k=12答案是Ba+b的結(jié)果為30,按照“a+b=%d\n”的輸出格式得到輸出結(jié)果“a+b=30”答案是Bprintf可以沒有輸出項(xiàng),沒有輸出項(xiàng)的printf只是沒有輸出內(nèi)容;整數(shù)不能以十二進(jìn)制輸出,getchar()只能讀入字符。答案是Agetchar()可以讀入空格符合回車符。二填空題1,一條語句分號(hào)2,88一方面將八進(jìn)制數(shù)0210轉(zhuǎn)化為十六進(jìn)制的數(shù)0X88,輸出格式說明要以十六進(jìn)制無符號(hào)的形式輸出,所以省略0X,直接輸出88。3,11把十進(jìn)制數(shù)轉(zhuǎn)化為八進(jìn)制數(shù),以無符號(hào)的形式輸出4,252137b為八進(jìn)制數(shù)025,c為十六進(jìn)制數(shù)0X25,一方面把b、c都轉(zhuǎn)化為十進(jìn)制的整數(shù),分別為21、37,按照輸出格式規(guī)定a、b、c以十進(jìn)制整數(shù)形式輸出,中間以空格分開,所以輸出為252137。5,n1=%d\nn2=%d除了n1,n2的值之外,還必須加入“n1=”“n2=”照原樣輸出的字符,很明顯在兩個(gè)數(shù)據(jù)之間還加了換行符。6,i=10,j=20<回車>格式控制中加入了格式說明以外的其他字符,則在輸入數(shù)據(jù)時(shí)這些字符也要同樣輸入。輸入格式控制為i=%d,j=%d,所以則應(yīng)當(dāng)從鍵盤輸入i=10,j=207,261a為十進(jìn)制數(shù)177轉(zhuǎn)化為八進(jìn)制的數(shù)為0261,以無符號(hào)的形式輸出為26116a的初值為0,在表達(dá)式a+=(a=8)中,a一方面被賦值為8,再執(zhí)行操作a=a+a,所以a最后被賦值為16,即輸出a的值為16printf(“a=%d,b=%d”,a,b);B66B在ASCII碼中派在A的后面A為65,那么B為66。10012為八進(jìn)制數(shù),轉(zhuǎn)換為十進(jìn)制為10。1234在scanf函數(shù)中指定了寬度為2,輸入123456,a=12,b=34,后面的567無效。12程序運(yùn)營(yíng)時(shí)輸入12,getchar()函數(shù)只能接受單個(gè)字符,所以ch1=’1’,ch2=’2n1=ch1-‘0,轉(zhuǎn)化為ASCII碼計(jì)算n1=50-49,n1的值為1。n2=n1*10+(ch2-‘0’第三章選擇結(jié)構(gòu)一、選擇題1、D此題重要是考語句的特性。一條語句只包含一個(gè)分號(hào),D項(xiàng)有兩個(gè)分號(hào),應(yīng)當(dāng)是兩條語句,所以選D。2、C此題重要是考真假條件的等價(jià)。題目中的E為非0時(shí)條件為真,為0時(shí)為假。那么把非0和0帶到選項(xiàng)中可知,C項(xiàng)正好是E為0時(shí)表達(dá)式為真,非0時(shí)為假,所以選C。3、D任意合法的表達(dá)式都可以作為邏輯運(yùn)算符的運(yùn)算對(duì)象4、D此題重要是考邏輯運(yùn)算和關(guān)系運(yùn)算的優(yōu)先級(jí)別.只要掌握!、算術(shù)運(yùn)算和&&的優(yōu)先級(jí)別便可選對(duì).這幾種運(yùn)算符的具體優(yōu)先級(jí)關(guān)系見見教材P188,附錄三。5、A此題重要是考邏輯運(yùn)算符!、&&和||之間的優(yōu)先級(jí)別。!最高,&&次之,||最低。先求得!a為0,所以不必計(jì)算!b的值,即!a&&!b的值為0,由c=0,!c=1,而0||1=1,所以選A。6、A此題重要是考了邏輯、關(guān)系和算術(shù)運(yùn)算,純熟掌握邏輯運(yùn)算、關(guān)系運(yùn)算和算術(shù)運(yùn)算的優(yōu)先級(jí)別后,就不難了。A選項(xiàng)中!a為0,所以!a==1為假,那么就不用計(jì)算&&后面的表達(dá)式了,由于0與任何數(shù)均為假;B項(xiàng)中先計(jì)算出a<b為假,則(a<b)&&!c也為假,而0||1=1;C項(xiàng)中a和b均為真,所以a&&b的值為1;D項(xiàng)中先計(jì)算出(b+b)&&(c-a)=1,又a=2,2||1=1所以選A。7、D此題考到了++運(yùn)算符以及邏輯運(yùn)算。當(dāng)計(jì)算機(jī)碰到a&&b時(shí),先計(jì)算表達(dá)式a的值,若為真才會(huì)計(jì)算表達(dá)式b的值,否則將不會(huì)去計(jì)算b的值,由于一旦a=0,則0&&b必為0;而a||b則正好是相反的,即先計(jì)算表達(dá)式a的值,若a為假才會(huì)計(jì)算表達(dá)式b的值,否則將不會(huì)去計(jì)算b的值,由于一旦a=1,則1||b的值必為1,理解了這兩點(diǎn)后,我們?cè)诳搭}目:i++==1的值為1,此時(shí)i為2,所以計(jì)算&&后的表達(dá)式,一方面計(jì)算++j==3的值為1,j的值為3,由上面的原理我們可知,||后面的表達(dá)式不用再計(jì)算,所以此時(shí)i,j,k的值分別為2,3,3。8、D此題和題2非常的相似,也是考真假條件的轉(zhuǎn)換,其中D項(xiàng)中只有k為0時(shí),!k%2==1才成立,顯然和A、B、C三項(xiàng)不同。9、C此題重要是考if和else的配對(duì)問題。見教材P51。10、D此題重要是考if和else的一般形式。if后面的語句要么是單條語句,要么是由{}擴(kuò)起來的復(fù)合語句,不能是if后有兩條語句的,所以本題程序在運(yùn)營(yíng)的時(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表達(dá)x-y的絕對(duì)值小于10,與題中的數(shù)學(xué)關(guān)系同樣;將-10<x-y<10用邏輯表達(dá)式表達(dá)的話就是B選項(xiàng);而D選項(xiàng)只是數(shù)學(xué)變換,所以選擇C12、D此題也是考到了真假條件的變換和if-else語句。A、B、C三項(xiàng)都是表達(dá)a為真時(shí)輸出x,為假時(shí)輸出y,而D則是a為假時(shí)輸出x,為真時(shí)輸出y。13、D此題考察了賦值表達(dá)式的一般格式,=的左邊是變量名,右邊是表達(dá)式,所以D項(xiàng)錯(cuò)誤。14、C此題重要是考察邏輯運(yùn)算符||,當(dāng)計(jì)算機(jī)碰到a||b,先計(jì)算表達(dá)式a的值,若為假才會(huì)計(jì)算表達(dá)式b的值,否則將不會(huì)去計(jì)算b的值,由于一旦a=1,則0||b必為0。題中b>a為真,所以(n=b>a)為1,那么將不會(huì)去計(jì)算m=a<b的值,k被并賦值1,所以m仍然為0。15、C此題重要是考察if-else-if和if語句。具體分析見教材第49頁(yè)例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此題重要是考察條件表達(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ī)則的話,就很容易選出A19、D此題重要是考察在switch語句中break和default的作用及break的合用范圍。具體說明可參看教材第三章P53對(duì)switch的說明部分。20、B此題考察的是條件表達(dá)式求解問題。先看第一個(gè)條件表達(dá)式語句,a<b為真,所以k=b=2;再看第二個(gè)條件表達(dá)式語句,k>c為假,所以k=k=2選B21、A此題考察的是條件表達(dá)式的求解順序。參照附錄三可知,它的結(jié)合方向是自右至左,所以先求得右邊一個(gè)條件表達(dá)式的值為2,再求得左邊一個(gè)的值為1,即選A22、C此題考察的是真假條件的等價(jià)問題。x-y為真表達(dá)x-y是非0的,也即x-y<0或x-y>0即選C23答案是BC語言的字符以其ASCII碼的形式存在,所以要擬定某個(gè)字符是大寫字母,只要擬定它的ASCII碼在’A’和’Z’之間就可以了,選項(xiàng)A和C符合規(guī)定。大寫字母的ASCII碼值的范圍為65到90,所以D選項(xiàng)符合規(guī)定,所以只有C是錯(cuò)誤的。24答案是B滿足表達(dá)式(c>=2&&c<=6)的整型變量c的值是2,3,4,5,6。當(dāng)變量c的值不為2,4,6時(shí),其值只能為3或5,所以表達(dá)式c!=3和c!=5中至少有一個(gè)為真,即不管c為什么值,B選項(xiàng)中的表達(dá)式的值都為真,所以B選項(xiàng)對(duì)的。25答案是A條件x==0||x==1為真,所以執(zhí)行y=1,然后執(zhí)行y=x*x-(x-2)*(x-2)=1-(-1)*(-1)=1-1=0,所以選擇A。26答案是B當(dāng)表達(dá)式EXP為非0值時(shí)條件成立,即執(zhí)行語句i++;當(dāng)EXP等于0時(shí)執(zhí)行語句j--;。這就等同于條件表達(dá)式“(EXP!=0)?i++:j—”。所以本題選擇B。27答案是DC語言的字符以其ASCII碼的形式存在,所以要擬定某個(gè)字符是大寫字母,只要擬定它的ASCII碼在’A’和’Z’之間就可以了,選項(xiàng)B的書寫格式錯(cuò)誤,而選項(xiàng)C不符合規(guī)定。大寫字母的ASCII碼值的范圍為65到90,所以A選項(xiàng)不符合規(guī)定,小寫字母的ASCII碼比大寫字母的ASCII碼大32,所以只有D是對(duì)的的。28答案是D奇數(shù)和2求余一定不為0,所以當(dāng)x為奇數(shù)時(shí),x%2==0是不成立的,值為0,此題選擇D。29答案是B兩個(gè)if語句的判斷條件都不滿足,程序只執(zhí)行了c=a這條語句,所以變量c的值等于3,變量b的值沒有變化,程序輸出的結(jié)果是3,5,3。所以本題選擇B。30答案是C表達(dá)式y%3==0的值為1,所以執(zhí)行下面的輸出語句,表達(dá)式—y的值為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語句,由于break結(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í)行case2后面的語句a++;b++;,這使變量a,b的值分別為2和1,外層switch語句結(jié)束。所以此題選擇D。33答案是Dbreak與continue語句都可用于switch語句中。選擇D。二、填空題1、答案是:10200分析:多數(shù)同學(xué)得到的答案是10201,顯然是沒有弄清楚第三條賦值語句:c=(a%b<1)||(a/b>1).這是將后面一個(gè)邏輯表達(dá)式的值給c,那么關(guān)于邏輯表達(dá)式的考題,無非就是考察運(yùn)算符的優(yōu)先級(jí),也就是說先算哪個(gè),后算哪個(gè)的問題。在這個(gè)題里面,先計(jì)算第一個(gè)圓括號(hào)里面的內(nèi)容,a%b的值是10,所以10<1為假;a/b的值為0,0>1為假。在邏輯或運(yùn)算的時(shí)候,兩個(gè)運(yùn)算對(duì)象都為假,則結(jié)果為假。所以c的值為0.答案是:102002、答案是:1分析:程序中是一個(gè)if—else結(jié)構(gòu)。這個(gè)題最容易犯錯(cuò)的地方在于if的條件,注意,里面的是c=a是一個(gè)賦值表達(dá)式,不是將c與a的值進(jìn)行比較。所以條件為真,輸出賦值以后c的值,為1。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、答案是:1分析:這個(gè)題還上一個(gè)if—else結(jié)構(gòu),考察點(diǎn)仍然是考察考生是否可以對(duì)的辨認(rèn)if后面括號(hào)里的表達(dá)式p=a!=0,根據(jù)運(yùn)算符的優(yōu)先級(jí)知道,這里應(yīng)當(dāng)先算a!=0,這是一個(gè)邏輯運(yùn)算,a的值為5,所以a!=0為真,其邏輯值為1,將1賦值給p,所以條件為真,輸出p的值,為1。6、答案是:20,0分析:見第3題分析。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,肯定為真,所以再輸出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的確大于b,所認(rèn)為真,邏輯值為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)當(dāng)是p/10的值,p/10得3。10、答案是:21分析:題中是一個(gè)switch嵌套結(jié)構(gòu)。里面的switch是case1的語句,題的關(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í)行case2后面的語句。所以最后得到的結(jié)果應(yīng)當(dāng)是21,而不是10。11、答案是:0字符空格的ASCII碼不為0,所以本題中表達(dá)式!c的值為0,b=0&&1的結(jié)果顯然為0。12、答案是:1執(zhí)行“j=!ch&&i++”時(shí),一方面判斷j=?。悖璧闹?由于ch=’$’不為0,所以j=!ch=0,編譯便不再計(jì)算表達(dá)式i++的值,i的值不變?nèi)詾?。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、答案是:1由于在條件表達(dá)式(a<b)a:b中,比較表達(dá)式a<b為真,所以x的值為a的值等于1。后面兩個(gè)條件表達(dá)式中的比較表達(dá)式都真,所以最終x的值等于1。16、答案是:a:bc:t1條件表達(dá)式類似于if語句,根據(jù)“?”前面子表達(dá)式的邏輯值來判斷應(yīng)當(dāng)計(jì)算“:”前面的子表達(dá)式還是后面的作為整個(gè)條件表達(dá)式的結(jié)果。題目規(guī)定輸出a、b、c3個(gè)變量中的最小值,所以當(dāng)a<b時(shí),應(yīng)當(dāng)選a,否則選b,幫前一空應(yīng)填a:b。同理,后一空應(yīng)填c:t1。第四章循環(huán)結(jié)構(gòu)選擇題:答案:BN的值為10,n>7為真,執(zhí)行循環(huán)體,n的值減1后為9,輸出n的值9N的值為9,n>7為真,執(zhí)行循環(huán)體,n的值減1后為8,輸出n的值8N的值為8,n>7為真,執(zhí)行循環(huán)體,n的值減1后為7,輸出n的值7N的值為7,n>7為假,結(jié)束循環(huán)。答案:Ak的值為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)。答案:AX=0,y=5,z=3,(z>0&&x<4)值為真,進(jìn)入循環(huán)體,y值為4,z值為2,x值為1(z>0&&x<4)值為真,進(jìn)入循環(huán)體,y值為3,z值為1,x值為2(z>0&&x<4)值為真,進(jìn)入循環(huán)體,y值為2,z值為0,x值為3(z>0&&x<4)值為假,結(jié)束循環(huán)。輸出x,y,z的值3,2,0答案:D分析:當(dāng)K的值為3時(shí),只執(zhí)行case3后面的語句n+=k,n的值為3;當(dāng)k的值為2時(shí),先執(zhí)行case2后面的語句,但沒有break,所以不會(huì)退出,繼續(xù)執(zhí)行case3后面的語句n+=k,n的值為5;當(dāng)k的值為1時(shí),先執(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í)行兩遍。當(dāng)循環(huán)提執(zhí)行兩遍后a的值等于-3,所以在n=-3的時(shí)候循環(huán)體執(zhí)行兩遍后條件表達(dá)試(a!=0)為假,會(huì)退出循環(huán)。答案:A分析:t值為1,s的值為0。從鍵盤中輸入-3后,n的值為-3.先執(zhí)行循環(huán)體。執(zhí)行s=s+t;s的值為1,執(zhí)行t=t-2;t的值為-1.再判斷表達(dá)式的值t!=n為真,再次執(zhí)行循環(huán)體。執(zhí)行s=s+t;s的值為0,執(zhí)行t=t-2;t的值為-3.再判斷表達(dá)式的值t?。絥為假,結(jié)束do..while循環(huán)。最后輸出s的值0。答案:A分析:x=3;先執(zhí)行循環(huán)體,輸出表達(dá)式x-=2的值1,同時(shí)x的值也改變成1,再判斷表達(dá)式的值(!x),x的值為1(真),(!x)為假,循環(huán)結(jié)束。答案:B分析:B選項(xiàng)每次進(jìn)入循環(huán)體,都要先執(zhí)行p=1;即1賦值給p.所以不能求出5!的值答案:D分析:變量i每次增量為2,變化過程為:1->3->5->7->9,語句s+=1每次執(zhí)行使s增長(zhǎng)的數(shù)為:2,4,6,8,10,所以s的值為自然數(shù)1~10中偶數(shù)的值。答案:C分析:C項(xiàng)s=s+1/n,1/n一方面運(yùn)算,n為整型變量,1也是整型變量,當(dāng)n=2…10時(shí),1/n的值為整數(shù)0,故C不對(duì)的答案:A執(zhí)行第一次循環(huán)時(shí),a=7,b=4,a!=b為真繼續(xù)循環(huán)。第二次循環(huán)a=3,b=1,a?。絙為真繼續(xù)循環(huán)。第三次循環(huán)a=2,b=1,a!=b為真繼續(xù)循環(huán)。第四次循環(huán)a=1,b=1,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的值17。答案:D在循環(huán)中當(dāng)x等于0,3,6,9時(shí)x%3等于0,這時(shí)會(huì)進(jìn)入if語句執(zhí)行printf語句,在輸出前x會(huì)先自加。屏幕上輸出14710。答案:D分析:continue語句會(huì)提前結(jié)束本次循環(huán)體的執(zhí)行,不會(huì)結(jié)束整個(gè)for語句的執(zhí)行。答案:2345選擇中沒有此答案。解析:本題注意的是在循環(huán)第一次進(jìn)入switch語句的時(shí)候是執(zhí)行的default后面的語句塊,由于沒有break,所以還會(huì)執(zhí)行case2:case4:后面的語句。答案:A本題答案為A解析: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為真。答案:Ado-while循環(huán)先執(zhí)行后判斷,先執(zhí)行循環(huán)體中的printf語句輸出n的值0,在while(i++)中i先執(zhí)行再自加,所以while(i++)的等于while(0)為假退出循環(huán)。輸出結(jié)果為“0,0”答案:D分析:第一次循環(huán)x=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。答案DC第一次循環(huán)y=9,y%3=0,進(jìn)入if語句y先自減,輸出y的值為8。第二次循環(huán)y=7,y%3<>0,進(jìn)入下次循環(huán)。第三次循環(huán)y=6,y%3=0,進(jìn)入if語句y先自減,輸出y的值為5。第四次循環(huán)y=4,y%3<>0,進(jìn)入下次循環(huán)。第五次循環(huán)y=3,y%3=0,進(jìn)入if語句y先自減,輸出y的值為2。第六次循環(huán)y=1,y%3<>0,進(jìn)入下次循環(huán)。第七次循環(huán)y=0,判斷表達(dá)式y(tǒng)>0為假結(jié)束循環(huán)。輸出結(jié)果為8,5,2。答案CB在第一層循環(huán)中,當(dāng)i自加到值等于3的時(shí)候才會(huì)進(jìn)入第二層循環(huán)55%3=1。輸出m的值為1.B外層循環(huán)3次,i的值在內(nèi)層循環(huán)中依次為1,2,3內(nèi)層循環(huán)次數(shù)依次為3,2,1次。D代碼“if(n%3!=0)continue;”無實(shí)際意義。當(dāng)n自加到4的時(shí)候結(jié)束循環(huán)。答案DB需要填入的實(shí)際是每行輸出“*”的個(gè)數(shù),從圖形看到每行“*”的個(gè)數(shù)是行數(shù)的兩倍減一,i可以代表行數(shù)。所以填入的是“2*i-1”A0%任何數(shù)等于0,所以第一次循環(huán)的時(shí)候就進(jìn)入了if語句退出了for循環(huán)。i=21,i<20為假,退出了while循環(huán)。a的值為21。26.Di的初值為0,第一次循環(huán)的時(shí)候滿足i<0,進(jìn)入第一個(gè)if語句,執(zhí)行continue直接進(jìn)行下次循環(huán),i的值沒有改變。第二次循環(huán)又反復(fù)了第一次循環(huán)的操作,所以是死循環(huán)。填空題:答案:-1分析:此題的循環(huán)體是省略了大括號(hào)的空語句;,x的初值是2;執(zhí)行while語句,先判斷表達(dá)式的值,(x--)的值為1(真),同時(shí)x的值減1變?yōu)椋?再執(zhí)行循環(huán)體(空語句;),再判斷表達(dá)式(x--)的值,表達(dá)式的值為0,同時(shí)x值減1,變?yōu)椋?,由于表達(dá)式的值為0(假),循環(huán)結(jié)束。最后輸出x的值-1。答案:11循環(huán)的判斷表達(dá)式為i<5,i的初值是1,所以i得值依次是1,2,3,4。sum=sum+1+2+3+4,sum的值等于11.答案是11答案: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.答案:0分析:i的值從5變化到0時(shí),for語句中的第二個(gè)表達(dá)式都為真。t=5*4*3*2*1*0=0。最后輸出i的值為0。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è)字符,輸入“”ch的值為‘1’。循環(huán)條件為假,循環(huán)一次也沒有執(zhí)行。答案為:08.答案:23分析:參考第3題。答案:543219.答案:k<=nk++分析:見書59,64頁(yè)while和for循環(huán)的執(zhí)行過程。答案:k<=nk++10.答案:ACE分析:理解字符轉(zhuǎn)化為整形數(shù)使用到ASCII碼,‘a(chǎn)’的ASCII碼是97,‘f’是102,‘A’是65。答案是ACE11.答案:120分析:i的值是1,sum的值是1,執(zhí)行while循環(huán)。①i<=5為真,sum的值為1,i自加1,值為2。②i<=5為真,sum的值為2,i自加1,值為3。③i<=5為真,sum的值為6,i自加1,值為4。④i<=5為真,sum的值為24,i自加1,值為5。⑤i<=5為真,sum的值為120,i自加1,值為6。⑥i<=5為假,結(jié)束循環(huán)。輸出sum=120。12.答案:23分析:此題需理解的是在switch中case后面沒有break的話會(huì)繼續(xù)執(zhí)行下一個(gè)case或default后面的語句。答案為2313.答案:132分析:m=0,n=0,k=0,i=9①當(dāng)i值為9時(shí),i<=11為真,執(zhí)行switch語句,(i/10)的值為0,匹配case0,執(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)的值為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<10i%3根據(jù)題意先得到100以內(nèi)所有個(gè)位是6的數(shù),在判斷哪些能被3整除。答案為i<10i%3!=0。第五章函數(shù)一、選擇題:1.答案:B分析:在C語言中,函數(shù)可以在任何地方出現(xiàn),而main函數(shù)作為函數(shù)中的一類,沒有特殊的限制和規(guī)定,故也可以在任何地方出現(xiàn)。2.答案:B?分析:C語言默認(rèn)規(guī)定答案:D分析:選項(xiàng)A中”abc”和C中的’65’答案:A分析:sin(1/2)會(huì)當(dāng)作sin(0)解決。實(shí)參的類型決定了重載函數(shù)的選擇。答案:D分析:函數(shù)的調(diào)用不可以作為一個(gè)函數(shù)的形參。答案:D分析:fun(a,b)的作用是返回a、b中較大的。fun(x,y)=fun(3,8)=8,r=fun(fun(x,y),2*z)=fun(8,12)=12答案:C分析:f1(x,y)的作用是返回x、y中較大的,f2(x,y)的作用是返回x、y中較小的。d=f1(a,b)=f1(4,3)=4?d=f1(d,c)=f1(4,5)=5?e=f2(a,b)=f2(4,3)=3 e=f2(e,c)=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,3答案:A分析:c程序的基本單位是函數(shù)。函數(shù)中不可以嵌套定義函數(shù)。main()函數(shù)可以放在任意位置。被調(diào)用的函數(shù)只要在調(diào)用之前說明了即可。答案:B分析:fun(x,y)的作用是求x、y的和。fun(a+c,b)=a+c+b=15,(int)fun(a+c,b)=(int)15=15。fun((int)fun(a+c,b),a-c)=fun(15,-6)=9。答案:D分析:fun(x,y)的作用是選擇x,y里面較小的一個(gè)。fun(9,8)=8,fun(8,7)=7;fun(fun(a,b),fun(b,c))=fun(8,7)=7答案: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。答案:A分析:函數(shù)的說明有其自己的格式,應(yīng)當(dāng)涉及函數(shù)類型、函數(shù)名、以及形參類型,形參名可有可無,但是一定要統(tǒng)一,形參名隨便取。答案:C分析:允許這種函數(shù)說明的方式存在。假如只在主函數(shù)中說明,則只能在主函數(shù)中調(diào)用f;假如在主函數(shù)以前說明,則涉及主函數(shù)的所有函數(shù)都可以調(diào)用,假如同時(shí)主函數(shù)又說明了,則不影響。答案:D分析:函數(shù)的形參不可以傳給相應(yīng)的實(shí)參。答案:D分析:形式參數(shù)的改變不影響實(shí)參。所以本題是一個(gè)迷惑題,不需要看函數(shù)體的內(nèi)容。答案:C分析:C語言中改變函數(shù)形參的值,不會(huì)改變相應(yīng)實(shí)參的值;函數(shù)可以返回地址值,當(dāng)函數(shù)沒有指定返回值類型時(shí),默認(rèn)返回類型為void型,C語言的函數(shù)不能嵌套定義,所以本題選擇C。答案:A分析:本題答案為A,程序的執(zhí)行總是從main函數(shù)開始,在main函數(shù)結(jié)束,無論main函數(shù)在程序的什么地方。答案:A分析:在C語言中,函數(shù)返回值的類型取決于函數(shù)定義時(shí)在函數(shù)首部所說明的函數(shù)類型。答案:C分析:函數(shù)f(intv,intw)的功能是將實(shí)參v和w進(jìn)行互換,但是實(shí)參值的變化對(duì)形參沒有影響,所以本題中x,y,z中的值不發(fā)生變化。答案:C分析:由于fun(intx)函數(shù)是一個(gè)遞歸函數(shù),所以主函數(shù)中的調(diào)fun(3)通過1次遞歸調(diào)用,其過程可以描述為fun(3)=3*3-f(3-2)=9-fun(1)=9-3=6。答案:D分析:在內(nèi)存中,實(shí)參單元與形參單元是不同的單元。在C語言中,僅在調(diào)用函數(shù)時(shí),給形參分派存儲(chǔ)單元,并將實(shí)參相應(yīng)的值傳遞給形參,調(diào)用結(jié)束后,形參單元被釋放,實(shí)參單元仍保存并維持原值。故本題答案為D。答案:C分析:變量a,b,c的初始值分別為1,2,3。因此逗號(hào)表達(dá)式“a++,b++,a+b”值等于5,表達(dá)式c++的值為3,這樣主函數(shù)main()中調(diào)用子函數(shù)的表達(dá)式為fun(5,3);其返回值等于8。所以變量sum的值等于8。本題選擇C。二、填空題:1.答案:a=1.0,b=1.0,s=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,3);分析:由程序可以看出fun(x,n)=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.答案:xx*x+1分析:1)求f(x)的累加和,即為求f(0)+f(1)+f(2)+f(3)+f(4)+……,函數(shù)SunFun來實(shí)現(xiàn)此功能。括號(hào)中應(yīng)當(dāng)填入累加的序號(hào)值,即為x。2)f(x)=x2+1,F(intx)函數(shù)來實(shí)現(xiàn)這個(gè)功能,所以填寫x*x+1。答案:-ffun(10)分析:函數(shù)的作用為計(jì)算m=1-2+3-4+5-6+7-8+9-10,事實(shí)上為計(jì)算m=1*1+(-1)*2+1*3+(-1)*4+……+1*9+(-1)*10,在循環(huán)體中,i為1,2,3…..f為1的符號(hào)。每循環(huán)一次,f的符號(hào)應(yīng)當(dāng)變換一下,所以變換的語句為f=-f。當(dāng)n=1時(shí),計(jì)算的是m=1;當(dāng)n=2時(shí),計(jì)算的是m=1-2……由于計(jì)算的是m=1-2+3-4+5-6+7-8+9-10,所以答案為n=10,即fun(10)。答案:9分析:1)函數(shù)的意思為f(x,y)=(y-x)*xf(3,4)=(4-3)*3=3f(3,5)=(5-3)*3=6??2)d=f(3,6)=(6-3)*3=9.答案:doublemax分析:通過程序可以看出,main函數(shù)中使用了max函數(shù),而其他地方?jīng)]有對(duì)max函數(shù)進(jìn)行說明。所以程序中應(yīng)當(dāng)對(duì)max函數(shù)進(jìn)行說明。說明的格式為doublemax(double,double)。答案:3,2,2,3分析:1)x=2,y=3,當(dāng)調(diào)用fun(x,y)時(shí),相稱于執(zhí)行fun(2,3)。x=x+y;? x=2+3=5;y=x-y;??y=5-3=2;x=x-y; x=5-2=3;此時(shí)x,y的值為3,2,所以輸出的結(jié)果為3,2。2)在main函數(shù)中,實(shí)參不會(huì)由于形參的改變而改變,x,y的值仍為2,3,所以所以輸出的結(jié)果為2,3.8、答案:13分析: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é)果為13。9、答案:m=9k=14 i=5j=5分析:為變量i和j賦初值為4,調(diào)用fun(i++,++j)即fun(4,5),在fun函數(shù)中計(jì)算m和k的值,m+=k即m=m+k=4+5=9,k+=m即k=k+m=5+9=14,分別輸出m和k的值,即輸出m=9,k=14;然后到主函數(shù)中輸出自增1后的i和j的值,即i=5,j=5第六章指針一、選擇題1答案:A分析:本題重要考指針賦值,n2=n1;是把n2的值賦給n1,故根據(jù)指針賦值的定義可知選A,即把q所指對(duì)象的值賦給p所指對(duì)象。2答案:B分析:本題重要考指針定義,由于p指向變量x,故輸出其值的時(shí)候應(yīng)當(dāng)是x的值。3答案:C分析:本題重要考指針的定義和賦值,C前面是定義一個(gè)量a并賦值為10,后面定義一個(gè)指針,并把a的值賦給這個(gè)指針。4答案:C分析:本題重要考指針的定義及賦值,開始時(shí)使p指向a,q指向b,把它們的值互換,然后再顯示。故得對(duì)的答案C。5答案:C分析:本題重要考函數(shù)指針的定義,函數(shù)前面的*號(hào)表求返回值是指針類型,void表達(dá)返回?zé)o值弄的。故選C。6答案:A分析:本題重要考的是指針的變量的賦值,在使用scanf()函數(shù)的時(shí)候,后面跟的是一個(gè)地址,由于pa自身保存的是地址,故選A7答案:D分析:本題重要考的指針的賦值及指向指針的指針的賦值,根據(jù)定義知選D。B的對(duì)的形式是**q=2;C的對(duì)的形式應(yīng)當(dāng)是q=&p。8答案:C分析:本題重要考的是全局變量和局部變量,以及指針的用法,第一個(gè)f(&a)的返回值是5,第二個(gè)返回值是2。9答案:A分析:本題重要考的是變量自加,指針傳值,以及指針的賦值。通過第二行a=b可知p1,p2指向的變量的值相同,都指向了b所指的對(duì)象,也是p2所指的對(duì)象’a’,由于(*a)++;是實(shí)現(xiàn)a所指對(duì)象的自加,故由’a’變成’b’,故最終選A。10答案:A分析:本題主考NULL,一般來說當(dāng)我們把一個(gè)空值以整數(shù)的形式輸出出來的時(shí)候,默認(rèn)的情況是0。11答案:C分析:本題考的是指針變量的賦值,雖然p沒有賦值,表達(dá)沒有指向某個(gè)具體的對(duì)象,但事實(shí)上系統(tǒng)會(huì)讓它隨機(jī)的指向存儲(chǔ)單元里的一個(gè)對(duì)象,那么它的返回值應(yīng)當(dāng)是所指存儲(chǔ)單元中的值。12答案:B分析:本題重要考函數(shù)中參數(shù)變量的定義,在B中連續(xù)定義兩個(gè)變量,這在函數(shù)中是不可以的。13答案:C分析:本題重要考指針的指針,c先指向b,b是一個(gè)指針,它指向a,故c最終是指向a的,故其值是a中的值。14答案:A分析:本題重要考指針的賦值,我們不能把一個(gè)具體的值賦給一個(gè)指針變量。B選項(xiàng)是w,p指向同一對(duì)象。C是p指向a。D是把w所指對(duì)象的值賦給p所指對(duì)象。15答案:B分析:本題重要考指針傳值,p,q分別指向a,b,然而r會(huì)指向它們的較小值。16答案:D分析:在D中把一個(gè)整形變量的值賦給一個(gè)指針的地址,故而是錯(cuò)的。應(yīng)當(dāng)寫成p=&a。17答案:D分析:本題重要考調(diào)用函數(shù)時(shí)指針傳值和一般的變量的傳值區(qū)別。指針通過地址傳值,而變量是直接傳值。c指針指向b,故對(duì)c指針里面的值的修改等于直接修改b中的值。18答案:D分析:本題重要考指針的定義及指針變量的值的輸出方式,指針b指向a,故輸出其值是511。19答案:C分析:本題重要考指針標(biāo)記符*和乘號(hào)*的區(qū)別,*p=*p1*(*p2)中第1,2,4個(gè)*號(hào)是指針標(biāo)記符,而第三個(gè)是乘號(hào),故其運(yùn)算的結(jié)果是3。20答案:C分析:本題主考函數(shù)的嵌套調(diào)用和數(shù)據(jù)的類型轉(zhuǎn)換,注意的是(int)(a+b),所以得到5.0。21答案:A分析:本題重要說的是函數(shù)的遞歸調(diào)用,函數(shù)fun()實(shí)現(xiàn)的功能是從1加到n,然后返回給主函數(shù)。22答案:D分析:A不能把一個(gè)具體的值賦給一個(gè)指針變量。Bq是指向指針的指針只能保存指針的地址。C同B。23答案:D分析:A指針賦處初值時(shí)不能把一個(gè)具體的值賦給一個(gè)指針變量指向的地址。B語法錯(cuò)誤,C不能發(fā)地址賦給浮點(diǎn)型變量。24答案:C分析:指針只能存放地址。25答案:C分析:scanf()函數(shù)的輸入數(shù)據(jù)列表應(yīng)當(dāng)是合法的地址表達(dá)式。26答案:D分析:A中b需要預(yù)先定義,B中字符變量b只能接受單個(gè)字符。C中二級(jí)指針應(yīng)定義為**c。答案D27答案:D分析:代碼“s+=2”是錯(cuò)誤的,s是數(shù)組的首地址,但S是常量不能改變它的值。28答案:A分析:B的對(duì)的格式是“p=&n”,C的對(duì)的格式是“scanf(“%d”,p)”,D的對(duì)的格式是“printf(“%d\n”,*p)”。答案A二、填空題1答案:84分析:voidf()函數(shù)里的x,y分別是一個(gè)指針變量和整型變量,指針x指向一個(gè)整型的變量,即指向主函數(shù)里的x,故在函數(shù)voidf()里修改指針x的值,會(huì)影響到主函數(shù)里的x的值,但修改voidf()里的y的值卻不會(huì)影響到主函數(shù)里的y的值。由于主函數(shù)x傳的是地址,y傳的是值。2答案:k*k分析:由于k是一個(gè)指針,故第一個(gè)空應(yīng)當(dāng)填k。由于第二個(gè)空要輸出指針k所指對(duì)象的值,故應(yīng)當(dāng)填*k表達(dá)該指針?biāo)笇?duì)象的值3答案:35分析:p,q分別指向x,y,然后調(diào)用函數(shù)swap();它的功能是把兩個(gè)指針?biāo)赶虻膶?duì)象互換,本來a,b分別指向x,y,但互換后分別指向y,x,所以并不把指向的對(duì)象的值互換。函數(shù)返回后,p,q仍然分別指向x,y。故其值不變。4答案:n=n/10分析:把n除以10,每執(zhí)行一次就可以把數(shù)的陽(yáng)未位去掉,由于兩個(gè)整數(shù)相除,不會(huì)保存小數(shù),故最低位會(huì)丟掉,并且把數(shù)縮小到十分之一。然后依次從個(gè)位到最高位把數(shù)字輸出。答案:35第七章數(shù)組一、選擇題1答案:B分析:此題考察一維數(shù)組的定義,一維數(shù)組的說明中,下標(biāo)必須為正的整型常量,不能為變量,在一維數(shù)組的初始化中,指出在單純的定義時(shí)不能省略數(shù)組的長(zhǎng)度。2答案:B分析:一方面i=0時(shí),判斷i++〈7成立,進(jìn)入循環(huán)體,但此時(shí)i=1,p[1]=12不滿足if語句,不執(zhí)行j+=p[i]。按照此方法,得到j(luò)=p[2]+p[4]+p[6]=45,即B對(duì)的。3答案:D分析:一方面i=0<7&&p[0]%2!=0,滿足循環(huán)條件,執(zhí)行k=k+p[0],即k=11,然后執(zhí)行i++,再進(jìn)行判斷,滿足循環(huán)條件,k=11+p[1],所以k=24,執(zhí)行i++,i=2,,再進(jìn)行判斷,此時(shí)不滿足循環(huán)條件,循環(huán)結(jié)束,輸出k值,為24。4答案:A分析:此題重要考察循環(huán)嵌套,第一個(gè)循環(huán)體執(zhí)行完是將x[0],x[1],x[2],x[3],進(jìn)行從大到小排序,第二個(gè)循環(huán)體執(zhí)行完是將x[4],x[5],x[6],x[7]進(jìn)行從小到大排序。5答案:B分析:此題考察二維數(shù)組的定義,單純定義二維數(shù)組時(shí),行和列都不能缺省。在初始化過程中,列不能缺省,賦值的行數(shù)和列數(shù)不能超過數(shù)組的行數(shù)和列數(shù)。6答案:D分析:同上題分析同樣。7答案:D分析:同上。8答案:C分析:此題分別輸出m[2][0],m[2][1],m[2][2]。9答案:A分析:此題考察在for循環(huán)后,i=0,i=1時(shí),執(zhí)行if語句,使得a[1][0],a[1][1]的值分別減1,而當(dāng)i=2時(shí),執(zhí)行else語句,a[1][2]=1。因此輸出a[0][1]+a[1][1]+a[1][2]=2+4+1=7;10答案:B分析:此題考察for循環(huán),計(jì)算aa[0][1],aa[1][1],aa[2][2],aa[3][1]的和,即為19。11答案:C分析:由于自增長(zhǎng)運(yùn)算符(++)的優(yōu)先級(jí)別高于取地址運(yùn)算符(&),所以選項(xiàng)C無法表達(dá)aa[1]的地址,其他三個(gè)選項(xiàng)都可以。12答案:D分析:數(shù)組名實(shí)際代表數(shù)組的首地址,也就是數(shù)組中第一個(gè)元素a[0]的地址,那么a+i就代表數(shù)組a中下標(biāo)為i的元素a[i]的地址,*(a+i)就代表a[i]這個(gè)元素,所以*(*(a+i))的表達(dá)是錯(cuò)誤的,此題選擇D。13答案:A分析:本題答案為A,指針p指向數(shù)組a中第一個(gè)元素,此時(shí)p中存放的是數(shù)組中a[0]的地址,將指針p+2不是單純的加一個(gè)整數(shù)2,而是將指針后移,兩個(gè)存儲(chǔ)單元,指向了a[2]這個(gè)數(shù)組元素,所以輸出的是a[2]中的值3。14答案:B分析:此題答案為B,通過程序我們可知指針p指向數(shù)組中元素a[3],指針q指向元素a[5],輸出*p+*q即輸出a[3]+a[5]=10,所以選擇B。15答案:C分析:本題通過循環(huán)控件用y累計(jì)p[1]+p[2]的值,由于指針p指向數(shù)組中元素a[1]所以p[1]即數(shù)組中元素a[2],p[2]即數(shù)組中元素a[3],a[2]+a[3]=6+8=14。16答案:A分析:我們讓指針p指向數(shù)組a中第一個(gè)元素,然后通過循環(huán)控制輸出指針p每次后移一個(gè)存儲(chǔ)單元,并輸出其所指存儲(chǔ)單元中的內(nèi)容,而指針p指向數(shù)組a,所以就是輸出數(shù)組a中的每一個(gè)元素,選擇A。17答案:D分析:*p表達(dá)指針p所指存儲(chǔ)單元中的內(nèi)容,所以(*p)++表達(dá)將p所指存儲(chǔ)單元中的內(nèi)容加1,不符合題目規(guī)定,其他三項(xiàng)都符合規(guī)定,所以選擇D。18答案:A分析:為指針賦一個(gè)NULL值,就是指針具有一個(gè)空值,讓一個(gè)空指針去訪問一個(gè)存儲(chǔ)單元時(shí),將會(huì)得到一個(gè)犯錯(cuò)的信息。19答案:D分析:變量p是一個(gè)指針,所以我們只能為其賦一個(gè)地址值,不能為其賦一個(gè)表達(dá)式或一個(gè)常量值,所以A、B、C三個(gè)選項(xiàng)不符合規(guī)定,D選項(xiàng)中,a代表數(shù)組a的首地址,是一個(gè)地址值,所以D對(duì)的。20答案:C分析:讓指針p指向數(shù)組中元素a[3],那p[5]即數(shù)組中元素a[7],所以b中的值是8。21答案:B分析:與上一題同理,指針s指向數(shù)組元素a[3],s[2]即數(shù)組中元素a[4],即為0。22答案:C分析:數(shù)組名t代表數(shù)組的首地址,所以*(t+i)就代表t[i]元素中的值,通過循環(huán)控制求累加和s,事實(shí)上s=a[0]+a[2]+a[4]+a[6]+a[8]=1+3+5+7+9=25。23答案:B分析:讓指針p指向二維數(shù)組a的第一個(gè)元素,那么可用p[0]代表a[0][0],用p[1]代表a[0][1]…………,用p[8]代表a[2][2],通過循環(huán)為數(shù)組a中的每一個(gè)元素賦了一個(gè)值。輸出a[1][2]即p[5]的值為6。24答案:D分析:讓指針p指向二維數(shù)組a的第一個(gè)元素,那么可用p[0]代表a[0][0],用p[1]代表a[0][1]…………,用p[8]代表a[2][2],通過循環(huán)為數(shù)組a中的每一個(gè)元素賦了一個(gè)值。再通過循環(huán)輸出a[1][0]、a[1][1]、a[1][2],即p[3]、p[4]、p[5]的值,所以輸出的是3、4、5。25答案:B分析:在這里我們通過(*ptr)[2]定義了一個(gè)行指針ptr,ptr存放的是具有兩個(gè)整型元素的一維數(shù)組的首地址。a是二維數(shù)組名,就是數(shù)組的首地址,ptr=a+i就代表,將數(shù)組中第i行的首地址賦給行指針ptr。能過第一個(gè)循環(huán)控制,為第0行和第1的首元素賦值,也就是為a[0][0]和a[1][0]賦值,輸入的是1、2、3,但是只賦給兩個(gè)元素,所以取前面兩個(gè)值,所以輸出時(shí),a[0][0]的值為1,a[1][0]的值為2,其他的默認(rèn)都為0。26答案:B分析:int*p[3]是表達(dá)定義一個(gè)指針數(shù)組,數(shù)組名為p,其中包含3個(gè)元素,每個(gè)元素都是一個(gè)指向int類型的指針。27答案:D分析:通過(*p)[5]則定義了一個(gè)行指針,存放長(zhǎng)度為5的一維數(shù)組的指針,通過p=c,讓p指向二維數(shù)組c,那么p[i]就是指向數(shù)組c中第i行的指針。p[i]+n就是數(shù)組中第i行,第n列的地址,假如要引用第i行第n列的元素,就可以表達(dá)成*(p[i]+n),所以本題選擇D。28答案:D分析:二維數(shù)組元素的地址可以用表達(dá)式&a[i][j]求得,也可以通過每行的首地址來表達(dá),第i行的首地址可以通過a[i]來表達(dá),a[i]+j就表達(dá)第i行第j列的地址,等價(jià)于*(a+i)+j,假如要引用第i行第j列的元素,則可表達(dá)成*(a[i]+j),*(*(a+i)+j)或(*(a+i))[j]所以本題選擇D。29答案:C分析:p是一個(gè)指針數(shù)組,通過p[0]=a[1]可知p[0]中存放的是數(shù)組a中第1行的首地址,所以p[0]+1就代表第1行第1列元素的地址,所以*(p[0]+1)就代表元素a[1][1]。30答案:C分析:通過(*ps)[5]則定義了一個(gè)行指針,存放長(zhǎng)度為5的一維數(shù)組的指針,通過ps=s,讓ps指向二維數(shù)組s,那么ps[i]就是指向數(shù)組s中第i行的指針,可用ps[i][j]或*(ps[i]+j)表達(dá)第i行第j列的元素。所以選項(xiàng)C對(duì)的。31答案:A分析:通過(*pa)[3]定義了一個(gè)行指針pa指向二維數(shù)組a,這樣p[i][j]就表達(dá)a[i][j],通過循環(huán)語句控制將a[1][0]和a[1][1]中的值分別減1變?yōu)?和4,給a[1][2]賦值為1。a[0][1]+a[1][1]+a[1][2]=2+4+1=7,所以本題選擇A。32答案:B分析:循環(huán)共執(zhí)行3次:i=0并且j=0時(shí):t=t+b[0][b[0][0]]=1+b[0][0]=1+0=1,當(dāng)i=1并且j=1時(shí):t=t+b[1][b[1][1]]=1+b[1][1]=1+1=2,當(dāng)i=2并且j=2時(shí):

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論