c語言09年4月沖刺復(fù)習(xí)資料-上機(jī)填空題分析_第1頁
c語言09年4月沖刺復(fù)習(xí)資料-上機(jī)填空題分析_第2頁
c語言09年4月沖刺復(fù)習(xí)資料-上機(jī)填空題分析_第3頁
c語言09年4月沖刺復(fù)習(xí)資料-上機(jī)填空題分析_第4頁
c語言09年4月沖刺復(fù)習(xí)資料-上機(jī)填空題分析_第5頁
已閱讀5頁,還剩39頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、*第一題目*對(duì)應(yīng)的代碼:/*found*/ for (j=2; j=i) j=i,表示在上面if (i%j = 0)沒有成功,所以會(huì)循環(huán)執(zhí)行for (j=2; j=i,這樣可以知道該數(shù)字i就是素?cái)?shù)。 count+; printf( count%15? %5d:n%5d,i);*第二題目*填空題:代碼:/*found*/ for (i=0; in/2; i+)/通過一次循環(huán)來實(shí)現(xiàn)將數(shù)組逆置。n/2,循環(huán)的位置,只需要循環(huán)到數(shù)組的中間位置,就可以完成逆置了。 t=ai;/*found*/ ai = an-1-i; /將前面的數(shù)組與后面的數(shù)組進(jìn)行對(duì)換。當(dāng)i0的時(shí)候,表示是第一個(gè)數(shù)組元素,所以要和最后

2、一個(gè)數(shù)組元素互換,所以是an-1-i/*found*/ an-1-i = t; /將前面的數(shù)組元素放到后面去。直接將上面的代碼抄下來就可以了 *第三題目*代碼:分析:int fun(STU *std, STU *k, int year) int i,n=0; for (i=0; iN; i+)/*found*/ if( stdi.year = =year) 由于要比較的是相同的年數(shù),所以要將每次循環(huán)的結(jié)構(gòu)體中的year都要比較一次,當(dāng)我們指定的參數(shù)year和我們結(jié)構(gòu)體中某個(gè)元素的year相同的時(shí)候,就執(zhí)行下面的“把這個(gè)結(jié)構(gòu)體數(shù)據(jù)保存到數(shù)組k中/*found*/ kn+= stdi; 要注意,n

3、+,之后那么下次新得到的數(shù)據(jù)就放到了后面,例如,第一個(gè)放到了k0,由于進(jìn)行了n+,那么下次符合條件的新的結(jié)構(gòu)體就放到了k1中了。這里注意:進(jìn)行的是結(jié)構(gòu)體的整體復(fù)制,所以是填寫stdi這個(gè)結(jié)構(gòu)體的名稱。/*found*/ return (n); 根據(jù)題目的要求,是要求返回符合條件的結(jié)構(gòu)的數(shù)目,很多人會(huì)寫成n1,這個(gè)地方應(yīng)該是填寫n。帶入法那么:假定有一個(gè)符合題目的要求,那么我們知道就執(zhí)行一次kn+= stdi.由于k的初始值是0,所以這個(gè)地方是進(jìn)行n+之后變成了1,返回的就是n,現(xiàn)在為1。不是能n1得到的0。*第四題目*代碼:分析:#define M 5#define N 20int fun(c

