




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、第章 函數(shù)選擇題1. 解析: 本題綜合考查函數(shù)的調(diào)用方式。函數(shù)的形參和實(shí)參具有以下特點(diǎn):形參變量只有在被調(diào)用時(shí)才分配內(nèi)存單元,在調(diào)用結(jié)束時(shí), 即刻釋放所分配的內(nèi)存單元。因此,形參只有在函數(shù)內(nèi)部有效。 函數(shù)調(diào)用結(jié)束返回主調(diào)函數(shù)后則不能再使用該形參變量。實(shí)參可以是常量、變量、表達(dá)式、函數(shù)等, 無論實(shí)參是何種類型的量,在進(jìn)行函數(shù)調(diào)用時(shí),它們都必須具有確定的值, 以便把這些值傳送給形參。 因此應(yīng)預(yù)先用賦值,輸入等辦法使實(shí)參獲得確定值。實(shí)參和形參在數(shù)量上,類型上,順序上應(yīng)嚴(yán)格一致, 否則會發(fā)生“類型不匹配”的錯(cuò)誤。函數(shù)調(diào)用中發(fā)生的數(shù)據(jù)傳送是單向的。 即只能把實(shí)參的值傳送給形參,而不能把形參的值反向地傳送
2、給實(shí)參。 因此在函數(shù)調(diào)用過程中,形參的值發(fā)生改變,而實(shí)參中的值不會變化。本題中A)和C)選項(xiàng)是最常識的問題,希望考生能通過以上分析掌握相關(guān)知識點(diǎn)。2. 解析: 本題考查函數(shù)的綜合知識。首先,我們可以利用強(qiáng)制轉(zhuǎn)換類型轉(zhuǎn)換運(yùn)算符將一個(gè)表達(dá)式轉(zhuǎn)換成所需類型。如:(double)a是將a轉(zhuǎn)換成double類型;(int)(x+y)是將x+y的值轉(zhuǎn)換成整型。本題可按部就班地逐步運(yùn)算:fun(int)fun(a+c,b),a-c)fun(int)fun(10,5),2-8)fun(int)15.000000,-6)fun(15,-6)93. 解析: C語言的程序是由主函數(shù)main()開始運(yùn)行,由主函數(shù)來調(diào)
3、用其他函數(shù),所以,選項(xiàng)A)錯(cuò)誤。C語言中定義的函數(shù)必須是并列的,不能在一個(gè)函數(shù)中定義其他函數(shù),選項(xiàng)B)錯(cuò)。函數(shù)必須先定義后使用,在調(diào)用函數(shù)以前要定義函數(shù),而main()函數(shù)不必放在最前面,故選項(xiàng)D)錯(cuò)。4. 解析: 如果實(shí)參是簡單變量,它與對應(yīng)形參之間的數(shù)據(jù)傳遞方式是由參傳給形參,而形參值的改變不能改變實(shí)參的值。5. 解析: 選項(xiàng)A)中定義函數(shù)時(shí),形參的類型說明應(yīng)該放在形參表列內(nèi)說明。老版本C語言中,對形參類型的聲明是放在函數(shù)定義的第2行,也就是不在第1行的括號內(nèi)指定形參的類型,而在括號外單獨(dú)指定。選項(xiàng)B)中return后面的值可以是一個(gè)表達(dá)式。選項(xiàng)D)中實(shí)參與形參的類型應(yīng)相同或賦值兼容。如果
4、實(shí)參為整型而形參為實(shí)型,或者相反,則按不同類型數(shù)值的賦值規(guī)則進(jìn)行轉(zhuǎn)換,以形參類型為準(zhǔn)。6. 解析: 在main函數(shù)中,對f(1)和f(2)的值進(jìn)行了累加。 f(1)=1 f(2)=f(1)+1=2最后,j的值為1+2=37. 解析: C語言規(guī)定,一個(gè)函數(shù)中調(diào)用另一個(gè)函數(shù)(即被調(diào)用函數(shù))需要具備的條件有:首先被調(diào)用的函數(shù)必須是已經(jīng)存在的函數(shù)(是庫函數(shù)或用戶自己定義的函數(shù))。如果使用庫函數(shù),一般還應(yīng)該在本文件開頭用#include命令將函數(shù)調(diào)用有關(guān)庫函數(shù)時(shí)所需要到的信息“包含”到本文件中來。如果使用自定義函數(shù),而且該函數(shù)與調(diào)用它的函數(shù)在同一個(gè)文件中,一般還應(yīng)該在主調(diào)函數(shù)中對被調(diào)用的函數(shù)作聲明,即向
5、編譯系統(tǒng)聲明將要調(diào)用此函數(shù),并將有關(guān)信息通知編譯系統(tǒng)。在C語言中,可以使用函數(shù)原型進(jìn)行聲明,函數(shù)原型的一般形式為:函數(shù)類型 函數(shù)名(參數(shù)類型1,參數(shù)類型2)或函數(shù)類型 函數(shù)名(參數(shù)類型1 參數(shù)名1,參數(shù)類型2 參數(shù)名2)8. 解析: 在C語言中,對于自定義函數(shù)要遵循“先定義,后使用”的規(guī)則,如定義時(shí),不指定函數(shù)類型,C編譯系統(tǒng)都默認(rèn)函數(shù)的返回值是int型。9. 解析: 在C語言中,對于返回值是其他類型的函數(shù),若把函數(shù)定義放在調(diào)用之后,應(yīng)該在調(diào)用之前對函數(shù)進(jìn)行說明,或稱為函數(shù)原型說明。函數(shù)說明句中的類型必須與函數(shù)返回類型一致,函數(shù)說明可以是一條獨(dú)立的語句,也可以與普通變量一起出現(xiàn)在同一個(gè)語句中。
6、對于函數(shù)值為整型的函數(shù)的說明,prtchar中定義時(shí)是void類型,那天返回值與kprtchar();矛盾。所以本題的錯(cuò)誤之處在于“函數(shù)說明和函數(shù)調(diào)用語句之間有矛盾?!?0. 解析: C語言在函數(shù)中說明的變量為局部變量,只在函數(shù)內(nèi)起作用但不會影響到其他函數(shù)。所以在不同的函數(shù)中使用相同的函數(shù)名不代表是同一函數(shù),A)項(xiàng)正確。在函數(shù)定義時(shí)聲明的參數(shù)只在函數(shù)內(nèi)部起作用,是函數(shù)的局部變量,B)正確。在一個(gè)函數(shù)中定義的變量是這個(gè)函數(shù)的局部變量,所以只在這個(gè)函數(shù)內(nèi)起作用,C)正確。復(fù)合語句中定義的變量其作用域是這個(gè)復(fù)合語句,不會擴(kuò)大到整個(gè)函數(shù),所以D)項(xiàng)錯(cuò)誤。11. 解析: 用戶調(diào)用標(biāo)準(zhǔn)庫函數(shù)前不必重新定義
7、,而只需使用預(yù)編譯命令將該函數(shù)所在文件包括到用戶源文件中即可。而且,系統(tǒng)允許用戶重新獨(dú)定義標(biāo)準(zhǔn)庫函數(shù),但此時(shí)該函數(shù)將失去原有含義。因此,正確答案為選項(xiàng)B)。調(diào)用函數(shù)時(shí),必須要注意以下語法:函數(shù)名必須與所調(diào)用的函數(shù)名字完全一致;實(shí)參的個(gè)數(shù)與形參的個(gè)數(shù)一致;函數(shù)必須先定義,后調(diào)用。如果被調(diào)用的函數(shù)的返回值為int型或char型,則被調(diào)用函數(shù)的定義也可以放在調(diào)用的位置之后。如果在函數(shù)調(diào)用之前沒有對函數(shù)作聲明,則編譯系統(tǒng)會把第一次遇到的該函數(shù)形式作為函數(shù)的聲明,并將函數(shù)類型默認(rèn)為int型。12. 解析: 有參函數(shù)的定義一般形式是:類型標(biāo)識符 函數(shù)名(形式參數(shù)表列) 聲明部分 語句形式參數(shù)之間是以逗號“
8、,”隔開,本題的double fun(int x,int y)語句后沒有任何符號。13. 解析: 本題考查的函數(shù)形參與實(shí)參的傳遞規(guī)則,當(dāng)形參與實(shí)參都是簡單的數(shù)據(jù)類型時(shí),形參值的改變不能影響實(shí)參值的改變,即本題中c的值未改變,仍然是6。14. 解析: 函數(shù)調(diào)用相當(dāng)于f(2,3),程序運(yùn)算應(yīng)得結(jié)果為“-1”。15. 解析: C語言中的函數(shù)可以進(jìn)行遞歸調(diào)用,但是不能在函數(shù)中定義函數(shù),函數(shù)不必要有返回值,若有返回值,則返回值類型必確定。16. 解析: 本題考查函數(shù)中變量的作用范圍,在主函數(shù)中給變量x,y,z賦值,然后將其作為實(shí)參傳遞給了函數(shù)fun(),雖然在函數(shù)fun()中改變了這3個(gè)變量的值,但只是
9、同名的局部變量,不影響函數(shù)中變量的值,所以在調(diào)用函數(shù)fun()結(jié)束后,主函數(shù)3個(gè)變量的值未改變,即形參值的改變不能影響實(shí)參的值。17. 解析: 函數(shù)返回語句return中返回的是一個(gè)指針的值也就是一個(gè)地址,所以返回的是形參p中存放的地址值。18. 解析: C語言中關(guān)于形參與實(shí)參的說明:實(shí)參可以是常量、變量或表達(dá)式;實(shí)參與形參的類型應(yīng)相同或賦值兼容,實(shí)參類型可以為C語言中的任何一種數(shù)據(jù)類型,而形參不能是常量或表達(dá)式,只能是某種類型的變量。19. 解析: 該題考查的是遞歸函數(shù)的調(diào)用,題中讀fun函數(shù)進(jìn)行了遞歸調(diào)用,第1次調(diào)用:fun(3)n=3 s=3-fun(2)第二次調(diào)用時(shí):fun(2)n=2
10、 s=2 返回第一次調(diào)用后,s=3-2=1。20. 解析: 在C語言中,函數(shù)首部的一般形式為:函數(shù)類型標(biāo)識符 函數(shù)名(參數(shù)類型1 參數(shù)名1,參數(shù)類型2 參數(shù)名2.)本題中,選項(xiàng)A)不屬于C語言的寫法,是PASCAL語言中函數(shù)首部的寫法,選項(xiàng)D)是BASIC語言中的寫法,選項(xiàng)B)中的變量b前缺少類型的定義。21. 解析: 函數(shù)調(diào)用的一般形式為:函數(shù)名(形參表)若函數(shù)無形參,調(diào)用形式為:函數(shù)名(),當(dāng)所調(diào)用的函數(shù)用于求出某個(gè)值時(shí),函數(shù)的調(diào)用可作為表達(dá)式出現(xiàn)在允許表達(dá)式出現(xiàn)的任何地方,本題中調(diào)用語句的參數(shù)個(gè)數(shù)為2個(gè)。22. 解析: 本題題設(shè)的函數(shù)定義中,在函數(shù)名前沒有函數(shù)返回值的類型名,按照C語言的
11、規(guī)則,缺省函數(shù)返回值類型默認(rèn)為int型。23. 解析: C語言容許函數(shù)返回一個(gè)值,通過return語句實(shí)現(xiàn),其格式是:return(表達(dá)式);或 return 表達(dá)式;功能是把表達(dá)式的值帶回主調(diào)函數(shù)的調(diào)用處,作為函數(shù)的返回值。函數(shù)返回值的類型以函數(shù)類型為準(zhǔn),為了明確表示“不帶回值”,可用“void”類型說明符定義“空類型”。在以下幾種情況下,可不在調(diào)用函數(shù)中對被調(diào)用函數(shù)類型聲明:如果函數(shù)值是整型或字符型,可不進(jìn)行聲明,系統(tǒng)自動默認(rèn)函數(shù)值是整型。如果被調(diào)用函數(shù)的定義出現(xiàn)在調(diào)用函數(shù)之前,可不進(jìn)行聲明。24. 【命題目的】考查對于函數(shù)的基礎(chǔ)知識的掌握情況?!窘忸}要點(diǎn)】函數(shù)不一定有返回值(void類型
12、),C語言規(guī)定,在一個(gè)函數(shù)的內(nèi)部不能再定義函數(shù),函數(shù)可以遞歸調(diào)用,一個(gè)C程序允許由多個(gè)文件組成,C語言支持函數(shù)的外部調(diào)用,不一定有調(diào)用關(guān)系的所有函數(shù)都放在同一個(gè)源程序文件中。【錯(cuò)解分析】選項(xiàng)A)函數(shù)不一定有返回值,選項(xiàng)B)函數(shù)不可以嵌套定義,選項(xiàng)D)函數(shù)可以外部調(diào)用?!究键c(diǎn)鏈接】C語言函數(shù)間傳遞參數(shù)規(guī)則是值傳遞,即單向傳遞。25. 【命題目的】考查對于函數(shù)調(diào)用的語法要求掌握的情況。【解題要點(diǎn)】如果沒有指明函數(shù)值類型,則默認(rèn)函數(shù)返回值的類型為int型。【錯(cuò)解分析】這個(gè)題目實(shí)現(xiàn)的是m,n的立方差。【考點(diǎn)鏈接】C程序中,函數(shù)可以直接或間接地調(diào)用自己。26. 【命題目的】考查對于函數(shù)說明的掌握情況?!?/p>
13、解題要點(diǎn)】函數(shù)說明語句中的類型名必須與函數(shù)返回值的類型一致?!惧e(cuò)解分析】這個(gè)題目實(shí)現(xiàn)的是在字符A的ASCII碼值上加上一個(gè)常數(shù),使之變成另一個(gè)ASCII碼值,從而輸出字符?!究键c(diǎn)鏈接】字符在進(jìn)行數(shù)學(xué)計(jì)算的時(shí)候都是以ASCII碼值的形式計(jì)算。27. 【命題目的】考查對于函數(shù)定義語法掌握的情況。【解題要點(diǎn)】函數(shù)定義的格式如下:一般形式為,函數(shù)返回值的類型 函數(shù)名(類型名 形式參數(shù)1,類型名 形式參數(shù)2,)函數(shù)體,老版本的C函數(shù)的定義形式為:函數(shù)返回值的類型名 函數(shù)名(形式參數(shù)1,形式參數(shù)2,)形式參數(shù)類型說明;函數(shù)體?!惧e(cuò)解分析】選項(xiàng)B)應(yīng)改為double add (double a,double
14、 b),選項(xiàng)C)應(yīng)在定義形參時(shí)用逗號分隔;選項(xiàng)D)應(yīng)將形參的類型說明放在函數(shù)體外?!究键c(diǎn)鏈接】定義的函數(shù)可以沒有形參,但函數(shù)名后的一對圓括號不能省略。填空題1. 【命題目的】考查對于函數(shù)的調(diào)用和返回值的掌握情況?!窘忸}要點(diǎn)】函數(shù)調(diào)用的時(shí)候,函數(shù)名字必須與所調(diào)用的函數(shù)名完全一致,形參與實(shí)參類型要一致,在沒有給出函數(shù)返回值類型的情況下,默認(rèn)為整形,當(dāng)返回值為整型的函數(shù)放到主函數(shù)后面時(shí),可以不需要事先說明就調(diào)用這個(gè)函數(shù)?!究键c(diǎn)鏈接】retrun既可以返回一個(gè)普通常量,也可以返回一個(gè)指針變量。2. 解析:本題中,欲求p的值,需要先求m,n,m-n的階乘值,可用循環(huán)語句實(shí)現(xiàn)。第章 指針選擇題1. 解析:
15、 “&”是求址運(yùn)算符,“*”是指針變量的說明符,說明該變量只能存放所定義類型變量的地址。本題中選項(xiàng)D)中均代表地址,注意&*point等價(jià)于point。2. 解析: 盡管C語言以傳值方式進(jìn)行函數(shù)調(diào)用,但也可以通過傳遞指針的值(變量的地址)來達(dá)到修改實(shí)參變量值的目的,這是此題主要說明的問題。其次,應(yīng)注意表達(dá)式*(z+)的值是*z,其后的z+在程序中無實(shí)際作用。函數(shù)調(diào)用時(shí),由于x,y和z分指向a,b和c,因此,*x,*y和*z就是a,b和c。第一次調(diào)用函數(shù)時(shí),*x=a=10,*y=b=40,*z=c=20輸出結(jié)果為11,41,20,至此,已經(jīng)可以肯定選項(xiàng)B)是正確的。在第一次輸出后
16、,a=11,b=41,c=20,第二次輸出為:12,42,20。3. 解析: 本題考查函數(shù)返回值的知識。函數(shù)返回值是通過函數(shù)中的return語句獲得,return語句中的表達(dá)式的值就是所求函數(shù)的值。此表達(dá)式的值必須與函數(shù)首部所說明的類型一致。若類型不一致,則以函數(shù)值的類型為準(zhǔn),由系統(tǒng)進(jìn)行轉(zhuǎn)換。4. 解析: 通過定義語句int*p后,p本身就是一個(gè)整型指針,p=&n是使p指向變量n,p本身就是一個(gè)地址,在用輸入時(shí)不需在取地址了。5. 解析: 選項(xiàng)A),B),C)的指針賦值表達(dá)方式都不正確,*p5表達(dá)整數(shù)5放到指針p所指向的存儲單元中。6. 解析: 在函數(shù)體語句中的b+=*a;的*是指針運(yùn)
17、算符(也稱間接訪問運(yùn)算符),*a就是main函數(shù)中a的值。7. 解析: int a,b,k=4,m=6,*p1=&k,*p2=&m;聲明整型變量a,b,k,m和指針p1,p2,并分別將4和6賦給k和m,將k和m的地址賦給p1和p2;a=p1=&m;等價(jià)于a=(p1=&m);將p1是否等于地址m的值(0)賦給變量a,b=(*p1)/(*p2)+7;該句的含義是將后面表達(dá)式的的值7賦給變量b。8. 解析: 該程序的執(zhí)行過程是:首先聲明整型指針變量p和整型變量i,字符型指針變量q和字符型變量ch,將i的地址賦給指針變量p,將ch的地址賦給指針變量q,將40賦給*p,此
18、時(shí),q已經(jīng)指向了一個(gè)具體的存儲單元,但ch的值不確定,即*p沒有確定的值,所以不能執(zhí)行*p=*q語句。9. 解析: “&”是求址運(yùn)算符,“*”是指變量說明符。選項(xiàng)A)、B)應(yīng)改為scanf(“%d”,p);選項(xiàng)C)中指針變量p未指向一確定的內(nèi)存單元,不能為其賦值,并且這樣做很危險(xiǎn)建議不使用。10. 解析: p=&a表達(dá)式的含義是將變量a的地址賦給指針變量p;a=*p+b表達(dá)式的含義是指針變量p所存地址對應(yīng)的值與b的和賦給a。11. 解析: 指針變量m和z分別指向整型變量y,i,所以這兩個(gè)指針變量中存儲的地址是不同的,變量x接受的是一個(gè)關(guān)系運(yùn)算的結(jié)果,因?yàn)閮蓚€(gè)地址是不同的,所以相
19、等的判斷結(jié)果為0。12. 解析: 本題的選項(xiàng)A)和B)犯了一個(gè)同樣的錯(cuò)誤,即指針變量p定義后并沒有指向具體的變量。也就是說,p中沒有確定的地址值,它的值是不可預(yù)見的,所指向的單元也是不可預(yù)見的,因此不能進(jìn)行賦值操作。另外,在選項(xiàng)D)中,s是int型指針變量,p是char型指針變量,所指向的內(nèi)存單元所占用的字節(jié)數(shù)是不同的,因而不能將字符指針變量p的值賦給整型指針變量s。13. 解析: 在C語言中,調(diào)用函數(shù)不可能改變實(shí)參指針變量的值,但可以改變實(shí)參指針變量所指變量的值。了解了實(shí)參指針變量的改變情況,本題只剩下簡單的“加減法”了。14. 解析: 解答本題時(shí),首先我們應(yīng)該明白“&”運(yùn)算符和“*
20、”說明符的含義,+N說明的是對變量N的自增運(yùn)算,本題中+*x要求先給指針變量x自增1,再指向其他地址,結(jié)果為26。15. 解析: 本題函數(shù)fun中形參是兩個(gè)指針變量,函數(shù)fun只是將這兩個(gè)指針的指向的地址交換了一下而并沒有交換它們所指向的地址中的數(shù)據(jù)。雖然,主函數(shù)中聲明的變量a,b是整型變量而函數(shù)fun中的形參是兩個(gè)指針變量,這兩個(gè)變量僅僅是兩個(gè)參數(shù),與主函數(shù)中的那兩個(gè)變量含義是不同的。16. 解析: 本題應(yīng)該把swap()函數(shù)改成這樣:swap(int *p,int *q) int t;t=*p;*p=*q;*q=t;這時(shí)執(zhí)行程序時(shí),先將a的地址傳遞給指針變量p,b的地址傳遞給指針變量q,然
21、后將*p(a的值)的值傳遞給t,將*q(b的值)傳遞給*p,將t的值傳遞給*q,從而將a和b互換。17. 【命題目的】考查對于指針說明的掌握情況?!窘忸}要點(diǎn)】定義指針變量的一般格式為:類型名 *指針變量名1,*指針變量名2,;指針可以通過求地址運(yùn)算符(&)獲得地址值,還可以通過指針變量獲得地址值?!惧e(cuò)解分析】選項(xiàng)A)定義的不是一個(gè)指針,而是一個(gè)類型變量;選項(xiàng)B)定義的是指針,但是賦值給指針應(yīng)該是一個(gè)地址值;選項(xiàng)D)定義的是指針,但是賦值與選項(xiàng)B)的錯(cuò)誤類似,a不是指針型的變量,加了*號沒有意義?!究键c(diǎn)鏈接】指針變量必須區(qū)分基類型,基類型不同的指針變量不能混合使用。18. 【命題目的】考
22、查對于指向指針的指針的掌握情況?!窘忸}要點(diǎn)】*t中的t表示指向指針的指針?!惧e(cuò)解分析】選項(xiàng)A)指向char變量的指針應(yīng)該是*t。19. 【命題目的】考查形參為指針變量時(shí),實(shí)參和形參之間的數(shù)據(jù)傳遞。【解題要點(diǎn)】通過傳送地址值,在被調(diào)用函數(shù)中直接改變調(diào)用函數(shù)中的變量值?!惧e(cuò)解分析】本題目是將指針指向的變量x,y的地址傳給了函數(shù)fun(),在fun函數(shù)中對x,y的內(nèi)容進(jìn)行了修改,這樣就改變了原先x,y的值。【考點(diǎn)鏈接】通過傳送地址值,在被調(diào)用函數(shù)中直接改變調(diào)用函數(shù)中的變量值,是又一種函數(shù)之間傳遞數(shù)據(jù)的重要手段。20. 【命題目的】考查函數(shù)返回地址值的掌握情況。【解題要點(diǎn)】函數(shù)的返回值的類型不僅可以是
23、簡單的數(shù)據(jù)類型,而且可以是指針類型?!惧e(cuò)解分析】在函數(shù)內(nèi)部實(shí)現(xiàn)的相當(dāng)于是y=x+y-3?!究键c(diǎn)鏈接】函數(shù)值的類型可以是整型、實(shí)型、字符型和指針型。填空題1. 解析: C語言中實(shí)參變量和形參變量的數(shù)據(jù)傳遞是單向的“值傳遞”方式。指針變量作函數(shù)也要遵循這一規(guī)則。調(diào)用函數(shù)不可能改變實(shí)參指針變量的值,但可以改變實(shí)參指針變量所指變量的值。2. 【命題目的】考查對于函數(shù)的地址傳遞的掌握情況?!窘忸}要點(diǎn)】通過地址傳遞可以在被調(diào)函數(shù)中對調(diào)用函數(shù)中的變量進(jìn)行引用。3.第章 數(shù)組選擇題1. 解析: x數(shù)組共有10個(gè)元素,在花括弧內(nèi)只提供3個(gè)初值,這表示只給前面的3個(gè)成員賦值,后7個(gè)元素的值為0,所以,一共有20個(gè)
24、字節(jié)。2. 解析: 本題中,表達(dá)式將5個(gè)初值賦給a0至a4,后面的部分,將自動會被依次補(bǔ)零處理。3. 解析: 本題考查二維數(shù)組的基本概念。對于二維數(shù)組,只可以省略第一個(gè)括號中的常量表達(dá)式,而不能省略第二個(gè)括號中的常量表達(dá)式。第一維的大小按以下規(guī)則決定:當(dāng)初值的個(gè)數(shù)能被第二維的常量表達(dá)式的值除盡時(shí),所得商數(shù)就是第一維的大小。當(dāng)初值的個(gè)數(shù)不能被第二維的常量表達(dá)式的值除盡時(shí),則:第一維的大小=所得的商數(shù)+1數(shù)組中未賦初值的元素系統(tǒng)會自動對它們賦初值0。4. 解析: 本題經(jīng)過定義語句和賦值后,p表示的是變量a的地址,*p表示的是變量a的值。5. 解析: 在C語言的數(shù)組元素的引用方法,我們在前面已經(jīng)講過
25、了,比如數(shù)組元素a0,可以用表達(dá)式*(p+0),即*p來引用,對于數(shù)組元素a1,可以用表達(dá)式*(p+1)來引用,在這里,p+1的值就是數(shù)組元素a1的地址,對此地址使用“間接訪問運(yùn)算符”:*(p+1)就代表存儲單元a1,注意:一對圓括號不可少。同樣,對于數(shù)組元素a2,則可以用表達(dá)式*(p+2)來引用,對于數(shù)組元素a9,可以用表達(dá)式*(p+9)來引用。因此,當(dāng)指針變量p指向a數(shù)組的起始地址時(shí),若0i10,則數(shù)組元素a i可以用*(p+i)來表示。6. 解析: 函數(shù)定義的一般形式為:類型說明符 函數(shù)名() 類型說明 語句根據(jù)fun函數(shù)的調(diào)用語句可知,fun函數(shù)的第二個(gè)參數(shù)是一個(gè)地址值。7. 解析:
26、本題定義a為3行×4列的數(shù)組,它可用的行下標(biāo)最大為2,列下標(biāo)最大為3,用a04超過了數(shù)組的范圍,注意數(shù)組的下標(biāo)是從零開始的。8. 解析: 在C語言中,對于數(shù)組元素下標(biāo)的定義只能是整型常量或整型表達(dá)式。9. 解析: 函數(shù)之間數(shù)據(jù)傳遞的過程是一個(gè)賦值過程,實(shí)參將值賦予對應(yīng)的形參。函數(shù)的實(shí)際參數(shù)不僅可以是整型、實(shí)型、字符型等數(shù)據(jù),還可以是指針類型。它的作用是將一個(gè)變量的地址傳遞到另一個(gè)函數(shù)中。當(dāng)數(shù)組名作參數(shù)時(shí),如果形參數(shù)組中的各元素的值發(fā)生變化,實(shí)參數(shù)組元素的值隨之發(fā)生變化。10. 解析: C語言中,實(shí)參變量和形參變量之間的數(shù)據(jù)傳遞是賦值過程、是單向的“值傳遞”方式。指針變量作函數(shù)參也要遵
27、循這一規(guī)則,調(diào)用函數(shù)不可能改變實(shí)參指針變量的值,但可以改變實(shí)參指針變量所指變量的值。11. 解析: 如果定義數(shù)組時(shí)沒有進(jìn)行初始化,則其各個(gè)成員的值不確定,所以ks1*10的值也不定。12. 解析: 請注意:該題目所要求的是最大數(shù)的位置(下標(biāo)),而不是最大數(shù)的數(shù)值!因此,在進(jìn)行逐個(gè)比較的過程中,需要記錄下的是最大數(shù)的下標(biāo)i,根據(jù)給出的程序可知,該下標(biāo)記錄在變量p中,所以,如果ai>ap這一關(guān)系成立,應(yīng)該把i的值值賦給p,這樣才滿足題目的要求。13. 解析: 我們可以把二維數(shù)組的常量表達(dá)式看做是矩陣或者表格的行數(shù)與列數(shù),要注意每個(gè)元素有兩個(gè)下標(biāo),第一個(gè)是方括號中的下標(biāo)代表行號,稱行下標(biāo);第二
28、個(gè)是方括號中的下標(biāo)代表列號。行下標(biāo)和列下標(biāo)總是從0開始的,二維數(shù)組在不賦初值時(shí),不能得到確定。14. 解析: 本題中,a12是二維數(shù)組中的第6個(gè)元素,對應(yīng)for循環(huán)中i的值為5,p5=5+1。15. 解析: 本題中的二維數(shù)組的每個(gè)元素就是一個(gè)由三個(gè)元素構(gòu)成的一維數(shù)組,根據(jù)條件for(k=0;k<3;k+)和要求的akk可以得出本題的答案應(yīng)該是9 5 1。16. 解析: 在C語言中,數(shù)組元素是從0開始的。指針變量p指向數(shù)組的首地址,(p+2)就會指向數(shù)組中的第3個(gè)元素。題目中要求輸出的是元素的值。17. 解析: p=&a3將指針指向數(shù)組a的第4個(gè)元素,p5指向數(shù)組a的第9個(gè)元素,而
29、a8=9,所以b=9。18. 解析: 通常,引用一個(gè)數(shù)組元素可以用下標(biāo)法,如ap-a形式,或指針法,如*(&ai)的形式。本題中a9=9,a10顯然超出了數(shù)組范圍,注意,數(shù)組的下標(biāo)是從0開始的。19. 解析: 在一維數(shù)組中要注意的是作為下標(biāo)表達(dá)式的常量表達(dá)式的值必須是大于等于0,選項(xiàng)B)中定義有5個(gè)元素,但賦初值時(shí)有6個(gè)元素,所以是錯(cuò)誤的。20. 解析: 本題的知識點(diǎn)主要是:在C語言中,數(shù)組元素下標(biāo)是從0開始的;指針變量p指向數(shù)組的首地址。for循環(huán)語句中,指針變量p始終指向數(shù)組的首地址,因而執(zhí)行循環(huán)賦值語句后數(shù)組各元素的值均變?yōu)?。21. 解析: 在main函數(shù)中,調(diào)用reverse
30、函數(shù)將b數(shù)組中的前8個(gè)成員進(jìn)行互置,執(zhí)行完畢后,b數(shù)組中的成員為8,7,6,5,4,3,2,1,9,10,然后再執(zhí)行for循環(huán)結(jié)構(gòu),將b6,b7.b9的值相加,結(jié)果為22。22. 解析: 本題考查二維數(shù)組的定義方式。第一維的大小由以下方法判斷:當(dāng)初值的個(gè)數(shù)能被第二維的常量表達(dá)式的值除盡時(shí),所得商數(shù)就是第一維的大??;2)當(dāng)初值的個(gè)數(shù)不能被第二維的常量表達(dá)式的值除盡時(shí),則第一維的大小=所得的商數(shù)+1。23. 解析: 在一維數(shù)組中要注意的是下標(biāo)表達(dá)式的常量表達(dá)式的值必須是大于等于零,并且小于自身元素的個(gè)數(shù),既數(shù)組長度,選項(xiàng)B)的下標(biāo)不是整數(shù),所以錯(cuò)誤24. 解析: 本題考查數(shù)組指針的應(yīng)用。選項(xiàng)D)第
31、一層括號中為數(shù)組a中第i項(xiàng)元素的值,外面再加指針運(yùn)算符沒有意義。25. 解析: 指針變量p指向數(shù)組a的首地址,并把指針變量p的地址賦于指向指針的指針變量k。26. 解析: 此題的關(guān)鍵是要分清指針數(shù)組與指向一組數(shù)組指針之間的不同,題中的說明語句定義了一個(gè)指針變量prt,它指向包含三個(gè)整數(shù)元素的一維組數(shù)。應(yīng)注意:*prt兩側(cè)的圓括號不能缺少,如果寫成*ptr3,則p與3先結(jié)合,是數(shù)組,然后再與前面的*號結(jié)合,則*ptr3將是一個(gè)指針數(shù)組。27. 解析: 函數(shù)的參數(shù)不僅可以是整型、實(shí)型、字符型等數(shù)據(jù),還可以是指針類型。它的作用是將一個(gè)變量的地址傳送到另一個(gè)函數(shù)中去。在本題解析中,我們試圖將這一問題解
32、釋清楚!大家可以考慮一下利用下面這函數(shù)可不可以實(shí)現(xiàn)a和b的互換。swap(x,y)int x,y; int t; t=x; x=y; y=t;如果在main函數(shù)中用swap(a,b),會有什么結(jié)果呢?在函數(shù)調(diào)用開始時(shí),a的值傳送給x,b的值傳遞給y 。執(zhí)行完swap函數(shù)后,x和y的值是互換了,但main函數(shù)中的a和b并未互換。也就是說由于“單向傳遞”的“值傳遞”方式,形參值的改變無法傳遞給實(shí)參。為了使在函數(shù)中改變了的變量值能被main函數(shù)所用,不能采取上述把要改變值的變量作為參數(shù)的辦法,而應(yīng)該用指針變量做函數(shù)參數(shù)。在函數(shù)執(zhí)行過程中使指針變量所指向的變量值發(fā)生變化,函數(shù)調(diào)用結(jié)束后,這些變量值的變
33、化被保留下來,這樣就實(shí)現(xiàn)了調(diào)用函數(shù)改變變量的值,在主調(diào)函數(shù)中使用這些改變了的值的目的。swap(p1,p2)int *p1,*p2; int p; p=*p1; *p1=*p2; *p2=p;注意交換*p1和*p2的值是如何實(shí)現(xiàn)的,如果寫成下面這樣就有問題了!swap(p1,p2)int *p1,*p2; int *p; *p=*p1; /*此語句有問題*/ *p1=*p2; *p2=*p; *p1就是a,是整型變量。而*p是指針變量p所指向的變量,但p中并無確切地址,用*p可能會造成破壞系統(tǒng)的正常工作狀態(tài)。應(yīng)該將*p1的值賦給一個(gè)整型變量,用整型變量作為過渡變量實(shí)現(xiàn)*p1和*p2的交換。請注
34、意,不能企圖通過改變指針形參的值而使指針實(shí)參的值也改變swap(p1,p2)int *p1,*p2; int *p; p=p1; p1=p2; p2=p;程序的原意是:交換兩個(gè)指針的值。但是語言中實(shí)參變量和形參變量之間的數(shù)據(jù)傳遞是單向的“值傳遞”方式。指針變量做函數(shù)參數(shù)也要遵循這一規(guī)則。調(diào)用函數(shù)不能改變實(shí)參指針變量的值,但可以改變實(shí)參指針變量所指向變量的值當(dāng)然,明白了以上指針變量的調(diào)用方式后,本題便可迎刃而解。28. 解析: 該程序先判斷ai<ap,如果條件為真,則ai比當(dāng)前的設(shè)定的最小值小(p保留的當(dāng)前最小元素的下標(biāo)),那么將i賦給p即將比較過的最小的元素下標(biāo)保留在p中,作為下面判斷的
35、標(biāo)準(zhǔn)。29. 解析: aij元素之前有i行元素(每行有m個(gè)元素),在aij的前面還有j個(gè)元素,因此aij之前共有i*m+j個(gè)元素。30. 解析: 本題綜合考查一維數(shù)組和多維數(shù)組指針變量的表示方法。在C語言中,引用數(shù)組元素的方法有兩種,即:下標(biāo)法和指針法。下標(biāo)法如ai形式;指針法如*(a+i)或*(p+1)。其中a是數(shù)組名,p是指向數(shù)組的指針變量,其初值p=a。再如*(*(p+2)+2)是a22的值,注意語句中指針型數(shù)組的書寫格式,不能寫成“(*數(shù)組名)長度”,因?yàn)檫@是定義指向含有“長度”個(gè)元素的一維數(shù)組的指針變量。例如有定義語句“int a,b,c,c,*p3=&a,&b,&a
36、mp;c;”,它定義了一個(gè)名為p的指針型數(shù)組,其個(gè)元素p0,p1,p2分別指向f3個(gè)整型變量a,b,c。31. 解析: 二維數(shù)組初始化時(shí)允許只對部分元素賦初值,其余自動為0。32. 解析: 第五行處的輸入值格式和定義不一致,定義的為float類型a3,輸入值格式為scanf(“%f”,&ai);如果定義的為int類型a3,則輸入值格式為scanf(“%d”,&ai)。33. 解析: C語言中規(guī)定二維數(shù)組的初始化定義數(shù)組時(shí)對第一維的長度可以不指定,但第二維的長度不可以省略類型不可以省略。34. 解析: 本題用循環(huán)的方法考查對數(shù)組概念的掌握。首先,當(dāng)i=0時(shí),數(shù)組中的位置是a20=
37、7,當(dāng)然,如果用排除法的話,就不用考慮后面的循環(huán)了,因?yàn)樵?個(gè)選項(xiàng)中,第1個(gè)數(shù)為7的選項(xiàng)只有B)。本題執(zhí)行第2次循環(huán)時(shí),i的值為1,則printf函數(shù)中的數(shù)組指向?yàn)閍11=5,依次循環(huán),可求出答案。35. 解析: 關(guān)于二維數(shù)組的初始化,我們需要掌握如下方法:所賦初值個(gè)數(shù)與數(shù)組元素的個(gè)數(shù)相同;所賦初值行數(shù)少于數(shù)組行數(shù)時(shí),系統(tǒng)將自動給后面各行的元素補(bǔ)初值0;在給二維數(shù)組賦初值時(shí)可以不用行花括號對。選項(xiàng)C)應(yīng)該是int a32=1,2,3,4,5,6;36. 解析: 若定義數(shù)組為an,則下標(biāo)為從0到n-1,顯然選項(xiàng)A)錯(cuò)誤;選項(xiàng)B)中形式為引用二維數(shù)組元素的格式;C語言中元素下標(biāo)放在中括號里。37.
38、 解析: 本題中直接使用指針變量k,但在使用時(shí)要注意對k的指針運(yùn)算,此外,一開始應(yīng)認(rèn)*k的值為數(shù)組中的某一下標(biāo)值,即*k=0,本函數(shù)的功能是找出數(shù)組中的最大元素的位置及最大元素的值。38. 【命題目的】考查對于一維數(shù)組元素引用的掌握情況?!窘忸}要點(diǎn)】在引用一維數(shù)組元素時(shí)只能有一個(gè)下標(biāo),引用形式為:數(shù)組名下標(biāo)表達(dá)式,在C語言中,一個(gè)數(shù)組不能整體引用,在引用數(shù)組元素時(shí),數(shù)組元素中下標(biāo)表達(dá)式的值必須是整數(shù),下標(biāo)表達(dá)式的下限為0?!惧e(cuò)解分析】選項(xiàng)A)超過了數(shù)組定義的范圍,因?yàn)橄聵?biāo)表達(dá)式的下限值為0,上限值為9;選項(xiàng)B)不能整體引用一個(gè)數(shù)組元素;選項(xiàng)C)與選項(xiàng)B)是同樣的錯(cuò)誤?!究键c(diǎn)鏈接】一個(gè)數(shù)組在內(nèi)存
39、中占有連續(xù)的存儲單元。39. 【命題目的】考查對于一維數(shù)組的定義方法的掌握情況。【解題要點(diǎn)】在C語言中,定義一維數(shù)組的語句一般形式為:類型名 數(shù)組名常量表達(dá)式?!惧e(cuò)解分析】選項(xiàng)B)和D)都是常量表達(dá)式的一種,選項(xiàng)C)不是常量?!究键c(diǎn)鏈接】整型常量或整型表達(dá)式允許作為數(shù)組下標(biāo)的數(shù)據(jù)類型。40. 【命題目的】考查數(shù)組的綜合運(yùn)用。【解題要點(diǎn)】讀懂兩個(gè)循環(huán)的關(guān)系,是解這個(gè)題目的關(guān)鍵,本題的第一個(gè)for循環(huán)的作用是實(shí)現(xiàn)對數(shù)組元素的遍歷,第二個(gè)循環(huán)的作用是排序?!惧e(cuò)解分析】while(j>=0 && t>cj),這個(gè)語句是控制排序的關(guān)鍵語句,它即實(shí)現(xiàn)了比較兩個(gè)元素大小的作用,又
40、實(shí)現(xiàn)了元素向后移動的作用,不斷地把大的數(shù)據(jù)向前移動,直到找到一個(gè)比它小的,或到數(shù)據(jù)的上界為止?!究键c(diǎn)鏈接】getchar()和putchar()函數(shù)的用法。41. 【命題目的】考查對于通過地址來引用二維數(shù)組元素的掌握情況?!窘忸}要點(diǎn)】數(shù)組a55,0<=i<5,0<=j<5,則可以用五種表達(dá)式來引用,aij,*a(ai+j),*(*(a+i)+j),(*(a+i)j,*(&a00+5*i+j)。【錯(cuò)解分析】數(shù)組的下限為0,%后面為小寫的x,所以輸出的結(jié)果為小寫字母表示的十六進(jìn)制?!究键c(diǎn)鏈接】如果%后面用大寫的X則輸出用大寫的字母表示,否則用小寫字母表示。填空題1.
41、 解析: 在函數(shù)中,可以通過指針變量來引用調(diào)用函數(shù)中對應(yīng)的數(shù)組元素,此操作是通過傳遞數(shù)組的首地址來實(shí)現(xiàn)。2. 解析: 解答本題的關(guān)鍵是要讀懂程序,試題要找出能被7或11整除的所有整數(shù),注意數(shù)學(xué)中的“或”和C語言中的“或”的區(qū)別,但在此處,if條件語句中用了“|”運(yùn)算符,若要找能同時(shí)被7和11整除的所有整數(shù)則在if()中應(yīng)用“&&”運(yùn)算符。當(dāng)然,如果m的值輸入50,即表達(dá)式fun(10,aa,&n);為fun(50,aa,&n);時(shí)輸入結(jié)果為:7 11 14 21 22 28 33 35 42 44 49。3. 【命題目的】考查對于數(shù)組操作的綜合運(yùn)用?!窘忸}要點(diǎn)】
42、深刻理解十進(jìn)制轉(zhuǎn)化為二進(jìn)制的方法,即取余法;數(shù)組名作為實(shí)參,在函數(shù)內(nèi)部可以直接修改調(diào)用函數(shù)中定義的數(shù)組的值?!究键c(diǎn)鏈接】dowhile循環(huán),先執(zhí)行循環(huán)體,后判斷循環(huán)條件。第章 字符串選擇題1. 解析: 字符型指針變量p中存放的是“china”的首地址,所以選項(xiàng)A)和B)錯(cuò)誤。s數(shù)組長度為6,而p所指向的字符串長度為5,二者不相等,排除選項(xiàng)C)。2. 解析: 在本題中,while(*p2=*p1)!= 0)有兩個(gè)作用,一個(gè)是判斷條件是否成立以決定是否再次進(jìn)入循環(huán),另一個(gè)作用是判定前先完成*p2=*p1,該處的作用是把p1所指存儲單元的字符逐一送p2所指存儲單元中,直到p1所指單元內(nèi)容為0為止。3
43、. 解析: 在內(nèi)存中,字符數(shù)據(jù)以ASCII碼存儲,它的存儲形式就與整數(shù)的存儲形式相類似。C語言使字符型數(shù)據(jù)和整型數(shù)據(jù)之間可以通用。也可以對字符數(shù)據(jù)進(jìn)行算術(shù)運(yùn)算,此時(shí)相當(dāng)于對它們的ASCII碼進(jìn)行算術(shù)運(yùn)算,在本題中,s+相當(dāng)于s=s+1,即讓s指向數(shù)組中的下一個(gè)元素。4. 解析: 函數(shù)調(diào)用的一般形式為:函數(shù)名(實(shí)參列表)首先調(diào)用函數(shù)func1(0),輸出st0=h。i值變?yōu)?,并調(diào)用函數(shù)func2(2),輸出st2=l。i值此時(shí)變?yōu)?,又調(diào)用函數(shù)func1(4),輸出st4=0。此時(shí)i值大于等于3,執(zhí)行完畢。因此,輸出結(jié)果為hlo。5. 解析: C語言中操作一個(gè)字符串常量的方法有:把字符串常量存
44、放在一個(gè)字符數(shù)組之中;用字符指針指向字符串, 然后通過字符指針來訪問字符串存貯區(qū)域。當(dāng)字符串常量在表達(dá)式中出現(xiàn)時(shí), 根據(jù)數(shù)組的類型轉(zhuǎn)換規(guī)則, 它被轉(zhuǎn)換成字符指針。本題D)項(xiàng)中錯(cuò)誤的關(guān)鍵是對數(shù)組初始化時(shí),可以在變量定義時(shí)整體賦初值,但不能在賦值語句中整體賦值。6. 解析: 本題考查指向字符串的指針的運(yùn)算方法。指針變量p首先指向字符串中的第一個(gè)字符A,執(zhí)行p=s+1后,p指向字符串中的第二個(gè)字符B,然后輸出值“BCD”并換行。依次執(zhí)行循環(huán)語句。7. 解析: 函數(shù)strcpy的功能是字符串拷貝,用法char *strcpy(char *str1,char *str2),作用是將字符串2復(fù)制到字符串1
45、中去。二維數(shù)組可以看做是一種特殊的一維數(shù)組,它的元素又是一個(gè)一維數(shù)組。本題把 arr看做是一個(gè)一維數(shù)組,它有兩個(gè)元素:arr0,arr1,每個(gè)元素又是一個(gè)包含4個(gè)元素的一維數(shù)組。8. 解析: 本題考查用strlen函數(shù)計(jì)算字符串長度的方法。該字符串中包含的字符是:t(跳格符)、"(雙引號)、065(ASCII值為八進(jìn)制065,也即十進(jìn)制為51的字符)、xff(ASCII值為十六進(jìn)制ff,也即十進(jìn)制為255的字符)、n(換行符)。9. 解析: 如果一個(gè)字符數(shù)組用來存儲字符串,那么在定義該字符數(shù)組時(shí),數(shù)組的大小應(yīng)該比它將要實(shí)際存放的字符串長度大1,所以選項(xiàng)A)和B)錯(cuò)。選項(xiàng)D)s本身就是
46、一個(gè)字符指針,不需再取地址。10. 解析: 在給數(shù)組賦值時(shí),可以用一個(gè)字符串作為初值,這種方法直觀,方便而且符合人們的習(xí)慣。數(shù)組array的長度不是5,而是6,這點(diǎn)必須要注意。因?yàn)樽址A康淖詈笥上到y(tǒng)加上一個(gè)0,因此,上面的初始化與char array=C,h,i,n,a,0;等價(jià)。11. 解析: 本題考查知識點(diǎn)有二:字符串常量是由雙引號括起來的一串字符,雖然C語言中沒有字符串?dāng)?shù)據(jù)類型,但卻允許使用“字符串常量”,每一個(gè)字符串常量都分別占用內(nèi)存中一連串連續(xù)的存儲空間,這些連續(xù)的存儲空間實(shí)際上就是字符型一維數(shù)組。如果一個(gè)字符數(shù)組用來作為字符串使用,那么在定義該字符數(shù)組時(shí),數(shù)組的大小就應(yīng)該比它將
47、要實(shí)際存放的字符串多一個(gè)元素。12. 解析: 本段程序的作用是輸出字符串“l(fā)anuage”中字母u之前的字符,并將其轉(zhuǎn)化為大寫字母。注意:如果一個(gè)字符數(shù)組用來作為字符串使用,那么在定義該字符數(shù)組時(shí),數(shù)組的大小就應(yīng)該比它將要實(shí)際存放的最長字符多一個(gè)元素,以存放0。13. 解析: 考查指向字符串的指針變量。在該題中,指針變量p指向的應(yīng)該是該字符串中的首地址,p+3指向的是字符串結(jié)束標(biāo)志0的地址,因而*(p+3)的值為0。14. 解析: 本題首先通過第一個(gè)while循環(huán)計(jì)算字符串a(chǎn)的長度,再通過第二個(gè)循環(huán),將字符串a(chǎn)和b相連,最后返回連接后的總長度。15. 解析: gets函數(shù)和puts函數(shù)是庫函數(shù)
48、,必須包含的頭文件是stdio.h16. 解析: 本題考查兩個(gè)知識點(diǎn):strlen函數(shù)的功能是求字符串的長度,并返回字符個(gè)數(shù),不計(jì)最后的0,strcpy函數(shù)的功能是把后面的字符串復(fù)制到前面字符串所指向的空間。17. 解析: 選項(xiàng)A)char *a;*a="china"應(yīng)改為char *a;,選項(xiàng)B)應(yīng)該是char str6;D)項(xiàng)表述方法有錯(cuò)誤。18. 解析: sizeof是求字節(jié)運(yùn)算符,在字符數(shù)組a中,0也作為字節(jié)保存,是a數(shù)組的一個(gè)成員,所以sizeof(a)的值應(yīng)為9,strlen是測試字符串長度的函數(shù),函數(shù)的值為字符串中的實(shí)際長度,不包括0在內(nèi)所以strlen(a)
49、的值為8。19. 解析: 本題題意要求刪除所有空格,即除了空格以外的其他所有字符都要留下。由于C語言中沒有直接刪除字符的操作,所以我們對于刪除字符的操作都是采用“留下”字符的算法,以前的題目亦是如此。用stri從串頭到串尾逐一走動,每走到一個(gè)字符都判斷其是否為空格,若不是空格(注意在if()的單引號之間有一個(gè)空格),則將其保存strj中。注意j的下標(biāo)變化、初值及最后加串結(jié)束符0。20. 解析: 本題綜合考查字符數(shù)組的賦值和strcpy函數(shù)的用法。C語言不允許用賦值表達(dá)式對字符數(shù)組賦值,如下面的語句就是非法的:str1="China",如果想把“China”這5個(gè)字符放到數(shù)組
50、str1中,除了逐個(gè)地輸入外,還能使用strcpy函數(shù),該函數(shù)的功能是將一個(gè)字符串復(fù)制到一字符數(shù)組中。例如:strcpy(str1,“China”);或strcpy(str1,str2);注意,不能企圖用以下語句來實(shí)行賦值(將str2的值傳給str1):str1=str2;不能用賦值語句將一個(gè)字符串常量或字符數(shù)組直接給一個(gè)字符數(shù)組。strcpy函數(shù)的結(jié)構(gòu)是:strcpy(字符數(shù)組1,字符串2)其中,需要注意的是,字符數(shù)組1的長度不應(yīng)小于字符串2的長度,“字符數(shù)組1”必須寫成數(shù)組名形式,如(str1),“字符串2”可以是字符數(shù)組名,也可以是字符串常量,不能用賦值語句將一個(gè)字符串常量或字符數(shù)組直接
51、給一個(gè)字符數(shù)組。21. 解析: 當(dāng)執(zhí)行輸入時(shí),把整數(shù)賦給字符型變量c(整型與字符型能相互轉(zhuǎn)化),把23賦給整型變量i,把456賦給字符數(shù)組s,789之所以沒有被接受是因?yàn)樽址斎霑r(shí),遇空格結(jié)束。22. 解析: 本題考查字符串?dāng)?shù)組和指針的引用方式。在C語言中,系統(tǒng)在每個(gè)字符或數(shù)組的最后自動加入一個(gè)字符0,作為字符的結(jié)束標(biāo)志,在本題中,char a=“It is mine”;所表示的a字符串實(shí)際含有11個(gè)字符。23. 解析: 本題考查的重點(diǎn)是拷貝字符串使用strcpy()函數(shù),該函數(shù)的調(diào)用方式是:strcpy(字符數(shù)組, 字符串)其中“字符串”可以是字符串常量,也可以是字符數(shù)組。函數(shù)的功能是:將
52、“字符串”完整地復(fù)制到“字符數(shù)組”中,字符數(shù)組中原有內(nèi)容被覆蓋。使用該函數(shù)時(shí)注意:字符數(shù)組必須定義得足夠大,以便容納復(fù)制過來的字符串。復(fù)制時(shí),連同結(jié)束標(biāo)志0一起復(fù)制。不能用賦值運(yùn)算符“”將一個(gè)字符串直接賦值給一個(gè)字符數(shù)組,只能用strcpy()函數(shù)來處理。另外,本題還考查連接字符串的strcat()函數(shù),其調(diào)用方式是:strcat(字符數(shù)組, 字符串)功能是把“字符串”連接到“字符數(shù)組”中的字符串尾端,并存儲于“字符數(shù)組”中。“字符數(shù)組”中原來的結(jié)束標(biāo)志,被“字符串”的第一個(gè)字符覆蓋,而“字符串”在操作中未被修改。使用該函數(shù)時(shí)注意:由于沒有邊界檢查,編程者要注意保證“字符數(shù)組”定義得足夠大,以
53、便容納連接后的目標(biāo)字符串;否則,會因長度不夠而產(chǎn)生問題。連接前兩個(gè)字符串都有結(jié)束標(biāo)志0,連接后“字符數(shù)組”中存儲的字符串的結(jié)束標(biāo)志0被舍棄,只在目標(biāo)串的最后保留一個(gè)0。24. 解析: 該題稍微難一點(diǎn)。主要要搞清楚以下幾點(diǎn):定義了一個(gè)指針數(shù)組char *p2后,程序中第一個(gè)循環(huán)for(i=0;i<2;i+)pi=chi;的作用,是使指針數(shù)組的p0元素(它本身是一個(gè)指針)指向了二維數(shù)組ch的第一行字符串,并使指針數(shù)組的p1元素指向了二維數(shù)組ch的第二行字符串,這樣,就使指針數(shù)組p和二維數(shù)組ch建立起了一種對應(yīng)關(guān)系,以后對二維數(shù)組ch的某個(gè)元素的引用就有兩種等價(jià)的形式:chij或pij。對二維
54、數(shù)組ch的初始化,使其第一行ch0中存入了字符串“6937”,第二行ch1中的內(nèi)容為字符串“8254”。程序中第二個(gè)循環(huán)中的循環(huán)體s=s*10+pij-0;的功能是這樣的,每執(zhí)行一次,將s中的值乘以10(也即,將s中的數(shù)值整體向左移動一位,并在空出來的個(gè)位上添一個(gè)0),再將當(dāng)前pij中的字符量轉(zhuǎn)換為相應(yīng)的數(shù)字,然后把這個(gè)數(shù)字加到s的個(gè)位上。注意到內(nèi)層循環(huán)的循環(huán)條件pij>0是指pij中的字符只要不是字符串結(jié)束標(biāo)志0就繼續(xù)循環(huán),語句j+=2;是使下標(biāo)j每次增加2,也即一個(gè)隔一個(gè)地從pi所指向的字符串中取出字符。經(jīng)過上述解析后,不難看出,該程序首先從p0所指向的字符串“6937”中一個(gè)隔一個(gè)
55、地取出字符,分別是6和3,然后從p1所指向的字符串“8254”中一個(gè)隔一個(gè)地取出字符,分別是8和5,同時(shí)經(jīng)過轉(zhuǎn)換和相加運(yùn)算后,結(jié)果s中的值應(yīng)該是6385,所以,正確答案是C)。25. 解析: while語句的一般形式為: while(表達(dá)式)語句; 其中表達(dá)式是循環(huán)條件,語句為循環(huán)體。while語句的語義是:計(jì)算表達(dá)式的值,當(dāng)值為真(非0)時(shí), 執(zhí)行循環(huán)體語句。本題中邏輯與符號連接的表達(dá)式值為真,*str2+=*str1+語句是將str1的內(nèi)容逐個(gè)復(fù)制到str2字符串。26. 解析: 對于字符串指針,其保留的是整個(gè)串的首地址,即為第一個(gè)字符的起始地址,當(dāng)該指針做算術(shù)運(yùn)算時(shí),就是該指針根據(jù)其類型
56、向后移動相應(yīng)的存儲空間。27. 解析: 該定義中指明的是含有兩個(gè)元素的字符數(shù)組指針,對數(shù)組存放的都是首地址即串中的第一個(gè)字符的地址。28. 解析: 本題中,格式符0表示的是八進(jìn)制無符號形式輸出整型數(shù)(不帶前導(dǎo)0),字符常量在內(nèi)存中占一個(gè)字節(jié),存放的是ACS碼代碼值。C語言規(guī)定,所有字符常量都作為整型量來處理,在計(jì)算機(jī)內(nèi)部,其對應(yīng)的整數(shù)值就是ACS字符集中該字符的序號,即&*s中有幾個(gè)字符就輸出幾個(gè)*。29. 解析: C語言規(guī)定了一個(gè)字符串結(jié)束標(biāo)志,以字符0代表,在遇到0時(shí),表示字符串結(jié)束,由它前面的字符組成字符串。30. 【命題目的】考查對于字符數(shù)組的賦值的掌握情況?!窘忸}要點(diǎn)】通過賦
57、初值的方式給一維數(shù)組賦字符串,可以用給一般數(shù)組賦初值的相同方式給一維字符數(shù)組賦字符串,也可以在賦值時(shí)直接賦字符串常量?!惧e(cuò)解分析】選項(xiàng)B)和C)后面的0是多余的,不過也不錯(cuò),在C語言中,系統(tǒng)會自動在字符串的結(jié)尾處加上一個(gè)字符0作為串的結(jié)束標(biāo)記。【考點(diǎn)鏈接】注意,要有足夠的空間來存放字符串。31. 【命題目的】考查對于用一個(gè)一維字符數(shù)組來存放字符串的掌握情況?!窘忸}要點(diǎn)】在C語言中,通過使用庫函數(shù)允許對字符數(shù)組進(jìn)行整體輸入/輸出?!惧e(cuò)解分析】C語言不允許通過賦值運(yùn)算符對字符數(shù)組整體進(jìn)行賦值,對字符串使用符號=只能在說明字符數(shù)組并進(jìn)行初始化的時(shí)候進(jìn)行?!究键c(diǎn)鏈接】字符串結(jié)束標(biāo)志為0,計(jì)算字符串的實(shí)際長度時(shí)不計(jì)入串長。32. 【命題目的】考查對于用于字符串處理的函數(shù)的掌握情況。【解題要點(diǎn)】字符串復(fù)制函數(shù)strcpy調(diào)用形式為:strcpy(s1,s2),此函數(shù)用來把s2所指字符串的內(nèi)容復(fù)制到s
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 企業(yè)財(cái)務(wù)管理中的中級會計(jì)實(shí)務(wù)試題及答案
- 2025年物流行業(yè)綠色包裝技術(shù)應(yīng)用與推廣報(bào)告
- 2025年餐飲企業(yè)供應(yīng)鏈整合與成本控制技術(shù)趨勢報(bào)告
- 財(cái)務(wù)管理考試難點(diǎn)攻略試題及答案
- 2025年貨車修理業(yè)行業(yè)深度研究報(bào)告
- 2025年工業(yè)互聯(lián)網(wǎng)平臺區(qū)塊鏈智能合約安全性能優(yōu)化策略報(bào)告
- 2025年財(cái)務(wù)管理考試多種復(fù)習(xí)方式試題及答案
- 口罩加工合作協(xié)議書
- 工業(yè)互聯(lián)網(wǎng)平臺霧計(jì)算協(xié)同機(jī)制2025年:工業(yè)大數(shù)據(jù)在智能決策中的應(yīng)用與挑戰(zhàn)
- 員工離職保護(hù)協(xié)議書
- GB/T 33825-2017密封繼電器用鋼包銅復(fù)合棒線材
- GB/T 14846-2014鋁及鋁合金擠壓型材尺寸偏差
- GA/T 594-2006保安服務(wù)操作規(guī)程與質(zhì)量控制
- GA 258-2009警服單褲
- 高中生物365個(gè)判斷題涵蓋高一高二高三所有知識點(diǎn)
- 社會科學(xué)研究方法博士生課程
- 人教版初中音樂七年級上冊《牧歌》說課稿課件
- 2021年春新青島版(五四制)科學(xué)四年級下冊全冊教案
- 畢業(yè)論文指導(dǎo)教師指導(dǎo)記錄6篇
- 貝氏體鋼軌超高周疲勞行為的研究課件
評論
0/150
提交評論