2011年二級(jí)C語(yǔ)言上機(jī)題庫(kù)_南開100題.doc_第1頁(yè)
2011年二級(jí)C語(yǔ)言上機(jī)題庫(kù)_南開100題.doc_第2頁(yè)
2011年二級(jí)C語(yǔ)言上機(jī)題庫(kù)_南開100題.doc_第3頁(yè)
2011年二級(jí)C語(yǔ)言上機(jī)題庫(kù)_南開100題.doc_第4頁(yè)
2011年二級(jí)C語(yǔ)言上機(jī)題庫(kù)_南開100題.doc_第5頁(yè)
已閱讀5頁(yè),還剩123頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第01套: 給定程序中,函數(shù)fun的功能是:將形參n所指變量中,各位上為偶數(shù)的數(shù)去 除,剩余的數(shù)按原來(lái)從高位到低位的順序組成一個(gè)新的數(shù),并通過(guò)形參指針n傳回 所指變量。 例如,輸入一個(gè)數(shù):27638496,新的數(shù):為739。 請(qǐng)?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容并把下劃線刪除, 使程序得出正確的結(jié) 果。 解題思路: 第一處:t是通過(guò)取模的方式來(lái)得到*n的個(gè)位數(shù)字,所以應(yīng)填:10。 第二處:判斷是否是奇數(shù),所以應(yīng)填:0。 第三處:最后通形參n來(lái)返回新數(shù)x,所以應(yīng)填:x。 給定程序MODI1.C中函數(shù) fun 的功能是:計(jì)算n!。 例如,給n輸入5,則輸出120.000000。 第一處:條件語(yǔ)句書寫格式錯(cuò)誤,應(yīng)改為:if (n=0)。 第二處:語(yǔ)句后缺少分號(hào)。 請(qǐng)編寫一個(gè)函數(shù)fun,它的功能是:將一個(gè)數(shù)字字符串轉(zhuǎn)換為一個(gè)整數(shù)(不得 調(diào)用C語(yǔ)言提供的將字符串轉(zhuǎn)換為整數(shù)的函數(shù))。例如,若輸入字符串-1234,則 函數(shù)把它轉(zhuǎn)換為整數(shù)值 -1234。函數(shù)fun中給出的語(yǔ)句僅供參考。 解題思路: 本題是將一個(gè)數(shù)字字符串轉(zhuǎn)換為一個(gè)整數(shù)。 參考答案: n = fun(s); printf(%ldn,n); NONO ( ); NONO ( ) /* 本函數(shù)用于打開文件,輸入數(shù)據(jù),調(diào)用函數(shù),輸出數(shù)據(jù),關(guān)閉文件。 */ FILE *fp, *wf ; int i ; char s20 ; long n ; fp = fopen(c:testin.dat,r) ; wf = fopen(c:testout.dat,w) ; for(i = 0 ; i 10 ; i+) fscanf(fp, %s, s) ; n = fun(s); fprintf(wf, %ldn, n) ; fclose(fp) ; fclose(wf) ; 注意:由于NONO( )這個(gè)函數(shù)是改卷人用的,與考生沒有什么關(guān)系,故下面從第2套試題開始均省略NONO( )第02套: 給定程序中,函數(shù)fun的功能是將形參給定的字符串、整數(shù)、浮點(diǎn)數(shù)寫到文本 文件中,再用字符方式從此文本文件中逐個(gè)讀入并顯示在終端屏幕上。 請(qǐng)?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容并把下劃線刪除, 使程序得出正確的結(jié) 果。 解題思路: 本題是考察先把給定的數(shù)據(jù)寫入到文本文件中,再?gòu)脑撐募x出并顯示在屏幕上。 第一處:定義文本文件類型變量,所以應(yīng)填:FILE *。 第二處:判斷文件是否結(jié)束,所以應(yīng)填:fp。 第三處:顯示讀出的字符,所以應(yīng)填:ch。 * 給定程序MODI1.C中函數(shù)fun的功能是: 依次取出字符串中所有數(shù)字字符, 形 成新的字符串, 并取代原字符串。 請(qǐng)改正函數(shù)fun中指定部位的錯(cuò)誤, 使它能得出正確的結(jié)果。 解題思路: 第一處: 要求是取出原字符串中所有數(shù)字字符組成一個(gè)新的字符串,程序中是使用變量j 來(lái)控制新字符串的位置,所以應(yīng)改為:sj+=si;。 第二處: 置新字符串的結(jié)束符,所以應(yīng)改為:sj=0;. * 請(qǐng)編寫函數(shù)fun, 函數(shù)的功能是: 將M行N列的二維數(shù)組中的字符數(shù)據(jù), 按列的 順序依次放到一個(gè)字符串中。 例如, 二維數(shù)組中的數(shù)據(jù)為: W W W W S S S S H H H H 則字符串中的內(nèi)容應(yīng)是: WSHWSHWSH。 解題思路: 本題是把二維數(shù)組中的字符數(shù)據(jù)按列存放到一個(gè)字符串中。 1. 計(jì)算存放到一維數(shù)組中的位置。 2. 取出二維數(shù)組中的字符存放到一維數(shù)組(已計(jì)算出的位置)中。 參考答案: void fun(char sN, char *b) int i,j,n=0; for(i=0; i N;i+) /* 請(qǐng)?zhí)顚懴鄳?yīng)語(yǔ)句完成其功能 */ for(j = 0 ; j 。 第三處:把已排序的結(jié)構(gòu)數(shù)據(jù),重新寫入文件,所以應(yīng)填:fwrite。 * 給定程序MODI1.C中函數(shù)fun的功能是: 在字符串的最前端加入n個(gè)*號(hào), 形成 新串, 并且覆蓋原串。 注意: 字符串的長(zhǎng)度最長(zhǎng)允許為79。 請(qǐng)改正函數(shù)fun中指定部位的錯(cuò)誤, 使它能得出正確的結(jié)果。 解題思路: 第一處: 指針p應(yīng)指向s,所以應(yīng)改為:p=s;。 第二處: 死循環(huán),當(dāng)do while循環(huán)執(zhí)行一次,臨時(shí)變量p應(yīng)該指向字符串的下一位置,所以應(yīng)改為:while(*p+);。 * 請(qǐng)編寫函數(shù)fun,函數(shù)的功能是:統(tǒng)計(jì)各年齡段的人數(shù)。N個(gè)年齡通過(guò)調(diào)用隨機(jī) 函數(shù)獲得,并放在主函數(shù)的age數(shù)組中;要求函數(shù)把0至9歲年齡段的人數(shù)放在d0 中,把10至19歲年齡段的人數(shù)放在d1中,把20至29歲年齡段的人數(shù)放在d2中, 其余依此類推, 把100歲 (含100)以上年齡的人數(shù)都放在d10中。結(jié)果在主函數(shù)中輸出。 解題思路: 本題是統(tǒng)計(jì)各年齡段的人數(shù)。 1. 初始化各年齡段人數(shù)為0。 2. 使用for循環(huán)以及求出各年齡的十位數(shù)字作為存放人數(shù)的地址,如果大于值大于10,則存入d10中(大于110歲的人)。 參考答案: void fun( int *a, int *b) int i, j ; for(i = 0 ; i M ; i+) bi = 0 ; for(i = 0 ; i 10) bM - 1+ ; else bj+ ; double rnd() static t=29,c=217,m=1024,r=0; r=(r*t+c)%m; return(double)r/m); 第05套: 給定程序中,函數(shù)fun的功能是將參數(shù)給定的字符串、整數(shù)、浮點(diǎn)數(shù)寫到文本 文件中,再用字符串方式從此文本文件中逐個(gè)讀入,并調(diào)用庫(kù)函數(shù)atoi和atof將 字符串轉(zhuǎn)換成相應(yīng)的整數(shù)、浮點(diǎn)數(shù),然后將其顯示在屏幕上。 請(qǐng)?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容并把下劃線刪除, 使程序得出正確的結(jié) 果。 解題思路: 本題是考察先把給定的數(shù)據(jù)寫入到文本文件中,再?gòu)脑撐募x出并轉(zhuǎn)換成相應(yīng)的整數(shù)、浮點(diǎn)數(shù)顯示在屏幕上。 第一處:定義文本文件類型變量,所以應(yīng)填:FILE *。 第二處:關(guān)閉剛寫入的文件,所以應(yīng)填:fclose(fp)。 第三處:從文件中讀出數(shù)據(jù),所以應(yīng)填:fp。 * 給定程序MODI1.C中函數(shù)fun的功能是: 對(duì)N名學(xué)生的學(xué)習(xí)成績(jī),按從高到低的 順序找出前m(m10)名學(xué)生來(lái), 并將這些學(xué)生數(shù)據(jù)存放在一個(gè)動(dòng)態(tài)分配的連續(xù)存 儲(chǔ)區(qū)中, 此存儲(chǔ)區(qū)的首地址作為函數(shù)值返回。 解題思路: 第一處: 語(yǔ)句最后缺少分號(hào)。 第二處: 應(yīng)該使用方括號(hào),而不是圓括號(hào)。 像此類,使用編譯,即可發(fā)現(xiàn)。 * 請(qǐng)編寫函數(shù)fun, 函數(shù)的功能是: 刪去一維數(shù)組中所有相同的數(shù), 使之只剩一 個(gè)。數(shù)組中的數(shù)已按由小到大的順序排列,函數(shù)返回刪除后數(shù)組中數(shù)據(jù)的個(gè)數(shù)。 例如, 一維數(shù)組中的數(shù)據(jù)是: 2 2 2 3 4 4 5 6 6 6 6 7 7 8 9 9 10 10 10。 刪除后,數(shù)組中的內(nèi)容應(yīng)該是: 2 3 4 5 6 7 8 9 10。 解題思路: 本題是刪除已排序過(guò)數(shù)組中的相同數(shù)。 1. 取出數(shù)組中的第1個(gè)數(shù)存放在臨時(shí)變量k中,再利用for循環(huán)來(lái)依次判斷所有的數(shù)。 2. 如果取出的數(shù)和k相比,如果不相同,則仍存放在原數(shù)組中,其中存放的位置由j來(lái)控制, 接著把這個(gè)數(shù)重新存入k。如果相同,則取下一數(shù)。 參考答案: int fun(int a, int n) int i, j = 1, k = a0 ; for(i = 1 ; i n ; i+) if(k != ai) aj+=ai ; k = ai ; aj = 0 ; return j ; 第06套: 給定程序中,函數(shù)fun的功能是根據(jù)形參i的值返回某個(gè)函數(shù)的值。當(dāng)調(diào)用正 確時(shí), 程序輸出: x1=5.000000, x2=3.000000, x1*x1+x1*x2=40.000000 請(qǐng)?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容并把下劃線刪除, 使程序得出正確的結(jié) 果。 解題思路: 本題是根據(jù)給定的公式來(lái)計(jì)算函數(shù)的值。 第一處:程序中使用雙精度double類型進(jìn)行計(jì)算,所以函數(shù)的返回值類型也為double,所以應(yīng)填:double。 第二處:當(dāng)i等于1時(shí),則返回f1函數(shù)的值,所以應(yīng)填:f1。 第三處:如果i不等于1,則返回f2函數(shù)的值,所以應(yīng)填:f2。 * 給定程序MODI1.C中函數(shù)fun的功能是: 比較兩個(gè)字符串,將長(zhǎng)的那個(gè)字符串 的首地址作為函數(shù)值返回。 請(qǐng)改正函數(shù)fun中指定部位的錯(cuò)誤, 使它能得出正確的結(jié)果。 解題思路: 第一處: 試題要求返回字符串的首地址,所以應(yīng)改為:char *fun(char *s,char *t) 第二處: 取字符串指針ss的下一個(gè)位置,所以應(yīng)改為:ss+;。 第三處:取字符串指針tt的下一個(gè)位置,所以應(yīng)改為:tt+;。 * 請(qǐng)編寫函數(shù)fun,函數(shù)的功能是: 移動(dòng)字符串中的內(nèi)容,移動(dòng)的規(guī)則如下: 把第 1到第m個(gè)字符, 平移到字符串的最后, 把第m+1到最后的字符移到字符串的前部。 例如, 字符串中原有的內(nèi)容為: ABCDEFGHIJK, m的值為3, 則移動(dòng)后, 字符串 中的內(nèi)容應(yīng)該是: DEFGHIJKABC。 注意:部分源程序在文件PROG1.C中。 解題思路: 本題是考察字符串的操作。 1. 由于函數(shù)fun1是將字符串中字符循環(huán)左移一個(gè)位置,并通過(guò)實(shí)參w返回循環(huán)左移一個(gè)位置的字符串。 2. 利用循環(huán)for語(yǔ)句來(lái)操作多少個(gè)字符(m)需要循環(huán)左移。 參考答案: void fun1(char *w) /* 本函數(shù)的功能是將字符串中字符循環(huán)左移一個(gè)位置 */ int i; char t; t=w0; for(i=0;istrlen(w)-1;i+) wi=wi+1; wstrlen(w)-1=t; void fun(char *w, int m) /* 可調(diào)用fun1函數(shù)左移字符 */ int i; for(i = 0 ; i am) m=k;。 * 請(qǐng)編寫一個(gè)函數(shù) unsigned fun ( unsigned w ),w 是一個(gè)大于10的無(wú)符 號(hào)整數(shù),若 w 是 n (n 2)位的整數(shù),函數(shù)求出w的低 n-1位的數(shù)作為函數(shù)值返 回。 例如:w 值為 5923,則函數(shù)返回 923; w 值為 923 則函數(shù)返回 23。 解題思路: 本題是考察考生怎樣獲取一個(gè)符合要求的無(wú)符號(hào)整數(shù)。本題是應(yīng)用if條件語(yǔ)句首先判斷給出的數(shù)是幾位數(shù),再模相應(yīng)的值,最后得出的余數(shù)就是結(jié)果。 參考答案: unsigned fun ( unsigned w ) if(w10000) w %= 10000 ; else if(w1000) w %= 1000 ; else if(w100) w %= 100 ; else if(w10) w %=10 ; return w ; 第08套: 給定程序通過(guò)定義并賦初值的方式,利用結(jié)構(gòu)體變量存儲(chǔ)了一名學(xué)生的學(xué)號(hào)、 姓名和3門課的成績(jī)。函數(shù)fun的功能是將該學(xué)生的各科成績(jī)都乘以一個(gè)系數(shù)a。 請(qǐng)?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié) 果。 解題思路: 本題是利用結(jié)構(gòu)體存儲(chǔ)學(xué)生記錄并由實(shí)參ss返回。 第一處:實(shí)參ss是一個(gè)結(jié)構(gòu)型指針變量,所以應(yīng)填:STU。 第二處:該學(xué)生的各科成績(jī)都乘以一個(gè)系數(shù)a,所以應(yīng)填:scorei。 第三處:函數(shù)的調(diào)用,由于函數(shù)定義時(shí)使用的指針結(jié)構(gòu)型變量,所以應(yīng)填:&std。 * 給定程序MODI1.C中函數(shù)fun的功能是:求k!(k13),所求階乘的值作為函 數(shù)值返回。例如:若k = 10,則應(yīng)輸出:3628800。 解題思路: 第一處:條件判斷缺少圓括號(hào)。 第二處:判斷相等的符號(hào)是=。 * 程序定義了NN的二維數(shù)組,并在主函數(shù)中自動(dòng)賦值。請(qǐng)編寫函數(shù) fun(int aN, int n),函數(shù)的功能是:使數(shù)組左下三角元素中的值乘以n 。 例如:若n的值為3,a 數(shù)組中的值為 | 1 9 7 | | 3 9 7 | a = | 2 3 8 | 則返回主程序后a數(shù)組中的值應(yīng)為 | 6 9 8 | | 4 5 6 | | 12 15 18| 解題思路: 本題是利用兩重循環(huán)給二維數(shù)組左下三角元素中的值乘以n。 參考答案: int fun ( int aN, int n ) int i, j; for(i = 0 ; i N ; i+) for(j = 0 ; j = i; j+) aij *= n ; 第09套: 給定程序中,函數(shù)fun的功能是將不帶頭節(jié)點(diǎn)的單向鏈表結(jié)點(diǎn)數(shù)據(jù)域中的數(shù)據(jù)從小到大排序。即若原鏈表結(jié)點(diǎn)數(shù)據(jù)域從頭至尾的數(shù)據(jù)為:10、4、2、8、6,排序后鏈表結(jié)點(diǎn)數(shù)據(jù)域從頭至尾的數(shù)據(jù)為:2、4、6、8、10。 請(qǐng)?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容并把下劃線刪除, 使程序得出正確的結(jié) 果。 解題思路: 本題是考察使用鏈表方法,使用兩重while循環(huán)語(yǔ)句,對(duì)鏈表的結(jié)點(diǎn)數(shù)據(jù)進(jìn)行升序排列。 第一處:由于外循環(huán)變量使用p指針,內(nèi)循環(huán)變量使用q指針,所以q指向必須指向p的next 指針,因此應(yīng)填寫:p.next。 第二處:判斷內(nèi)循環(huán)q指針是否結(jié)束,所以應(yīng)填:q。 第三處:外循環(huán)控制變量p指向自己的next指針,所以應(yīng)填:p.next。 * 給定程序MODI1.C中函數(shù)fun的功能是: 將s所指字符串中的字母轉(zhuǎn)換為按字母序列的后續(xù)字母(但Z轉(zhuǎn)換為A, z轉(zhuǎn)換為a),其它字符不變。 請(qǐng)改正函數(shù)fun中指定部位的錯(cuò)誤, 使它能得出正確的結(jié)果。 第一處: 使用while循環(huán)來(lái)判斷字符串指針s是否結(jié)束,所以應(yīng)改為:while(*s)。 第二處: 取字符串指針s的下一個(gè)位置,所以應(yīng)改為:s+;。 * 請(qǐng)編寫函數(shù)fun, 函數(shù)的功能是: 移動(dòng)一維數(shù)組中的內(nèi)容; 若數(shù)組中有n個(gè)整 數(shù), 要求把下標(biāo)從0到p(含p,p小于等于n-1)的數(shù)組元素平移到數(shù)組的最后。 例如, 一維數(shù)組中的原始內(nèi)容為: 1,2,3,4,5,6,7,8,9,10; p的值為3。移動(dòng) 后, 一維數(shù)組中的內(nèi)容應(yīng)為: 5,6,7,8,9,10,1,2,3,4。 解題思路: 本題是考察一維數(shù)組的操作。 1. 定義一維數(shù)組中間變量b,把n值后面數(shù)組中的內(nèi)容存入b中。 2. 再把m前的數(shù)組中的內(nèi)容存入b中。 3. 最后把數(shù)組b的內(nèi)容依次存放到w中。 參考答案: void fun(int *w, int p, int n) int i, j = 0, bN ; for(i = p + 1 ; i n ; i+) bj+ = wi ; for(i = 0 ; i = p ; i+) bj+ = wi ; for(i = 0 ; i next。 第二處:判斷p指針是否結(jié)束,所以應(yīng)填寫:0。 第三處:q指向原q的next指針,所以應(yīng)填:r。 * 給定程序MODI1.C中函數(shù)fun的功能是: 計(jì)算s所指字符串中含有t所指字符串 的數(shù)目, 并作為函數(shù)值返回。 請(qǐng)改正函數(shù)fun中指定部位的錯(cuò)誤, 使它能得出正確的結(jié)果。 注意: 不要改動(dòng)main函數(shù), 不得增行或刪行, 也不得更改程序的結(jié)構(gòu)! 給定源程序: 解題思路: 第一處: 程序中子串是由變量t來(lái)實(shí)現(xiàn)的,再根據(jù)下面while循環(huán)體中語(yǔ)句可知,所以應(yīng)改為:r=t;。 第二處: 是判斷相等的條件,所以應(yīng)改為:if(*r=0)。 * 請(qǐng)編寫函數(shù)fun, 函數(shù)的功能是: 將放在字符串?dāng)?shù)組中的M個(gè)字符串(每串的長(zhǎng) 度不超過(guò)N), 按順序合并組成一個(gè)新的字符串。函數(shù)fun中給出的語(yǔ)句僅供參考。 例如, 字符串?dāng)?shù)組中的M個(gè)字符串為 AAAA BBBBBBB CC 則合并后的字符串的內(nèi)容應(yīng)是: AAAABBBBBBBCC。 提示:strcat(a,b)的功能是將字符串b復(fù)制到字符串a(chǎn)的串尾上,成為一個(gè)新 串。 解題思路: 本題是考察字符串的操作。 使用for循環(huán)以及C語(yǔ)言函數(shù)strcat依次連接起來(lái)。 參考答案: #include #define M 3 #define N 20 void fun(char aMN, char *b) /* 以下代碼僅供參考 */ int i; *b=0; for(i = 0 ; i M ; i+) strcat(b, ai) ; 第12套: 給定程序中,函數(shù)fun的功能是將不帶頭結(jié)點(diǎn)的單向鏈表逆置。即若原鏈表中 從頭至尾結(jié)點(diǎn)數(shù)據(jù)域依次為:2、4、6、8、10,逆置后,從頭至尾結(jié)點(diǎn)數(shù)據(jù)域依次 為:10、8、6、4、2。 請(qǐng)?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容并把下劃線刪除, 使程序得出正確的結(jié) 果。 解題思路: 本題是考察使用鏈表方法,對(duì)鏈表的結(jié)點(diǎn)數(shù)據(jù)進(jìn)行降序排列,最后通過(guò)函數(shù)進(jìn)行返回。 第一處:由于鏈表中的所有結(jié)果要求通過(guò)函數(shù)進(jìn)行返回,所以應(yīng)填:NODE *。 第二處:中間變量r用來(lái)保存q的next指針,所以應(yīng)填:next。 第三處:q指向原q的next指針,所以應(yīng)填:r。 * 給定程序MODI1.C中函數(shù)fun的功能是: 將s所指字符串中位于奇數(shù)位置的字符 或ASCII碼為偶數(shù)的字符放入t所指數(shù)組中(規(guī)定第一個(gè)字符放在第0位中)。 例如, 字符串中的數(shù)據(jù)為: AABBCCDDEEFF, 則輸出應(yīng)當(dāng)是:ABBCDDEFF。 第一處: 根據(jù)試題分析,兩個(gè)條件之間應(yīng)該是“或”的關(guān)系,而不是“與”的關(guān)系,所以應(yīng)改為:if(i%2 | si%2=0)。 第二處: 當(dāng)字符串處理結(jié)束后,應(yīng)該補(bǔ)上字符串的結(jié)束符,那么字符串t的位置是由i來(lái)控制,所以應(yīng)改為:tj=0;。 * 請(qǐng)編寫函數(shù)fun, 函數(shù)的功能是: 將M行N列的二維數(shù)組中的數(shù)據(jù), 按列的順序 依次放到一維數(shù)組中。函數(shù)fun中給出的語(yǔ)句僅供參考。 例如, 二維數(shù)組中的數(shù)據(jù)為: 33 33 33 33 44 44 44 44 55 55 55 55 則一維數(shù)組中的內(nèi)容應(yīng)是: 33 44 55 33 44 55 33 44 55 33 44 55。 解題思路: 本題是把二維數(shù)組中的數(shù)據(jù)按行存放到一維數(shù)組中。 1. 計(jì)算存放到一維數(shù)組中的位置。 2. 取出二維數(shù)組中的數(shù)據(jù)存放到一維數(shù)組(已計(jì)算出的位置)中。 參考答案: void fun(int (*s)10, int *b, int *n, int mm, int nn) /* 以下代碼僅供參考 */ int i,j,np=0; /* np用作b數(shù)組下標(biāo) */ for(i = 0 ; i nn ; i+) for(j = 0 ; j next。 第二處:使用while循環(huán),對(duì)鏈表中結(jié)點(diǎn)的數(shù)據(jù)進(jìn)行排序,q必須指向p結(jié)構(gòu)指針的next指針。所以應(yīng)填寫:p-next。 第三處:如果當(dāng)前結(jié)點(diǎn)中的數(shù)據(jù)大于(大于等于)循環(huán)中的結(jié)點(diǎn)數(shù)據(jù),那么進(jìn)行交換,所以應(yīng)填寫:(或=)。 * 給定程序MODI1.C是建立一個(gè)帶頭結(jié)點(diǎn)的單向鏈表, 并用隨機(jī)函數(shù)為各結(jié)點(diǎn)數(shù) 據(jù)域賦值。函數(shù)fun的作用是求出單向鏈表結(jié)點(diǎn)(不包括頭結(jié)點(diǎn))數(shù)據(jù)域中的最大值, 并且作為函數(shù)值返回。 請(qǐng)改正函數(shù)fun中指定部位的錯(cuò)誤, 使它能得出正確的結(jié)果。 注意: 不要改動(dòng)main函數(shù), 不得增行或刪行, 也不得更改程序的結(jié)構(gòu)! 給定源程序: 解題思路: 程序中是使用while循環(huán)語(yǔ)句和結(jié)合結(jié)構(gòu)指針p來(lái)找到數(shù)據(jù)域中的最大值。 第一處: p指向形參結(jié)構(gòu)指針h的next指針,所以應(yīng)改為:p=h-next;。 第二處: p指向自己的下一個(gè)結(jié)點(diǎn),所以應(yīng)改為:p=p-next, * 請(qǐng)編寫函數(shù)fun, 函數(shù)的功能是: 將M行N列的二維數(shù)組中的數(shù)據(jù),按行的順序 依次放到一維數(shù)組中, 一維數(shù)組中數(shù)據(jù)的個(gè)數(shù)存放在形參n所指的存儲(chǔ)單元中。 例如, 二維數(shù)組中的數(shù)據(jù)為: 33 33 33 33 44 44 44 44 55 55 55 55 則一維數(shù)組中的內(nèi)容應(yīng)是: 33 33 33 33 44 44 44 44 55 55 55 55。 注意:部分源程序在文件PROG1.C中。 請(qǐng)勿改動(dòng)主函數(shù)main和其它函數(shù)中的任何內(nèi)容, 僅在函數(shù)fun的花括號(hào)中填入 你編寫的若干語(yǔ)句。 給定源程序: 解題思路: 本題是把二維數(shù)組中的數(shù)據(jù)按行存放到一維數(shù)組中。 1. 計(jì)算存放到一維數(shù)組中的位置。 2. 取出二維數(shù)組中的數(shù)據(jù)存放到一維數(shù)組(已計(jì)算出的位置)中。 參考答案: void fun(int (*s)10, int *b, int *n, int mm, int nn) int i, j, k ; for(i = 0 ; i mm ; i+) for(j = 0 ; j nn ; j+) k = i * nn + j ; bk = sij ; *n = mm * nn ; main() int w1010 = 33,33,33,33,44,44,44,44,55,55,55,55,i,j ; int a100 = 0, n = 0 ; printf(The matrix:n) ; for(i = 0 ; i 3 ; i+) for(j = 0 ; j 4 ; j+) printf(%3d,wij) ; printf(n) ; fun(w, a, &n, 3, 4) ; printf(The A array:n) ; for(i = 0 ; i next; 第二處:指向p的下一個(gè)結(jié)點(diǎn)來(lái)實(shí)現(xiàn)循環(huán),所以應(yīng)改為:p=p-next; * 請(qǐng)編寫函數(shù)fun, 函數(shù)的功能是: 判斷字符串是否為回文?若是, 函數(shù)返回1, 主函數(shù)中輸出: YES, 否則返回0, 主函數(shù)中輸出NO?;匚氖侵疙樧x和倒讀都一樣 的字符串。 例如, 字符串LEVEL是回文, 而字符串123312就不是回文。 注意:部分源程序在文件PROG1.C中。 請(qǐng)勿改動(dòng)主函數(shù)main和其它函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入 你編寫的若干語(yǔ)句。 給定源程序: 解題思路: 本題是考察如何判斷一個(gè)字符串是回文字符串,回文是指順讀和倒讀都一樣的字符串??梢岳胒or循環(huán)語(yǔ)句來(lái)判斷,如果前后不一致,則不是回文字符串。 參考答案: int fun(char *str) int i, j = strlen(str) ; for(i = 0 ; i next)。 3. 判斷p指針是否結(jié)束,如果結(jié)束,則返回max,否則做下一步。 4. 判斷max是否小于p-s,如果小于,則max取p-s,否則不替換。 5. 取p-next賦值給p(取下一結(jié)點(diǎn)位置給p),轉(zhuǎn)3繼續(xù)。 參考答案: double fun( STREC *h ) double max=h-s; STREC *p; p=h-next; while(p) if(p-smax ) max=p-s; p=p-next; return max; STREC * creat( double *s) STREC *h,*p,*q; int i=0; h=p=(STREC*)malloc(sizeof(STREC);p-s=0; while(is=si; i+; p-next=q; p=q; p-next=0; return h; outlist( STREC *h) STREC *p; p=h-next; printf(head); do printf(-%2.0f,p-s);p=p-next; while(p!=0); printf(nn); 第16套: 給定程序中,函數(shù)fun的功能是:求出形參ss所指字符串?dāng)?shù)組中最長(zhǎng)字符串的 長(zhǎng)度,將其余字符串右邊用字符*補(bǔ)齊,使其與最長(zhǎng)的字符串等長(zhǎng)。ss所指字符串 數(shù)組中共有M個(gè)字符串,且串長(zhǎng)N。 請(qǐng)?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié) 果。 注意:源程序存放在考生文件夾下的BLANK1.C中。 不得增行或刪行,也不得更改程序的結(jié)構(gòu)! 給定源程序: 解題思路: 第一處:利用for循環(huán)語(yǔ)句取當(dāng)前字符串的長(zhǎng)度,所以應(yīng)填:ssi。 第二處:在字符串的右邊填字符*,其開始位置是n+j,其中n是該字符串本身的長(zhǎng)度,j是循環(huán)控制變量,所以應(yīng)填:n+j。 第三處:字符串處理結(jié)束應(yīng)置字符串結(jié)束符,其位置是n+j

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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)論