4、har (*ss)N, int *n) int i, k=0, len= N;/*found*/ for(i=0; i M; i+) 題目要求:求字符串?dāng)?shù)組中長(zhǎng)度最短的字符數(shù)串所在的行下標(biāo),所以這里循環(huán)的時(shí)候,一定是循環(huán)字符串的個(gè)數(shù),也就是字符數(shù)組中表示存放字符個(gè)數(shù)的數(shù)組的行的個(gè)數(shù)上課時(shí)強(qiáng)調(diào)的重點(diǎn)。這個(gè)地方明顯就是M,表示的是五行,作五次的循環(huán)判斷,每次將字符串最短的給保存下來。 len=strlen(ssi); if(i=0) *n=len; /第一個(gè)字符串判斷時(shí)要,初始化len,/*found*/ if(len num. 或 *tt.num. int i; printf(n%d %s %c

5、 %d-%d-%d, tt.num, , tt.sex, tt.birthday.year, tt.birthday.month, tt.birthday.day); for(i=0; inext; s=p; 兩個(gè)指針,t和s,我們要注意,s是在t前面的一個(gè)指針, s t while(t-next != NULL) 當(dāng)t沒有到末尾的時(shí)候我要大家背了這句話。 s=t;/*found*/ t=t-next; 這里也是我上課要大家背的,表示將指針往后挪一個(gè)位置。填寫的是next。 /*found*/ printf( %d ,t-data); 將這個(gè)數(shù)據(jù)輸出,我們知道數(shù)據(jù)域是data,所

6、以這個(gè)地方要填寫的是tdata. s-next=NULL; /*found*/ free(t); s t 由于這個(gè)地方要求把最后一個(gè)節(jié)點(diǎn)給釋放掉,所以這個(gè)地方是把t給釋放掉。畫個(gè)圖,題目就很簡(jiǎn)單了。*第七題目*代碼:分析:void fun(char *s) int i, j, n; for(i=0; si!=0; i+)/*found*/ if(si=0 & sii; j-) /*found*/ sj+1= sj; 把前一位的sj往后挪一位,因?yàn)樵黾恿艘晃蛔址?,所以要往后面挪一個(gè)位置。使得空出的位置我們寫上字符*。 sj+1=*; i=i+1; 跳過*這個(gè)字符的位置。 *第八題目*代碼:分析

7、:#include #define N 4/*found*/void fun(int (*)tN , int n) 從主函數(shù)可知道,傳遞的實(shí)參是一個(gè)二維的數(shù)組名,所以我們應(yīng)該在接收的時(shí)候用樹上規(guī)定的三種格式即可,這個(gè)地方一定要注意N是在前面已經(jīng)預(yù)定義為了4,所以要用到我們這里的方法。其它寫法見樹上說的。要記住二維數(shù)組名是一個(gè)行指針,不是列指針! int i,s;/*found*/ for(i=0;iN; i+) 這里要知道,N是表示的一共有幾行,所以這個(gè)地方實(shí)際上就是要循環(huán)N行來進(jìn)行處理。每一行都要處理對(duì)角的元素。 s=tii; 保存對(duì)角的元素 tii=tin-i-1; /*found*/ t

8、in-1-i=s; 這個(gè)地方的填空,很簡(jiǎn)單,上課的時(shí)候我要求大家一定把兩個(gè)數(shù)字進(jìn)行互換給背下來,在這地方根據(jù)這個(gè)方法就可以知道填寫的一定是s。技巧解題目 *第九題目*代碼:分析:#define N 9int fun(int a, int n) 函數(shù)的行參是一個(gè)數(shù)組,可以看成一個(gè)指針 int i,j; j = 0; for (i=0; in; i+)/*found*/ if (ai%2= 0) 判斷一個(gè)數(shù)字是否為偶數(shù),上課我們強(qiáng)調(diào)了是考試的重點(diǎn),這里要求判斷數(shù)組每個(gè)數(shù),所以根據(jù)循環(huán)我們知道填寫的應(yīng)該為ai%2。請(qǐng)大家記?。号袛嘁粋€(gè)數(shù)字是偶數(shù),是ai%2 0。對(duì)2整除等于0的數(shù)字一定是偶數(shù)。/*f

9、ound*/ Aj = ai; j+; 要求當(dāng)這個(gè)數(shù)組是偶數(shù)的時(shí)候,我們就要保存好,所以在這個(gè)地方,我們要填上的是aj.注意到這個(gè)地方,我們的j是從0開始的,每次填寫一個(gè)后,我們的j一次,這樣是便于存放下一個(gè)偶數(shù)。 /*found*/ return j; 這里返回的是偶數(shù)的個(gè)數(shù),所以我們填寫的是j,這個(gè)地方不是j+1或者是j1,我們可以通過代入法進(jìn)行驗(yàn)算。由于上面每次存放一個(gè)偶數(shù)都要進(jìn)行一次j+,所以,即使后面沒有偶數(shù)了,我們也進(jìn)行了j+,所以就直接就是填寫j。上機(jī)常考題目如果是只有一個(gè)偶數(shù),那么我們就知道也要執(zhí)行一次j+,j從0變成了1,正好是返回一個(gè)。*第十題目*代碼:分析:#define

10、 N 9int fun(int a, int n) int i,j; j = 0; for (i=0; in; i+)/*found*/ if (ai%2= 1) 這個(gè)題目非常的簡(jiǎn)單,和前面一個(gè)題目很類似。首先判斷一個(gè)數(shù)字是否為奇數(shù),那么很快我們就知道判斷一個(gè)數(shù)字是否為奇數(shù)是,ai%2=1就是奇數(shù)了。 /*found*/ aj = ai; j+; 如果是奇數(shù)就要把他給存放起來,這個(gè)地方j(luò)是初始化為0,每次存放一個(gè)奇數(shù),我們就要將j進(jìn)行一次自加,便于存放下一個(gè)奇數(shù)。 /*found*/ return j; j就是我們要返回的奇數(shù)的個(gè)數(shù),由于,每次存放一個(gè)奇數(shù)后,我們都會(huì)進(jìn)行j+,所以在返回的時(shí)候

11、就不用返回j1了。*第十一題目*代碼:分析:#include void fun(char *s, int *t) int i, n; n=0;/*found*/ for(i=0; si !=NULL; i+) 循環(huán)的時(shí)候,第二個(gè)是判斷的條件,這個(gè)地方要判斷字符是否已經(jīng)到字符串的末尾了,所以我們可以看到這個(gè)地方我們函數(shù)的第一個(gè)行參是 char *s,這個(gè)地方指針可以當(dāng)作數(shù)組使用,所以這個(gè)地方可以填寫的是si活著是*s+i/*found*/ if(si=0&si#include #define N 8typedef struct char num10; int year,month,day ;ST

12、U;/*found*/STU fun(STU *std, char *num) 返回的類型應(yīng)該是結(jié)構(gòu)體類型,這個(gè)地方是??嫉念}型,類似于返回int類型等,只是把結(jié)構(gòu)體類型看成一個(gè)類型! int i; STU a=,9999,99,99; for (i=0; iN; i+)/*found*/ if( strcmp(stdi.num,num)=0 ) 要判斷每個(gè)結(jié)構(gòu)體元素的的num是否與我們指定的num相同。要注意我們傳遞過來的是結(jié)構(gòu)體的數(shù)字,所以每個(gè)元素都要判斷。/*found*/ return (stdi); 由于該函數(shù)要返回的是一個(gè)結(jié)構(gòu)體變量,所以要把這個(gè)符合要求的結(jié)構(gòu)體元素返回,所以這個(gè)地

