校園網(wǎng)1100分新視野教育全國計算機等級考試二級C語言筆試習題集答案及解析_第1頁
校園網(wǎng)1100分新視野教育全國計算機等級考試二級C語言筆試習題集答案及解析_第2頁
校園網(wǎng)1100分新視野教育全國計算機等級考試二級C語言筆試習題集答案及解析_第3頁
校園網(wǎng)1100分新視野教育全國計算機等級考試二級C語言筆試習題集答案及解析_第4頁
校園網(wǎng)1100分新視野教育全國計算機等級考試二級C語言筆試習題集答案及解析_第5頁
已閱讀5頁,還剩177頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第一章 C語言基礎知識一,選擇題!答案是AA正確B0可以作為復合語句的標志Cmain函數(shù)不是用戶命名的D分號是語句結束的標志,肯定是語句的一部分做這個題目需要對書上的概念透徹的理解答案是AA錯誤用戶標識符:命名時,標識符的選擇由用戶自定,但是不能與關鍵字相同,所以A選項錯誤。這個題目考察用戶標識符答案是B用戶標識符是標識符,所以可以是有下劃線,但是中劃線不屬于字母,數(shù)字,下劃線其中一種。這個題目考察用戶標識符的概念。答案是Bdefine是預定義標識符,而預定義標識符可以是用戶標識符,所以define可以是用戶標識,if是關鍵字,而關鍵字不能是用戶標識符,所以if不可以是用戶標識符答案是Dlong是關鍵字,參照附錄ニ答案是DD答案以數(shù)字2開頭了,不符合標識符定義答案是CC答案以數(shù)字開頭了答案是Dint是關鍵字答案是B答案A是關鍵字,答案C是以數(shù)字開頭了,不符合概念,答案D出現(xiàn)了小數(shù)點答案是A答案A出現(xiàn)了小數(shù)點答案是C答案C以數(shù)字開頭了答案是AB答案中float是關鍵字,C答案中3c以數(shù)字3開頭了,D答案中一5d中一不屬于字母,數(shù)字,下劃線中一種答案是AB答案中一max中一錯誤,C答案中3coM以字母3開頭了,D答案中int是關鍵字,不是用戶標識符14答案是BA答案中15.后面不應該有點,C答案中出現(xiàn)了逗號,D中字母B有問題答案是DVisualC++6.0中int類型的變量占的字節(jié)數(shù)為4。答案是BB中出現(xiàn)了8,而八進制只能有。到7組成答案是D答案D中開頭是〇不是。答案是C答案A中E后面是整數(shù),0.5是小數(shù)答案B中E后面不能為空答案D中E前面不能為空本題目考察指數(shù)的表示形式答案是C答案A中2.0有問題,不能為小數(shù)形式答案B中E前面不能為空答案D中E后面不能為空本題目考察指數(shù)的表示形式答案是AB中八進制中不能出現(xiàn)數(shù)字8,C中e后面不能是小數(shù),D中e后面不能為空答案是BB中0.4是小數(shù),不正確C中0.5是小數(shù),不正確答案是D6-5/2+1.2+5%2=3.6-2+1.2+1=3.8本題目考察算術運算符,需要注意整數(shù)除以整數(shù)結果只能是整數(shù)答案是D%不能用于實型的計算答案是DD答案中$不屬于字母,數(shù)字,下劃線答案是AA答案是逗號表達式,B答案中x+l=y是賦值表達式,左邊只能是變量,而這里是x+1,同理答案C中x+10也是錯誤的,在D答案中,考察的是強制類型轉換,正確的是(double)x/10答案是A本題考察的是注釋需要注意的地方,具體解答見課本第2頁中間部分答案是B答案A中n2沒有定義,答案C中在定義f之前不能使用它,答案D中E后面必須是整數(shù)答案是C考察的是強制類型轉換,正確的是k%(int)f30答案是D本題目類似與第七課時的例ー,解題方法是要抓住++m,—n,—m,表達式的值是變量變化之后的值,而n—表達式的值是變量n變化之前的值31答案是B本題目考察的是負整數(shù)與無符號正整數(shù)在計算機中存放的格式的ー樣的,但表示的不同的兩個數(shù)32答案是CA答案中%運算對象不能為實型,26.8錯誤,B答案中考察的賦值運算符,賦值運算符左邊必須是變量,所以賦值運算符左邊1+2錯誤,同理答案D錯誤33答案是C本題目考察的是課本第15頁的關于自加與自減運算符的第一點說明,即增量運算符的運算對象只能是變量,而在C答案中++(i+l)中,i+1是表達式34答案是B本題目考察的是整數(shù)除以整數(shù)結果是整數(shù),在B答案中1/2結果是0,導致整個表達式的值是0,明顯是錯誤的答案是D對于++、ー單目運算符來說,其運算對象可以是char型、int型和float型變答案是A本題目主要考察n++表達式的值是n變化之前的值,然答案是Bc=a/b+O.4 c=8/5+0,4c=l+O.4c=l.4因為c是int型的,所以c的值是1,做此題目需要仔細閱讀題目答案是D(int)a+b/b=(int)5.5+2.5/2.5-5+1.000000=b=6.000000同樣a,b的類型是double型的答案是Dlong和short不能相互修飾答案是C標識符中不能有$答案是CA選項中,在變量賦值時不能賦給表達式,而y*5是表達式;選項B中進行強制類型轉換時,類型標識符要加上括號,所以錯誤;選項口中,%(求余運算符)運算對象只能是整形數(shù)。答案是A選項A中,b變量還沒有定義答案是C選項A中l(wèi)ong是關鍵字;選項B中“-”符號不屬于字母、數(shù)字或下劃線;選項口中,int是關鍵字。44答案是B選項A中,ハ進制數(shù)只能由0—7之間的數(shù)字組成;選項C,十六進制數(shù)應該以0X開頭,并且由0—9以及a—f組成,Oabc不正確;選項D中10,000包含逗號,不正確。答案是BC語言的標識符中只能包含字線、數(shù)字和下劃線,沒有連接符。答案是C既然在內(nèi)存中,字符數(shù)據(jù)以ASCI!碼存儲,它的存儲形式就與整數(shù)的存儲形式類似。這樣使字符型數(shù)據(jù)和整型數(shù)據(jù)之間可以通用。ー個字符數(shù)據(jù)既可以以字符形式輸出,也可以以整數(shù)形式輸出。以字符形式榆出時,需栗先將存儲單元中的ASCI!碼轉換成相應字符,然后輸出。以整數(shù)形式輸出時,直接將ASCII碼作為整數(shù)輸出。也可以對字符數(shù)據(jù)進行算術運算,此時相當于對它們的ASCI!碼進行算術運算。答案是D不同的計算機系統(tǒng)或者編譯系統(tǒng),對3種整數(shù)類型所占用的字節(jié)數(shù)有不同的規(guī)定。答案是A選項B中求余運算(%)的運算對象必須是整型;選項C中,賦值運算符(=)的左邊必須是變量,不能是常量或表達式;選項D與選項C同理。答案是A++運算符有前綴和后綴兩種形式,本題中的選項C就是前綴形式,其表達式的值為增1后的值,而選項A為后綴形式,其表達式的值為增1之前的值。而選項B和D的表達式都是k加1之后的值答案是A答案是C選項A中將一個變量j的值賦給了一個表達式,這種寫法是錯誤的,只能給變量賦值,而不能給常量和表達式賦值;選項B中強制類型轉換的格式使用出錯,強制類型轉換時,類型標識符必須用括號括起來;選項口中,求余運算符(%)的兩端必須是整形數(shù)。答案是D字符常量是用單引號括起來的單個字符,所以選項B錯誤;此外還有一種特殊的字符專為控制設計,稱為轉義字符,有三種轉義字符:ー種是由一個“ヽ”開頭加一個普通字符組成,代表一個字符。如‘ヽー表示一個單引號字符,所以選項D正確;,\\,表示一個斜杠字符,而選項C中的’\,則是錯誤的;用“ヽ”與其后的1-3位ハ進制數(shù)字構成的字符序列,表示ASCII碼等值于該ハ進制數(shù)的字符;用“\x”與其后的1一2位十六進制數(shù)字構成的字符序列,表示ASCII碼等值于該十六進制數(shù)的字符;所以選項A錯誤。答案是B字符常量是用單引號括起來的單個字符,所以選項A正確;此外還有一種特殊的字符專為控制設計,稱為轉義字符,有三種轉義字符:ー種是由一個“ヽ”開頭加一個普通字符組成,代表一個字符。如,、ガ表示一個換行符,所以選項D正確;用“ヽ”與其后的1一3位ハ進制數(shù)字構成的字符序列,表示ASCII碼等值于該ハ進制數(shù)的字符,所以選項B錯誤,因為9不是八進制數(shù)字;用“\x”與其后的1-2位十六進制數(shù)字構成的字符序列,表示ASCII碼等值于該十六進制數(shù)的字符;所以選項C正確。答案是D大寫字母的ASCII碼值比小寫字母的ASCII碼值小32答案是A選項A中的字符變量ch只能接收單個字符,匕ビ不是單個字符,所以錯誤。答案是Bcharx=>じ將一個大寫字母賦給了字符型變量x;然后通過x=x+32將x中字符的ASCII碼值加32,即為小寫字符,ビ的ASCII碼值;然后將x以字符形式榆出,即為小寫字母c。語句charx,y;定義兩個字符型變量x,y;然后通過x=5B,-Aゼa,將用大寫字母B的ASCII碼送去大寫字母A的ASCII碼,結果便為1,然后再加上小寫字每a的ASCII碼,結果就為小寫字母b的ASCII碼,然后再賦值給變量x;通過y=x+2,將變量x中的ASCII碼值加2,即變成小寫字母d的ASCI!碼值再賦值給變量y;然后以數(shù)值形式輸出變量x中的ASCII碼值為98,再以字符形式榆出變量y中的字符為d。答案是B選項A中字符,0,的ASCII碼值為48,所以A的結果不為1;選項B中,、〇,代表空值,空值NULL的ASCII碼值為〇所以結果為1;選項C中字符,1,的ASCII碼值為49,所以結果不為1;選項D相當于用0-48結果也不為L答案是D如果要表示十六進制字符,則要用‘\x,開頭,所以選項A錯誤;如果要表示八進制,則,、。,開頭,后面跟1一3位的ハ進制數(shù),ハ進制數(shù)由0一フ組成,不包含8,所以選項B錯誤;用單引號括起來的單個字符オ是字符常量,所以C錯誤;而,\n,是轉義字符,用來表示回車符。答案是B用單引號括起來的單個字符,稱為字符常量,所以選項B錯誤。61 答案是C先將cl變量中的字符的ASCH碼值榆出,即為65,將變量c2中字符的ASCII碼值減2后輸出,即為66。答案是A我們知道異或運算,只有兩個操作數(shù)不同,結果オ為L所以ビ1=1,ピ1=0,由此可推理,任何數(shù)與1進行異或運算都得它的相反數(shù);變量b中的高4位為1,所以要讓變量a的高4位取反,即可讓變量a和變量b進行異或運算。答案是A變量cl和c2中的值相同,所以轉換成二進制數(shù)后,對應的二進制位上的值也相同,當兩值相同時,只有進行異或運算,結果オ為0,所以cl%2值為〇。所以本題的正確答案為A。答案是A413轉換成對應的二進制數(shù)即1001011=111再轉換為十進制數(shù)即為7;而4&3轉換成對應的二進制數(shù)即100&011=000,再轉換為十進制數(shù)即為〇;所以選擇A。答案是Dx/y的值為1,z的值也為1,1和1求反進行與運算,結果一定為〇。所以本題選擇D。答案是D2+x=00000010+10100111=10101001 ;-3=-00000011=11111100;所以就相當于10101001Ali111100=01010101,所以選擇瓦答案是Da=0x3轉換為二進制數(shù)即為00000011;b=a|0x8轉換為二進制數(shù)即為00000011100001000=00001011即b=ll,b?l即00001011?l=00010110即c=22,所以本題選擇瓦二,填空題位〇1關鍵字 預定義標識符 用戶標識符8八 十 十六int float double5+3. 6/2=5+l.8=6.815 16 a++表達式的值是a變化之前的值,當然a本身增加了1把10賦給變量B123.46(int)(x*100+0.5)/100.0=(int)(12345.67+0.5)/100.0=(int)(12346.17)/100.0=12346/100.0=123.46O3整個表達式是一個逗號表達式,變量n和i賦值為2后,通過++i將i的值增加1變?yōu)?,然后再通過i++為i增加個i++表達式的值為3,而變量i的值為2。11110111第11題沒有詳細解析而且答案出錯:"xAy?l="00000010A00000101?l=11111101A00001010=l11101112只有‘\\‘和''ビ是正確的220.000000x=f*=n/=(c=50)是ー個賦值表達式,它的順序是從右向左賦值,先執(zhí)行c=50,然后執(zhí)行n/=50即n=n/50=100/50=2,接著執(zhí)行f*=2即f=f*2=10*2=2〇.000000,最后再將值賦給變量X。輸出變量n和x的值,即為220.000000。a=14表達式a=(3*5,a+4)的括號中是ー個逗號表達式,其結果是最后ー個表達式的值,即將a+4=14的值賦給變量a。所以輸出結果為a=14o第二章順序結構ー選擇題答案是C隨意使用空語句會導致邏輯上出現(xiàn)錯誤,不要隨便使用。答案是B語句必須以分號結尾,A,C,D表達式后面均沒有分號。答案是Cintx=13,y=4;說明x,y均為整型,所以x/y只取整數(shù)部分(舍去法),值為3,把3賦值給x,整個x=x/y表達式的值為左邊變量x的值,所以輸出為3。答案是Aa,b均為整型,a/b是取a+b所得商的整數(shù)部分,所以是。,再把〇賦值給c,所以是c的值是〇。5,答案是DA注釋語句可以放在代碼的任何位置B將r定義為整型不會在編譯時出錯,會自動進行類型轉換C變量s為浮點型,格式描述符%f時正確的D7T是非法的變量6,答案是D(x,y)是逗號表達式,它的值只有一個,所以格式說明符的個數(shù)和輸出項的個數(shù)是相等的。并且逗號表達式的值為最后ー個表達式的值,最后ー個表達式是y=2003,所以整個表達式的值是2003,因此輸出值為2003.7,答案是Am是十進制整數(shù)以十進制有符號的形式輸出,即照原樣榆32767,n=032767,032767是八進制的整數(shù)以八進制無符號形式輸出,去掉前面的〇。見教材P34m,n的值都是十六進制數(shù)Oxabc,m-=n即是m=m-n,把m-n的值賦給m,即把〇賦給m,再把m值以十六進制無符號的形式輸出,輸出的十六進制數(shù)不用在前面Ox或者0Xo見教材P359J 答案是B表達式i--的值是在變量自減之前的值,i的初值為10,所以該表達式的值也為10;表達式j++的值是變量自加之后的值,j初值為1,所以該表達式在值是2。105答案是Cm=0256,即m是ハ進制的數(shù)0256,要以八進制無符號的形式輸出,即輸出256;n=256,即n是十進制的數(shù)256,也要以ハ進制無符號的形式輸出,首先要把十進制數(shù)轉化為ハ進制數(shù),256轉化為ハ進制為0400,以無符號影式輸出,即輸出400。115答案是B在printf語句中,格式控制的個數(shù)只有一個,即%d,而輸出項有兩項,即a和b。而得到的結果應該只有一個,所以應該輸出第一個變量的值,即變量a的值。12,答案是C第一個數(shù)據(jù)的輸出控制寬度是2位,但是x的值是102,占3位,要輸出的數(shù)據(jù)寬度大于規(guī)定的輸出寬度,所以按數(shù)據(jù)的實際寬度榆出,輸出102。第二個數(shù)據(jù)要求以十進制形式輸出,輸出控制寬度是2,y的值為012J是ハ進制數(shù),所以要轉換成十進制數(shù)10后再輸出。13,答案是B表達式a=f/=c*=(x=6.5),按從右到左結合,先把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í)行強制類型轉換,a的值為1。a對應的輸出格式為%(1,即輸出l;c對應的輸出格式為%d,輸出65,f對應的輸出格式%3.If,即輸出控制寬度為3位,保留小數(shù)點后一位小數(shù),即輸出1.5,x對應的輸出格式也為%3.If,榆出6.5。14,答案是Dfloatx=-123.456;說明x為單精度浮點數(shù)據(jù),單精度浮點數(shù)據(jù)對應的輸出格式應該為%f。15,答案是Cm=(k+=i*=k);按從右到左結合,先執(zhí)行i=i*k;即i被賦值為4,再執(zhí)行k=k+4;k被賦值為6,最后把6賦給m,輸出m和i的值。16,答案是C略(參考12題)17,答案是D-m++遵循從右向左結合的原則;m++的值為m自增之前的值,所以執(zhí)行完x=-m++以后,x被賦值為ー3;表達式x=x+8/++n中有加號除號,先算8/++n,++n的值為自增之后的值為5,8/5取整為1,即x=x+8/++n轉化為x=x+1,即把x+1的值賦給x,x的值變?yōu)椹`2。18,答案是DA輸入函數(shù)應為scanf();B,C輸入數(shù)據(jù)列表必須是地址表達式;19,答案是A從鍵盤輸入數(shù)據(jù)的格式必須與榆入控制要求的格式ー樣B答案三個之間不要有空格;C答案用逗號分開是多余的;D答案格式不匹配。20,答案是A格式控制要求輸入的兩個數(shù)據(jù)之間要用逗號隔開,A沒有逗號所以錯誤,D兩個輸入數(shù)之間的回車換行可以忽略。215答案是Cx乘以100是為了把x小數(shù)點后的兩位小數(shù)變?yōu)檎麛?shù),再加上0.5,如果小數(shù)點后一位大于等于5則會進一位,如果小數(shù)點后一位小于5則不會出現(xiàn)進位的情況,再對其進行強制類型轉換,采用舍去法丟掉小數(shù)部分,即對x乘上100后的數(shù)實現(xiàn)了小數(shù)位到整數(shù)位的四舍五入。最后再除以!00.0j把數(shù)字變回原來的大小,整數(shù)與浮點數(shù)相除結果為浮點數(shù),即實現(xiàn)了要求。22,答案是C從鍵盤輸入數(shù)據(jù)的格式必須與輸入控制要求的格式ー樣。235答案是B輸入控制中第一個數(shù)要求以“%2d”形式榆入,即要求輸入ー個兩位的數(shù),而從鍵盤輸入的數(shù)為876,所以從左到右取兩位數(shù)字87,即把87賦值給整型變量a,余下的6再賦值給浮點型變量b,自動進行類型轉換,b的值為6.000000,后面輸入的543則沒有賦值給變量。24,答案是D“%%”會輸出ー個“%",“d”會照原樣輸出,因為沒有格式說明,m,n無法輸出到屏幕。25,答案是D第1個輸出語句要求ch以%c(字符)形式榆出所以為輸出“a”,以%d(整數(shù))形式輸出為,字符轉換為整型要使用ASCII碼所以為“97”,k沒有對應的輸出符所以沒有輸出,第2個輸出語句要求以整型方式輸出k得到!2”。結果為“a,97,k=12”26,答案是Ba+b的結果為30,按照“a+b=%d\n”的輸出格式得到輸出結果“a+b=30”B27,答案是Bprintf可以沒有輸出項,沒有輸出項的printf只是沒有輸出內(nèi)容;整數(shù)不能以十二進制輸出,getchar()只能讀入字符。28,答案是Agetchar()可以讀入空格符和回車符。二填空題一條語句 分號88首先將ハ進制數(shù)0210轉化為十六進制的數(shù)0X88,輸出格式說明要以十六進制無符號的形式輸出,所以省略0X,直接榆出88。11把十進制數(shù)轉化為ハ進制數(shù),以無符號的形式輸出252137b為ハ進制數(shù)025,c為十六進制數(shù)0X25,首先把b、c都轉化為十進制的整數(shù),分別為21、37,按照榆出格式要求a、b、c以十進制整數(shù)形式輸出,中間以空格分開,所以榆出為252137Onl=%d\nn2=%d除了nl,n2的值之外,還必須加入“nl=”“n2=”照原樣榆出的字符,很明顯在兩個數(shù)據(jù)之間還加了換行符。i=10,j=20く回車)格式控制中加入了格式說明以外的其他字符,則在輸入數(shù)據(jù)時這些字符也要同樣輸入。輸入格式控制為i=%d,j=%d,所以則應該從鍵盤榆入i=10,j=20261a為十進制數(shù)177轉化為ハ進制的數(shù)為0261,以無符號的形式輸出為26116a的初值為0,在表達式a+=(a=8)中,a首先被賦值為8J再執(zhí)行操作a=a+a,所以a最后被賦值為16,即輸出a的值為16printf("a=%d,b=%d”,a,b);B66B在ASCII碼中派在A的后面A為65,那么B為66。10012為ハ進制數(shù),轉換為十進制為10。1234在scanf函數(shù)中指定了寬度為2,輸入123456,a=12,b=34,后面的567無效。12程序運行時輸入12,getchar()函數(shù)只能接受單個字符,所以chl=5r,ch2=52)。nl=chl-*0?轉化為ASCII碼計算nl=50-49,nl的值為1.n2=nl*10+(ch2-,〇,)轉化為ASCII碼計算n2=1*10+(51-49),n2的值為!2o第三章選擇結構ー、選擇題1、D此題主要是考語句的特征。一條語句只包含—個分號,D項有兩個分號,應該是兩條語句,所以選D。2、C此題主要是考真假條件的等價。題目中的E為非0時條件為真,為。時為假。那么把非。和〇帶到選項中可知,C項正好是E為〇時表達式為真,非。時為假,所以選C。3、D任意合法的表達式都可以作為邏輯運算符的運算對象4、D此題主要是考邏輯運算和關系運算的優(yōu)先級別.只要掌握!、算術運算和&&的優(yōu)先級別便可選對.這幾種運算符的具體優(yōu)先級關系見見教材P188,附錄三。5、A此題主要是考邏輯運算符!、&&和II之間的優(yōu)先級別。!最高,&&次之,II最低。先求得!a為0,所以不必計算!b的值,即!a&&!b的值為〇,由c=0,!c=l,而0111=1,所以選A。6、A此題主要是考了邏輯、關系和算術運算,熟練掌握邏輯運算、關系運算和算術運算的優(yōu)先級別后,就不難了。A選項中!a為0,所以!a==l為假,那么就不用計算&&后面的表達式了,因為。與任何數(shù)均為假;B項中先計算出aくb為假,則(aくb)&&!c也為假,而0111=1;C項中a和b均為真,所以a&&b的值為!;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,則1||b的值必為1,理解了這兩點后,我們在看題目:i++==l的值為1,此時i為2,所以計算&&后的表達式,首先計算++j==3的值為1,j的值為3,由上面的原理我們可知,II后面的表達式不用再計算,所以此時i,j,k的值分別為2,3,308、D此題和題2非常的相似,也是考真假條件的轉換,其中D項中只有k為。時,!k%2==lオ成立,顯然和A、B、C三項不同。9、C此題主要是考if和else的配對問題。見教材P5L10、D此題主要是考if和else的一般形式。if后面的語句要么是單條語句,要么是由{}擴起來的復合語句,不能是if后有兩條語句的,所以本題程序在運行的時候會出錯。11、C此題考到了關系運算和邏輯運算及一定數(shù)學知識。|x-y|<10可等價為ー10くx-yく10,首先選項A表示x-y的絕對值小于10,與題中的數(shù)學關系ー樣;將一10くx-yく10用邏輯表達式表示的話就是B選項;而D選項只是數(shù)學變換,所以選擇C12、D此題也是考到了真假條件的變換和if-else語句。A、B、C三項都是表示a為真時輸出x,為假時輸出y,而D則是a為假時輸出x,為真時輸出y。13、D此題考查了賦值表達式的一般格式,=的左邊是變量名,右邊是表達式,所以D項錯誤。14、C此題主要是考查邏輯運算符II,當計算機碰到a||b9先計算表達式a的值,若為假オ會計算表達式b的值,否則將不會去計算b的值,因為一旦a=l,則01|b必為〇。題中b>a為真,所以(n=b>a)為1,那么將不會去計算m=aくb的值,k被并賦值1,所以m依然為〇。15、C此題主要是考查if-else-if和if語句。具體分析見教材第49頁例7.16、C此題主要是考查if-else-if以及關系表達式的運算。首先判斷第一個條件a>b>c的值為0,所以不執(zhí)行第一條語句;在判斷第二個條件,c-l>=c表達式的結果為假,所以也不執(zhí)行其下面的語句,因此執(zhí)行最后一條語句,將輸出d+2的值為4017、C此題主要是考查條件表達式和條件運算符。首先要注意條件表達式的結合方向,它是從右至左的(可參照附錄三)第一個條件表達式的值為a,第二個條件表達式的值為c,而c=6,所以答案選C18、A此題主要是考查if-else語句和條件表達式的轉化。只要理解了if-else語句和條件表達式的運算規(guī)則的話,就很容易選出A19、D此題主要是考查在switch語句中break和default的作用及break的適用范圍。詳細說明可參看教材第三章P53對switch的說明部分。20、B此題考查的是條件表達式求解問題。先看第一個條件表達式語句,a<b為真,所以k=b=2;再看第二個條件表達式語句,k>c為假,所以k=k=2選B21、A此題考查的是條件表達式的求解順序。參照附錄三可知,它的結合方向是自右至左,所以先求得右邊一個條件表達式的值為2,再求得左邊ー個的值為1,即選A22、C此題考查的是真假條件的等價問題。x-y為真表示x-y是非〇的,也即x-yく〇或x-y>0即選C23答案是BC語言的字符以其ASCII碼的形式存在,所以要確定某個字符是大寫字母,只要確定它的ASCII碼在,ベ和’1:之間就可以了,選項A和C符合要求。大寫字母的ASCI!碼值的范圍為65到90,所以D選項符合要求,所以只有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==01|x==!為真,所以執(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—;。這就等同于條件表達式“(EXP!=O)?i++:j一”。所以本題選擇B。27答案是DC語言的字符以其ASCII碼的形式存在,所以要確定某個字符是大寫字母,只要確定它的ASCII碼在,ベ和,7:之間就可以了,選項B的書寫格式錯誤,而選項C不符合要求。大寫字母的ASCII碼值的范圍為65到90,所以A選項不符合要求,小寫字母的ASCII碼比大寫字母的ASCII碼大32,所以只有D是正確的。28答案是D奇數(shù)和2求余一定不為〇,所以當x為奇數(shù)時,x%2==0是不成立的,值為〇,此題選擇D。29答案是B兩個if語句的判斷條件都不滿足,程序只執(zhí)行了c=a這條語句,所以變量c的值等于3,變量b的值沒有變化,程序榆出的結果是3,5,3?所以本題選擇B。30答案是C表達式y(tǒng)%3==0的值為!,所以執(zhí)行下面的輸出語句,表達式ーy的值為8,所以輸出結果是8。選擇C。31答案是C表達式x%3的值為2,非〇所以執(zhí)行下面的輸出語句,將x--的值8輸出,此時x的值變?yōu)?,然后再執(zhí)行下ー個榆出語句,將ー-x的值6輸出,x的值也變?yōu)?,所以選擇C。32答案是D這是嵌套形式的switch語句,因為break結構影響較大,而此程序中的第一個case后沒有break語句,程序執(zhí)行時,x=l,執(zhí)行內(nèi)嵌的switch語句,因y=0,執(zhí)行a++,使變量a的值為1并終止內(nèi)層switch結構,回到外層。程序繼續(xù)執(zhí)行case2后面的語句a++;b++;,這使變量a,b的值分別為2和1,外層switch語句結束。所以此題選擇瓦33答案是Dbreak與continue語句都可用于switch語句中。選擇D。二、填空題1、答案是:10200分析:多數(shù)同學得到的答案是10201,顯然是沒有弄清楚第三條賦值語句:c=(a%bくI(a/b>l).這是將后面一個邏輯表達式的值給c,那么關于邏輯表達式的考題,無非就是考察運算符的優(yōu)先級,也就是說先算哪個,后算哪個的問題。在這個題里面,先計算第一個圓括號里面的內(nèi)容,a%b的值是10,所以10く1為假;a/b的值為0,0>!為假。在邏輯或運算的時候,兩個運算對象都為假,則結果為假。所以c的值為〇.答案是:102002、答案是:1分析:程序中是ー個if—else結構。這個題最容易出錯的地方在于if的條件,注意,里面的是c=a是ー個賦值表達式,不是將c與a的值進行比較。所以條件為真,輸出賦值以后c的值,為1.3、答案是:4,5,99分析:題中的重點在于兩個if結構,大家要注意兩點:第一,如果if后面沒有花括號,則它后面的第一條語句是它的結構體,并且只有一條語句。(如果后面是ー個結構,則整個結構都屬于if結構的結構體)。第二,變量在不斷的被重新賦值,所以其值在不斷的變化。4、答案是:yes分析:該題與第二題是同一回事。5、答案是:1分析:這個題還上一個if—else結構,考查點仍然是考察考生是否能夠正確識別if后面括號里的表達式p=a!=O,根據(jù)運算符的優(yōu)先級知道,這里應該先算a!=0,這是ー個邏輯運算,a的值為5,所以a!=0為真,其邏輯值為1,將1賦值給p,所以條件為真,輸出P的值,為!o6、答案是:20,0分析:見第3題分析。7、答案是:585858分析:題中有三個if結構,注意,這三個if結構是相互獨立的,是互不相關的,只要他們的條件成立,就要執(zhí)行其結構體(后面的榆出語句)。通過鍵盤輸入,得a的值為58,所以a>50為真,輸出58;然后判斷a>40,仍然為真,再榆出58,最后判斷a>30,肯定為真,所以再輸出58,連續(xù)三次輸出5808、答案是:〇分析:本題的關鍵在于關系運算符的運算次序,a=5,b=4,c=3.a>b>c看起來是真的,但是這這是數(shù)學里面是這樣的,這里我們要一步ー步的計算,先算a>b,a確實大于b,所以為真,邏輯值為!,后面的計算就變成了l>c,顯然為假,邏輯值為〇,并將它賦值給d,所以最后輸出d的值為〇。9、答案是:3分析:這個題主要考察條件運算符。程序要輸出(Pハ>O?p/lO:p%3)這個條件表達式的值。P為30,所以p/3=10,10>0顯然為真,所以整個表達式的值應該是p/10的值,p/10得3。10、答案是:21分析:題中是ー個switch嵌套結構。里面的switch是case1的語句,題的關鍵點在于這個語句(即里面的這個switch結構)的后面并沒有跳出整個結構的break語句。所以,當x=l,與case相配以后,執(zhí)行完后面的語句(即里面的這個switch結構),然后沒有遇到break語句,所以并不跳出結構體,而是繼續(xù)執(zhí)行case2后面的語句。所以最后得到的結果應該是21,而不是10。11、答案是:〇字符空格的ASCI!碼不為0,所以本題中表達式!c的值為0,b=O&&l的結果顯然為〇。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的值為T,表達式x的值也為非0?所以執(zhí)行其后的語句后x的值為ー4,最后輸出x的值即為-4。14、答案是:#&表達式c==5的值為真,所以表達式的值等于1,因此輸出符號“#",然后執(zhí)行“break”,繼而去執(zhí)行“default:printf("&”);”語句,輸出符號15、答案是:1因為在條件表達式(aくb)a:b中,比較表達式aくb為真,所以x的值為a的值等于L后面兩個條件表達式中的比較表達式都真,所以最終x的值等于L16、答案是:a:bc:tl條件表達式類似于if語句,根據(jù)“?”前面子表達式的邏輯值來判斷應該計算“:”前面的子表達式還是后面的作為整個條件表達式的結果。題目要求輸出a、b、c3個變量中的最小值,所以當aくb時,應該選a,否則選b,幫前一空應填a:b。同理,后ー空應填c:tlo第四章循環(huán)結構選擇題:.答案: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為假,結束循環(huán)。.答案:Ak的值為5,進入循環(huán),(一k)表達式的值為4(真),同時k的值改變?yōu)?,輸出表達式k-=3的值1,同時k的值為Lk為1,表達式(一k)的值為0,結束循環(huán)。.答案:AX=0,y=5,z=3,(z>0&&xく4)值為真,進入循環(huán)體,y值為4,z值為2,x值為1(z>0&&xく4)值為真,進入循環(huán)體,y值為3,z值為1,x值為2(z>0&&xく4)值為真,進入循環(huán)體,y值為2,z值為〇,x值為3(z>O&&xく4)值為假,結束循環(huán)。輸出x,y,z的值3,2,0.答案:D分析:當K的值為3時,只執(zhí)行case3后面的語句n+=k,n的值為3;當k的值為2時,先執(zhí)行case2后面的語句,但沒有break,所以不會退出,繼續(xù)執(zhí)行case3后面的語句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+=l;"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的值為!,執(zhí)行t=t-2;t的值為T.再判斷表達式的值t!=n為真,再次執(zhí)行循環(huán)體。執(zhí)行s=s+t;s的值為0,執(zhí)行t=t-2;t的值為ー3.再判斷表達式的值1:!=1)為假,結束do..while循環(huán)。最后榆出s的值〇。.答案:A分析:x=3;先執(zhí)行循環(huán)體,輸出表達式x-=2的值!?同時x的值也改變成1,再判斷表達式的值(!x),x的值為1(真),(!x)為假,循環(huán)結束。.答案:B分析:B選項每次進入循環(huán)體,都要先執(zhí)行p=l;即1賦值給p.所以不能求出5!的值.答案:D分析:變量i每次增量為2,變化過程為:1->3->5->7->9,語句s+=l每次執(zhí)行使s增加的數(shù)為:2,4,6,8,10J所以s的值為自然數(shù)1-10中偶數(shù)的值。.答案:C分析:じ項5=5+1歷,1/n首先運算,n為整型變量,1也是整型變量,當n=2...10時,1/n的值為整數(shù)〇,故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)體,結束while語句的執(zhí)行。最后輸出x的值17。.答案:D在循環(huán)中當x等于〇,3,6,9時x%3等于〇,這時會進入if語句執(zhí)行printf語句,在輸出前x會先自加。屏幕上輸出14710o.答案:D分析:continue語句會提前結束此次循環(huán)體的執(zhí)行,不會結束整個for語句的執(zhí)行。.答案:2345選擇中沒有此答案。解析:本題注意的是在循環(huán)第一次進入switch語句的時候是執(zhí)行的default后面的語句塊,由于沒有break,所以還會執(zhí)行case2:case4:后面的語句。.答案:A本題答案為A解析:A首先執(zhí)行++n,判斷條件表達式nく=0為假退出循環(huán)。B條件表達式1永遠為真是無限循環(huán),C條件表達式n的值為10永遠為真是無限循環(huán),D沒有條件表達式,所以沒有退出條件,是無限循環(huán)。此題要注意的是〇為假,非〇為真。.答案:Ado-while循環(huán)先執(zhí)行后判斷,先執(zhí)行循環(huán)體中的printf語句輸出n的值〇,在while(i++)中i先執(zhí)行再自加,所以while(i++)的等于while(O)為假退出循環(huán)。輸出結果為“〇,〇”。.答案: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語句后面的print-“%d,",一x),x先自減1再輸出得到5。第三次循環(huán)x=4,x%3く>0,進入if語句輸出x的值為4,然后x自減1,執(zhí)行continue立即進行下次循環(huán)條件判斷。第四次循環(huán)x=2,x%3く>0,進入if語句,榆出x的值為2,然后x自減1,執(zhí)行continue立即進行下次循環(huán)條件判斷。第五次循環(huán)x=0,判斷表達式x>0為假。結束循環(huán)輸出結果為8,5,4,2.答案D.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的值為2。第六次循環(huán)y=l,y%3<>0,進入下次循環(huán)。第七次循環(huán)y=0,判斷表達式y(tǒng)>0為假結束循環(huán)。輸出結果為8,5,2。答案C21.B在第一層循環(huán)中,當i自加到值等于3的時候オ會進入第二層環(huán)55%3=1。輸出m的值為1.22.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)continue;"無實際意義。當n自加到4的時候結束循環(huán)。答案D24.B需要填入的實際是每行輸出的個數(shù),從圖形看到每行“十的個數(shù)是行數(shù)的兩倍減ー,i可以代表行數(shù)。所以填入的是“2*1”.答案B25.A0%任何數(shù)等于〇,所以第一次循環(huán)的時候就進入了if語句退出了for循環(huán)。i=21,iく20為假,退出了while循環(huán)。a的值為21。26.Di的初值為0,第一次循環(huán)的時候滿足iく。,進入第一個if語句,執(zhí)行continue直接進行下次循環(huán),i的值沒有改變。第二次循環(huán)又重復了第一次循環(huán)的操作,所以是死循環(huán)。二、填空題:.答案:分析:此題的循環(huán)體是省略了大括號的空語句;,x的初值是2;執(zhí)行while語句,先判斷表達式的值,(x一)的值為1(真),同時x的值減1變?yōu)?,再執(zhí)行循環(huán)體(空語句;),再判斷表達式(x--)的值,表達式的值為〇,同時x值減1,變?yōu)椹`1,因為表達式的值為0(假),循環(huán)結束。最后輸出x的值ー1。.答案:11循環(huán)的判斷表達式為i<5,i的初值是1,所以i得值依次是1,2,3,4。sum=sum+l+2+3+4,sum的值等于11.答案是11.答案:n=n/10此題的解法是先用輸入的數(shù)據(jù)%10可以得到個位數(shù),再讓輸入的數(shù)據(jù)除以10,使十位變成個位。循環(huán)使用上面的方法。當只剩下個位的時候也就是n小于!0的時候n/10等于〇退出循環(huán)。所以填入的是“n=n/10”。.答案:0分析:i的值從5變化到。時,for語句中的第二個表達式都為真。t=5*4*3*2*l*0=0。最后榆出i的值為〇。.答案:5分析:for循環(huán)語句的循環(huán)體是空語句。.答案:6分析:此題屬于循環(huán)的嵌套。當i=l時,輸出〇個#號,當i=2時,榆出1個#號,當i=3時,輸出2個#號,當i=,4時,輸出3個#號,共輸出6個#號。7,答案:〇分析:getcharO只能獲得單個字符,輸入“1234567890”ch的值為‘1’。循環(huán)條件為假,循環(huán)一次也沒有執(zhí)行。答案為:〇.分析:參考第3題。答案:54321.答案:k<=nk++分析:見書59,64頁while和for循環(huán)的執(zhí)行過程。答案:k<=nk++.答案:ACE分析:理解字符轉化為整形數(shù)使用到ASCII碼,匕,的ASCII碼是97,f是102,公是65。答案是ACE.答案:120分析:i的值是1,sum的值是1,執(zhí)行while循環(huán)。①iく=5為真,sum的值為!,i自加1,值為2O②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為假,結束循環(huán)。輸出sum-120..答案:23分析:此題需理解的是在switch中case后面沒有break的話會繼續(xù)執(zhí)行下ー個case或default后面的語句。答案為23.答案:132分析:m=0,n=0,k=0,i=9①當i值為9時,i<=l!為真,執(zhí)行switch語句,(i/10)的值為〇,匹配case〇,執(zhí)行m++,n++,再執(zhí)行break語句,跳出switch體,再執(zhí)行i++,i值為10;此時m值為1,n的值為!,k的值為0.②當i值為10時,iく=11為真,執(zhí)行switch語句,(i/10)的值為1,匹配default,執(zhí)行k++,n++,結束switch體,執(zhí)行i++,i值為11.此時m值為1,n的值為2,k的值為L③當i值為11時,iく=11為真,執(zhí)行switch語句,(i/10)的值為1,匹配default,執(zhí)行k++,n++,結束switch體,執(zhí)行i++,i值為12.此時m值為1,n的值為3,k的值為2.⑤i值為12時,iく=11為假,結束for循環(huán)。最后輸出叫n,k的值132..答案:iく10i%3!=0根據(jù)題意先得到100以內(nèi)所有個位是6的數(shù),在判斷哪些能被3整除。答案為i<10i%3!=0o第五章函數(shù)ー、選擇題:答案:B分析:在C語言中,函數(shù)可以在任何地方出現(xiàn),而main函數(shù)作為函數(shù)中的ー類,沒有特殊的限制和要求,故也可以在任何地方出現(xiàn)。2.答案:B分析:C語言默認規(guī)定答案:D分析:選項A中“abc”和C中的,65,是ー個字符串,而形參要求的是單個字符不符合要求,選項B是ー個賦值語句,而fun函數(shù)沒有返回值,所以不符合要求,只有選項D正確,將32傳給ch字符變量,那么32就相當于是ASCII碼值。答案:A分析:sin(1/2)會當作sin(0)處理。實參的類型決定了重載函數(shù)的選擇。答案:D分析:函數(shù)的調(diào)用不可以作為ー個函數(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分析:fl(x,y)的作用是返回x、y中較大的,f2(x,y)的作用是返回x、y中較小的。d=fl(a,b)=fl(4,3)=4d=f1(d,c)=f1(4,5)=5e=f2(a,b)=f2(4,3)=3e=f2(e,c)=f2(3,5)=3此時各值為a=4,b=3,c=5,d=5,e=3,f=a+b+c-d-e=4o所以答案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=150fun((int)fun(a+c,b),a-c)=fun(15,-6)=9。答案:D分析:fun(x,y)的作用是選擇x,y里面較小的ー個。fun(9,8)=8,fun(8,7)=7;fun(fun(a,b),fun(b,c))=fun(8,7)=7答案:C分 析 :funi(a)=a2,fun2(x,y)=(int)(funi(x)+funi(y))=(int)( x2+y2),所以funl(1.1,2.0)=(int)(1.21+4.0)=(int)5.21=5由于w是double型的,所以w的值為5.0。答案:A分析:函數(shù)的說明有其自己的格式,應該包括函數(shù)類型、函數(shù)名、以及形參類型,形參名可有可無,但是一定要統(tǒng)ー,形參名隨便取。答案:C分析:允許這種函數(shù)說明的方式存在。如果只在主函數(shù)中說明,則只能在主函數(shù)中調(diào)用f;如果在主函數(shù)以前說明,則包括主函數(shù)的所有函數(shù)都可以調(diào)用,如果同時主函數(shù)又說明了,則不影響。答案:D分析:函數(shù)的形參不可以傳給對應的實參。答案:D分析:形式參數(shù)的改變不影響實參。所以本題是ー個迷惑題,不需要看函數(shù)體的內(nèi)容。答案:C分析:C語言中改變函數(shù)形參的值,不會改變對應實參的值;函數(shù)可以返回地址值,當函數(shù)沒有指定返回值類型時,默認返回類型為void型,C語言的函數(shù)不能嵌套定義,所以本題選擇C。答案:A分析:本題答案為A,程序的執(zhí)行總是從main函數(shù)開始,在main函數(shù)結束,無論main函數(shù)在程序的什么地方。答案:A分析:在C語言中,函數(shù)返回值的類型取決于函數(shù)定義時在函數(shù)首部所說明的函數(shù)類型。答案:C分析:函數(shù)f(intv,intw)的功能是將實參v和w進行交換,但是實參值的變化對形參沒有影響,所以本題中x,y,z中的值不發(fā)生變化。答案:C分析:因為fun(intx)函數(shù)是ー個遞歸函數(shù),所以主函數(shù)中的調(diào)fun(3)經(jīng)過1次遞歸調(diào)用,其過程可以描述為fun(3)=3*3-f(3-2)=9-fun(1)=9-3=6。答案:D分析:在內(nèi)存中,實參單元與形參單元是不同的單元。在C語言中,僅在調(diào)用函數(shù)時,給形參分配存儲單元,并將實參對應的值傳遞給形參,調(diào)用結束后,形參單元被釋放,實參單元仍保留并維持原值。故本題答案為D。答案:C分析:變量a,b,c的初始值分別為!,2,3,因此逗號表達式"a++,b++,a+b”值等于5,表達式C++的值為3,這樣主函數(shù)main()中調(diào)用子函數(shù)的表達式為fun(5,3);其返回值等于8。所以變量sum的值等于8。本題選擇C。二、填空題:.答案:a=l.0,b=1.0,s=l.0;分析:分別求出變量的初始值。a=a*x為的是求xn,所以其初始值為!,b=b*i位的是求n!,所以其初始值為1,當n=0時,s=l,所以s的初始值為L由于定義的是double型的數(shù)據(jù),所以答案為a=l.0,b=l.0,s=l.0;.答案: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,當要計算m=a4+b4+(a+b)3時,函數(shù)調(diào)用語句為m=fun(a,4)+fun(b,4)+fun(a+b,3);.答案:xx*x+l分析:1)求f(x)的累加和,即為求f(0)+f(1)+f(2)+f(3)+f(4)+ 函數(shù)SunFun來實現(xiàn)此功能。括號中應該填入累加的序號值,即為xo2)f(x)=x2+l,F(intx)函數(shù)來實現(xiàn)這個功能,所以填寫x*x+lo.答案:-ffun(10)分析:函數(shù)的作用為計算m=l-2+3-4+5-6+7-8+9-10,實際上為計算m-1*1+(-1)*2+1?3+(-1)*4+……+1*9+(-1)*10,在循環(huán)體中,i為1,2,3 f為1的符號。每循環(huán)一次,f的符號應該變換ー下,所以變換的語句為f=-fo當n=!時,計算的是m=l;當n=2時,計算的是m=l-2因為計算的是m=l-2+3-4+5-6+7-8+9-10,所以答案為n=105即fun(10)..答案:9分析:1)函數(shù)的意思為f(x,y)=(y-x)*xf(3,4)=(4-3)*3=3f(3,5)=(5-3)*3=6d=f(3,6)=(6-3)*3=9..答案:doublemax分析:通過程序可以看出,main函數(shù)中使用了max函數(shù),而其他地方?jīng)]有對max函數(shù)進行說明。所以程序中應該對max函數(shù)進行說明。說明的格式為doublemax(double,double)..答案:3,2,2,3分析:1)x=2,y=3,當調(diào)用fun(x,y)時,相當于執(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;此時x,y的值為3,2,所以榆出的結果為3,2。2)在main函數(shù)中,實參不會因為形參的改變而改變,x,y的值仍為2,3,所以所以榆出的結果為2,3.8、答案:13分析:fun函數(shù)是一個遞歸函數(shù),主函數(shù)中調(diào)用的fun(3)共遞歸兩次,fun(3)中又調(diào)用fun(3/2)即fun(l),先輸出fun⑴中x的值,為1,然后再輸出fun(3)中x的值為3。所以結果為13。9、答案:m=9k=14i=5j=5分析:為變量i和j賦初值為4,調(diào)用fun(i++,++j)即fun(4,5),在fun函數(shù)中計算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=5o第六章指針ー、選擇題1答案:A分析:本題主要考指針賦值,n2=nl;是把n2的值賦給nl,故根據(jù)指針賦值的定義可知選A?即把q所指對象的值賦給p所指對象。2答案:B分析:本題主要考指針定義,因為P指向變量x,故輸出其值的時候應該是x的值。3答案:C分析:本題主要考指針的定義和賦值,C前面是定義ー個量a并賦值為10,后面定義ー個指針,并把a的值賦給這個指針。4答案:C分析:本題主要考指針的定義及賦值,開始時使p指向a,q指向b,把它們的值交換,然后再顯示。故得正確答案C。5答案:C分析:本題主要考函數(shù)指針的定義,函數(shù)前面的?號表求返回值是指針類型,void表示返回無值弄的。故選C。6答案:A分析:本題主要考的是指針的變量的賦值,在使用scanf()函數(shù)的時候,后面跟的是ー個地址,由于pa本身保存的是地址,故選A7答案:D分析:本題主要考的指針的賦值及指向指針的指針的賦值,根據(jù)定義知選D。B的正確形式是**q=2;C的正確形式應該是q=&p。8答案:C分析:本題主要考的是全局變量和局部變量,以及指針的用法,第一個f(&a)的返回值是5,第二個返回值是29答案:A分析:本題主要考的是變量自加,指針傳值,以及指針的賦值。通過第二行a=b可知pl,p2指向的變量的值相同,都指向了b所指的對象,也是p2所指的對象'a',由于(*a)++;是實現(xiàn)a所指對象的自加,故由‘a(chǎn)'變成‘b',故最終選A。10答案:A分析:本題主考NULL,一般來說當我們把ー個空值以整數(shù)的形式榆出出來的時候,默認的情況是〇。11答案:C分析:本題考的是指針變量的賦值,雖然p沒有賦值,表示沒有指向某個具體的對象,但事實上系統(tǒng)會讓它隨機的指向存儲單元里的ー個對象,那么它的返回值應該是所指存儲單元中的值。12答案:B分析:本題主要考函數(shù)中參數(shù)變量的定義,在B中連續(xù)定義兩個變量,這在函數(shù)中是不可以的。13答案:C分析:本題主要考指針的指針,c先指向b,b是ー個指針,它指向a,故c最終是指向a的,故其值是a中的值。14答案:A分析:本題主要考指針的賦值,我們不能把一個具體的值賦給ー個指針變量。B選項是w,p指向同一對象。C是p指向a。D是把w所指對象的值賦給p所指對象。15答案:B分析:本題主要考指針傳值,p,q分別指向a,b,然而r會指向它們的較小值。16答案:D分析:在D中把一個整形變量的值賦給ー個指針的地址,故而是錯的。應該寫成p=&a。17答案:D分析:本題主要考調(diào)用函數(shù)時指針傳值和一般的變量的傳值區(qū)別。指針通過地址傳值,而變量是直接傳值。c指針指向b,故對c指針里面的值的修改等于直接修改b中的值。18答案:D分析:本題主要考指針的定義及指針變量的值的輸出方式,指針b指向a,故輸出其值是511。19答案:C分析:本題主要考指針標識符?和乘號?的區(qū)別,*p=*pl*(*p2)中第1,2,4個?號是指針標識符,而第三個是乘號,故其運算的結果是3。20答案:C分析:本題主考函數(shù)的嵌套調(diào)用和數(shù)據(jù)的類型轉換,注意的是(in。(a+b),所以得到5.〇。21答案:A分析:本題主要說的是函數(shù)的遞歸調(diào)用,函數(shù)fun。實現(xiàn)的功能是從1加到n,然后返回給主函數(shù)。22答案:D分析:A不能把一個具體的值賦給ー個指針變量。Bq是指向指針的指針只能保存指針的地址。C同B。23答案:D分析:A指針賦處初值時不能把一個具體的值賦給ー個指針變量指向的地址。B語法錯誤,C不能發(fā)地址賦給浮點型變量。24答案:C分析:指針只能存放地址。25答案:C分析:scanf0函數(shù)的榆入數(shù)據(jù)列表應該是合法的地址表達式。26答案:D分析:A中b需要預先定義,B中字符變量b只能接收單個字符。C中二級指針應定義為**c。答案D27答案:D分析:代碼“s+=2”是錯誤的,s是數(shù)組的首地址,但S是常量不能改變它的值。28答案:A分析:B的正確格式是“p=&n”,C的正確格式是“scanf("%d",p)”,D的正確格式是“printf("%d\n",*p)”。答案A二、填空題!答案:84分析:voidf()函數(shù)里的x,y分別是ー個指針變量和整型變量,指針x指向ー個整型的變量,即指向主函數(shù)里的x,故在函數(shù)voidf()里修改指針x的值,會影響到主函數(shù)里的x的值,但修改voidf()里的y的值卻不會影響到主函數(shù)里的y的值。因為主函數(shù)x傳的是地址,y傳的是值。2答案:k*k分析:由于k是ー個指針,故第一個空應該填k。由于第二個空要輸出指針k所指對象的值,故應該填?k表示該指針所指對象的值3答案:35分析:P,q分別指向x,y,然后調(diào)用函數(shù)swap。;它的功能是把兩個指針所指向的對象交換,原來a,b分別指向x,y,但交換后分別指向y,x,所以并不把指向的對象的值交換。函數(shù)返回后,p,q仍然分別指向x,y。故其值不變。4答案:n=n/10分析:把n除以10,每執(zhí)行ー次就可以把數(shù)的陽未位去掉,因為兩個整數(shù)相除,不會保留小數(shù),故最低位會丟掉,并且把數(shù)縮小到十分之一。然后依次從個位到最高位把數(shù)字輸出。5答案:35第七章數(shù)組ー、選擇題1答案:B分析:此題考察一維數(shù)組的定義,ー維數(shù)組的說明中,下標必須為正的整型常量,不能為變量,在ー維數(shù)組的初始化中,指出在單純的定義時不能省略數(shù)組的長度。2答案:B分析:首先i=0時,判斷i++<7成立,進入循環(huán)體,但此時i=l,p⑴=12不滿足if語句,不執(zhí)行j+=p[i]。按照此方法,得到j=P⑵+p[4]+p[6]=45,即B正確。3答案:D分析:首先i=0<7&&p[0]%2!=05滿足循環(huán)條件,執(zhí)行k=k+p[0],即k=ll,然后執(zhí)行i++,再進行判斷,滿足循環(huán)條件,k=ll+p[l],所以k=24,執(zhí)行i++,i=2,,再進行判斷,此時不滿足循環(huán)條件,循環(huán)結束,榆出k值,為24。4答案:A分析:此題主要考察循環(huán)嵌套,第一個循環(huán)體執(zhí)行完是將x[0],x[l],x[2],x[3],進行從大到小排序,第二個循環(huán)體執(zhí)行完是將x[4],x[5],x[6],x[7]進行從小到大排序。5答案:B分析:此題考察二維數(shù)組的定義,單純定義二維數(shù)組時,行和列都不能缺省。在初始化過程中,歹リ不能缺省,賦值的行數(shù)和列數(shù)不能超過數(shù)組的行數(shù)和列數(shù)。6答案:D分析:同上題分析ー樣。7答案:D分析:同上。8答案:C分析:此題分別輸出m[2][0],m[2][l],m[2][2].9答案:A分析:此題考察在for循環(huán)后,i=0,i=l時,執(zhí)行if語句,使得a⑴[0],a⑴⑴的值分別減1,而當i=2時,執(zhí)行else語句,a[1][2]=1?因此輸出a[0][l]+a[l][1]+a[l][2]?2+4+1=7;10答案:B分析:此題考察for循環(huán),計算aa[〇][l],aa[l][l],aa⑵⑵,aa⑶⑴的和,即為19.11答案:C分析:由于自增加運算符(++)的優(yōu)先級別高于取地址運算符(&),所以選項C無法表示aa[l]的地址,其他三個選項都可以。12答案:D分析:數(shù)組名實際代表數(shù)組的首地址,也就是數(shù)組中第一個元素a[0]的地址,那么a+i就代表數(shù)組a中下標為i的元素a[i]的地址,*(a+i)就代表a[i]這個元素,所以*(*(a+i))的表示是錯誤的,此題選擇D。13答案:A分析:本題答案為A,指針p指向數(shù)組a中第一個元素,此時P中存放的是數(shù)組中a[0I的地址,將指針p+2不是單純的加一個整數(shù)2,而是將指針后移,兩個存儲單元,指向了a[2]這個數(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累計p[l]+p[2]的值,由于指針P指向數(shù)組中元素a[l]所以p[l]即數(shù)組中元素a[2],p[2]即數(shù)組中元素a[3],a[2]+a[3]=6+8=14.16答案:A分析:我們讓指針p指向數(shù)組a中第一個元素,然后通過循環(huán)控制輸出指針p每次后移ー個存儲單元,并輸出其所指存儲單元中的內(nèi)容,而指針p指向數(shù)組a,所以就是輸出數(shù)組a中的每ー個元素,選擇A。17答案:D分析:*p表示指針p所指存儲單元中的內(nèi)容,所以(*p)++表示將P所指存儲單元中的內(nèi)容加1,不符合題目要求,其他三項都符合要求,所以選擇D。18答案:A分析:為指針賦ー個NULL值,就是指針具有一個空值,讓ー個空指針去訪問ー個存儲單元時,將會得到ー個出錯的信息。19答案:D分析:變量P是ー個指針,所以我們只能為其賦ー個地址值,不能為其賦一個表達式或ー個常量值,所以A、B、C三個選項不符合要求,D選項中,a代表數(shù)組a的首地址,是ー個地址值,所以D正確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,實際上s=a[0]+a[2]+a[4]+a[6]+a[8]=1+3+5+7+9=25.23答案:B分析:讓指針p指向二維數(shù)組a的第一個元素,那么可用p[0]代表a[〇][〇],用p[l]代表a[0][1] 用p[8]代表a[2][2],通過循環(huán)為數(shù)組a中的每ー個元素賦了一個值。輸出a[1][2]即p[5]的值為6.24答案:D分析:讓指針p指向二維數(shù)組a的第一個元素,那么可用p[0]代表a[〇][〇],用p[l]代表a[0][1] 用p[8]代表a[2][2],通過循環(huán)為數(shù)組a中的每一個元素賦了一個值。再通過循環(huán)輸出a[1][O]、a⑴⑴、a[l][2],即p[3]、p[4]、p[5]的值,所以輸出的是3、4、5。25答案:B分析:在這里我們通過(*ptr)[2]定義了一個行指針ptr,ptr存放的是含有兩個整型元素的ー維數(shù)組的首地址。a是二維數(shù)組名,就是數(shù)組的首地址,ptr=a+i就代表,將數(shù)組中第1行的首地址賦給行指針ptr。能過第一個循環(huán)控制,為第〇行和第1的首元素賦值,也就是為a[〇][〇]和a[1][〇]賦值,榆入的是1、2、3,但是只賦給兩個元素,所以取前面兩個值,所以輸出時,a[〇][〇]的值為1,a[l][0]的值為2,其他的默認都為0.26答案:B分析:int*p[3]是表示定義ー個指針數(shù)組,數(shù)組名為p,其中包含3個元素,每個元素都是ー個指向int類型的指針。27答案:D分析:通過(*p)⑸則定義了一個行指針,存放長度為5的ー維數(shù)組的指針,通過p=c,讓P指向二維數(shù)組c,那么p[i]就是指向數(shù)組c中第i行的指針。p[i]+n就是數(shù)組中第i行,第n列的地址,如果要引用第i行第n歹リ的元素,就可以表示成?(p[i]+n),所以本題選擇D。28答案:D分析:二維數(shù)組元素的地址可以用表達式&a[i][j]求得,也可以通過每行的首地址來表示,第i行的首地址可以通過a[i]來表示,a[i]+j就表示第i行第j列的地址,等價于?(a+i)+j,如果要引用第i行第j列的元素,則可表示成?(a[i]+j),?(?(a+i)+j)或(*(a+i))[j]所以本題選擇Do29答案:C分析:P是ー個指針數(shù)組,通過p[O]=a[1]可知p[〇]中存放的是數(shù)組a中第1行的首地址,所以p[O]+!就代表第1行第1列元素的地址,所以?(p[O]+l)就代表元素a[1][1]o30答案:C分析:通過(*ps)[5]則定義了一個行指針,存放長度為5的ー維數(shù)組的指針,通過ps=s,讓ps指向二維數(shù)組s,那么ps[i]就是指向數(shù)組s中第i行的指針,可用ps[i][j]或?(ps[i]+j)表示第i行第j列的元素。所以選項C正確。31答案:A分析:通過(*pa)[3]定義了一個行指針pa指向二維數(shù)組a,這樣p[i]げ就表示a⑴[j],通過循環(huán)語句控制將a⑴[0]和a[l][1]中的值分別減1變?yōu)?和4,給a⑴⑵賦值為1.a[0][l]+a[l][l]+a[l][2]=2+4+1=7J所以本題選擇A。32答案:B分析:循環(huán)共執(zhí)行3次:i=0并且j=0時:t=t+b[O][b[0][O]]=l+b[O][0]=1+0=1J當i=l并且j=l時:t=t+b[l][b[l][l]]=l+b[l][1]=1+1=2?當i=2并且j=2時:t-t+b[2][b[2][2]]=2+b[2][2]=2+2=4.33答案:B分析:第一個for循環(huán)控制輸出的空格,第二個for循環(huán)控制輸出數(shù)組中元素,分析可知,輸出數(shù)組元素時,第。行榆出0個空格,并從第0列元素開始輸出,第1行輸出1個空格后,并從第1列元素開始輸出依此類推,第i行輸出i個空格后,從第i列開始輸出,所以空格處填i?34答案:A本題中通過嵌套循環(huán)找出數(shù)組中最小的元素的值,存放在min變量中,并且將相應的行號放在row變量列中,列號放在col變量中輸出。35答案:A分析:p=s就表示讓指針P指向數(shù)組S的首地址,數(shù)組中第一個元素,所以?P可以表示s[0],A選項正確;數(shù)組s中的元素個數(shù)由定義數(shù)組時的下標決定,P所指的字符串長度由實際的字符個數(shù)決定,是不相等的,所以B錯誤,s數(shù)組名代表數(shù)組的首地址,是ー個地址常量,不是變量所以C錯誤;數(shù)組s中存放的是數(shù)組中的每ー個元素,而指針變量p中存放的是數(shù)組的首地址,所以D錯誤。36答案:A分析:通過pc=ch,讓指針pc指向數(shù)組ch中的第一個元素,此時pc+i即表示ch[i]的地址,所以輸出*(pc+5)即輸出元素ch⑸中的字符“z”。37答案:D分析:swapl(a,a+1)是將數(shù)組中元素a[0]和a[1]的地址傳遞給形參c0和c!兩個數(shù)組,然后在函數(shù)swapl中對它們進行交換,由于傳遞的是地址值,所以形參變化,對應的實參也發(fā)生改變;所以a[〇]與a[1]中的值也相互交換;swap2(&b[0],&b[1])是將數(shù)組b中元素b[〇]和b[1]的地址傳遞給形參指針變量河和し,然后對指針變量所指的存儲單元中的值進行交換,所以b[〇]和b[l]中的值相對也發(fā)生變化,因此最后輸出的值為5353.38答案:C分析:循環(huán)for(i=0;iく12;i++)c[s[i]]++;共執(zhí)行12次,分別為:c[l]++,c[2]++,

溫馨提示

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

評論

0/150

提交評論