13、方要返回的是結(jié)構(gòu)體名稱。 return a;*第十三題目*代碼:分析:文件的考察/*found*/void WriteText(FILE *fw) 這個(gè)地方是填寫的是文件指針,這個(gè)填空題目很單一話,只要求大家認(rèn)真的記住這個(gè)文件指針。 char str81; printf(nEnter string with -1 to end :n); gets(str); while(strcmp(str,-1)!=0) /*found*/ fputs(str,fw); fputs(n,fw); 把輸入的內(nèi)容寫道了文件當(dāng)中。這個(gè)也是要求大家記住的??淳W(wǎng)上課堂詳細(xì)講了這幾個(gè)文件的函數(shù)處理的方法。 gets(s

14、tr); void ReadText(FILE *fr) char str81; printf(nRead file and output to screen :n); fgets(str,81,fr); while( !feof(fr) ) /*found*/ printf(%s,str); 這個(gè)是文件的讀出處理,這個(gè)也是要求大家自己背的,在網(wǎng)上課堂中,文件中動(dòng)的內(nèi)容已經(jīng)講的很清楚了。 fgets(str,81,fr); *第十四題目*代碼:分析:#include #define N 4void fun(int (*t)N, int m) int i, j;/*found*/ for(i=0

15、; i=0; j- -) 這個(gè)循環(huán)是表示右移多少個(gè)位置。/*found*/ tij+m =tij; 可以通過代入法進(jìn)行解題目,實(shí)際的意義是把前面的元素放到后面來進(jìn)行保存,前面的元素后面會(huì)將其覆蓋為0,后面的元素那么是被前面的元素覆蓋了。/*found*/ for(j=0; jm; j+) 移動(dòng)了m項(xiàng),要將這些全部變成零。 tij=0; *第十五題目*代碼:分析:#include #include double fun(double x, int n) double f, t; int i;/*found*/ f = 1; 初始化是我們考試的時(shí)候的重點(diǎn),我們這個(gè)題目可以看到第一個(gè)地方是初始化為1

16、的。由于要相加的第一項(xiàng)為哪一項(xiàng)1,所以填寫的是1。如果要加的第一工程是2那么要填寫2。注意看清楚題目。 t = -1; for (i=1; in; i+) /*found*/ t *= (1)*x/i; 每次要循環(huán)加上一個(gè)數(shù)值,這個(gè)地方要注意,題目是要求一正一負(fù),所以在這個(gè)地方是填寫1,那么累積相加的時(shí)候,一項(xiàng)為正,一項(xiàng)為負(fù)。/*found*/ f += t; 每次循環(huán)的時(shí)候,要把當(dāng)前工程給加進(jìn)來,這個(gè)地方的t表示的是當(dāng)前項(xiàng)。用f來保存每次累加的和。 return f;*第十六題目*代碼:分析:#include #define N 9void fun(int a, int n) int i,

17、t, p;/*found*/ p = (n%2=0)?n/2:n/2+1; 這個(gè)是條件語句。首先大家一定要弄懂這個(gè)語 是真前假后。為真是取表達(dá)式2的數(shù)值,假取表達(dá)式3的數(shù)值。這個(gè)地方按題目要求是,當(dāng)為偶數(shù)的時(shí)候是為n/2,當(dāng)為奇數(shù)的時(shí)候要變成n/21,這種題目,大家往往應(yīng)該用代入法進(jìn)行測(cè)試即可得到答案。 for (i=0; istd1.num) temp=std0; std0=std1; std1=temp; if(std0.numstd2.num) temp=std0; std0=std2; std2=temp; if(std1.numstd2.num) temp=std1; std1=st

18、d2; std2=temp; main() PERSON std = 5,Zhanghu,2,WangLi,6,LinMin ; int i;/*found*/ fun(std); 題目要求的講行參指針?biāo)赶虻慕Y(jié)構(gòu)體的數(shù)值進(jìn)行排序,所以這個(gè)地方一定是要傳遞的是結(jié)構(gòu)體數(shù)組名,它表示的是地址,行參才可以用結(jié)構(gòu)體指針來接收。 printf(nThe result is :n); for(i=0; i3; i+) printf(%d,%sn,stdi.num,);*第十八題目*代碼:分析:fori=1;in-2;i=i+2/*found*/ t=i; 進(jìn)行第一步賦值,由于處理的是奇數(shù)

19、位,所以這個(gè)地方,首先要對(duì)變量t進(jìn)行初始化,后面用到了變量t沒有被初始化,這個(gè)地方,我們填寫是t = i;所以這個(gè)地方是把第一個(gè)下標(biāo)為1的數(shù)組的下標(biāo)初始化給變量t,這里的含義是t為下標(biāo)的數(shù)組就是目前假定的最小的一個(gè)字符。/*found*/ for(j=i+2 ; jsj) t=j; if(t!=i) x=si; si=st; st=x; 完成交換 for(i=1,j=0; in; i=i+2, j+) pj=si;/*found*/ pj=0; 字符串一定要有結(jié)束符號(hào),這個(gè)是重點(diǎn),一定要記住,考試一定有很多同學(xué)會(huì)碰到這個(gè)填空題目。*第十九題目*代碼:分析:#include #define N

20、4/*found*/void fun(int (*t)N ) /這個(gè)地方是接收傳遞來的數(shù)組元素,傳的是二維數(shù)組名稱,這個(gè)地方要用到的是N,由于傳來的是4行4列的,所以要寫成這個(gè)樣子。 int i, j; for(i=1; iN; i+) for(j=0; jn) /*found*/ n=len; k=i; 這個(gè)地方填寫的是k,表示的是將求出最長(zhǎng)字符長(zhǎng)度的那行數(shù)組的行下標(biāo)保存下來。后面的i!=k的時(shí)候,就可以不用處理這行最長(zhǎng)的字符串,不用給它的左邊補(bǔ)充*符號(hào)。 for(i=0; i=0; j-) 填寫的是len,表示的是我們要進(jìn)行循環(huán),把前面的字符放到后面去,空出左邊的元素,用來存放題目要求的*

21、。這里的len是現(xiàn)在要處理的字符串的長(zhǎng)度。字符長(zhǎng)度是len長(zhǎng),那么將字符移到右邊去的次數(shù)就是len次。 ssim-=ssij; for(j=0; jn-len; j+)/*found*/ Sij=*; 填寫的是sij,i表示要處理的行數(shù),j表示要處理的列數(shù),這個(gè)都是可以從循環(huán)中得到的。 *第二十一題目*代碼:分析:#include void fun(char *s) int i, n, k; char c; n=0; for(i=0; si!=0; i+) n+;/*found*/ if(n%2=0) k=n-1; 這個(gè)地方要注意,處理的時(shí)候有數(shù)組元素是偶數(shù)個(gè)和奇數(shù)個(gè)的區(qū)別。奇、偶不同,最后一

22、個(gè)元素也不同。解決的方法是采用代入法,來求應(yīng)該填入的數(shù)字。 else k=n-2;/*found*/ c=sk; 將最后一個(gè)數(shù)字這里就是sk這個(gè)元素進(jìn)行保存,然后后面會(huì)要繞回填寫到第一個(gè)數(shù)組元素去。 for(i=k-2; i=1; i=i-2) si+2=si;/*found*/ s1=c ; 把前面保存的最后一個(gè)奇數(shù)數(shù)組的數(shù)字,存放到數(shù)組元素的第一個(gè)奇數(shù)下標(biāo)。*第二十二題目*代碼:分析:#include /*found*/char fun(char ch) 考察的是函數(shù)的返回值,根據(jù)觀察我們可以覺察,這個(gè)地方的函數(shù)返回?cái)?shù)值是char類型,所以我們填寫的時(shí)候是寫上char,表示該函數(shù)運(yùn)行得到的

23、結(jié)果是一個(gè)字符。/*found*/ if (ch=0 & ch=9)這個(gè)地方要背下來的,我們一定要記住判斷一個(gè)字符是否為數(shù)字字符的寫法,所以,這個(gè)地方平常背下來就很方便了,注意是采用的邏輯與&./*found*/ return 9- (ch-0);簡(jiǎn)單的數(shù)學(xué)題目,要求把字符9變成字符0,8變成1的處理,可以采用代入法計(jì)算即可。沒有什么道理可以講。不懂的話可以問數(shù)學(xué)老師。 return ch ;*第二十三題目*代碼:分析:#define N 9void fun(int a, int n) int i,j, max, min, px, pn, t; for (i=0; in-1; i+=2) 每次

24、循環(huán)處理兩個(gè)數(shù)據(jù),一個(gè)存放最大,一個(gè)存放最小,所以是i+=2 /*found*/ max = min = ai; 關(guān)于初始化一定是c語言上機(jī)考試的重點(diǎn),這個(gè)地方初始化的時(shí)候,假定最大和最小的數(shù)值都是第一個(gè)數(shù)組元素。 px = pn = i; for (j=i+1; jn; j+) /*found*/ if (max aj) 同上面一樣,要將當(dāng)前的數(shù)組元素與我們的min來進(jìn)行比較,看那個(gè)數(shù)值要小一些,如果小那么要保存。 min = aj; pn = j; if (pn != i) 下面的代碼就是將每次循環(huán)找到的最大數(shù)值和最小數(shù)值分別存放到要存放的位置 t = ai; ai = min; apn

25、= t; if (px = i) px =pn; if (px != i+1) t = ai+1; ai+1 = max; apx = t; *第二十四題目*代碼:分析:STD fun(STD std, int n) STD max; int i;/*found*/ max= std0; 這里一定要注意:max是一個(gè)結(jié)構(gòu)體變量,所以我們?cè)谫x值的時(shí)候一定要注意初始化,這個(gè)地方的初始化我強(qiáng)調(diào)很屢次了,是考試的重點(diǎn),在這里,我們是把第一個(gè)結(jié)構(gòu)體元素作為數(shù)值進(jìn)行傳遞的。 for(i=1; in; i+)/*found*/ if(max.agenext; while(p) (*n)+;/*found*/

26、 p=p-next; 統(tǒng)計(jì)一個(gè)節(jié)點(diǎn)個(gè)數(shù)就應(yīng)該往后面挪一位,所以這個(gè)地方填寫的是next,我上課的時(shí)候強(qiáng)調(diào)了這句話是考試的重點(diǎn)。 main() SLIST *head; int aN=12,87,45,32,91,16,20,48, num; head=creatlist(a); outlist(head);/*found*/ fun(head, &num); 考察的是參數(shù)的題目,這個(gè)地方要注意我們接收行參的實(shí)參是一個(gè)鏈表指針,所以我們的行參就要是一個(gè)鏈表地址,這個(gè)地方填寫的是鏈表首地址head。 printf(nnumber=%dn,num);*第二十六題目*代碼:分析:#define M 5

27、#define N 20void fun(char (*ss)N) int i, j, n, len=0; for(i=0; in)n=len; for(i=0; iM; i+) /*found*/ n=strlen(*ss)i); 首先要求該數(shù)組的整個(gè)的長(zhǎng)度,在這個(gè)地方要填寫的是地址,strlen的參數(shù)一定是個(gè)地址,這個(gè)地方是數(shù)組元素的地址。 for(j=0; j=a)&(ch=z)非常簡(jiǎn)單的一個(gè)題目,這個(gè)地方是判斷該字符是否為小寫字符,這個(gè)是要大家都要背下來的,這個(gè)地方填寫的是邏輯與,也就是&。千萬不要寫成了邏輯或|了。 return ch -a + A; 把小寫字符變成大寫字符。 if ( isupper(ch) )/*found*/ return ch +a-A ;把大寫字符變成小寫字符。這個(gè)大家只要用代入法就知道了,我們要記住,小寫字符a比大寫字符A的ASCII數(shù)值要大。/*found*/ return ch; 既不是大寫字符,也不是小寫字符的時(shí)候是返回原值的。*第二十八題目*代碼:分析:int fun(int n) int a10000, i,j, count=0; for (i=2; i=n; i+) a

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(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)論