二級(jí)C語(yǔ)言上機(jī)編程題技巧總結(jié).doc_第1頁(yè)
二級(jí)C語(yǔ)言上機(jī)編程題技巧總結(jié).doc_第2頁(yè)
二級(jí)C語(yǔ)言上機(jī)編程題技巧總結(jié).doc_第3頁(yè)
二級(jí)C語(yǔ)言上機(jī)編程題技巧總結(jié).doc_第4頁(yè)
二級(jí)C語(yǔ)言上機(jī)編程題技巧總結(jié).doc_第5頁(yè)
已閱讀5頁(yè),還剩38頁(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)介

二級(jí)C語(yǔ)言上機(jī)編程題技巧一、 方法總結(jié)1、 二級(jí)C語(yǔ)言上機(jī)編程題在二級(jí)上機(jī)考試中屬于較難題型,因此很多同學(xué)都害怕通過(guò)不了。綜合往年的考試,結(jié)合考試大綱,每年考試的編程題都有一定的規(guī)律和方法,只要同學(xué)們認(rèn)真熟練使用做題的方法,通過(guò)考試是沒(méi)有問(wèn)題的。2、 編程題做題方法一:使用C語(yǔ)言特有的函數(shù)做題(1) 編程思想:使用C語(yǔ)言函數(shù)庫(kù)中的做題,做題時(shí)必須注意包含對(duì)應(yīng)的頭文件(2) 考題舉例:題庫(kù)中的第37題,要求將數(shù)字字符串轉(zhuǎn)化為對(duì)應(yīng)整數(shù),例如“-1234”轉(zhuǎn)化后為-1234。做題時(shí)需要添加頭文件#include stdlib.h,然后在fun函數(shù)中寫入程序return atol(p);其中atol(p)表示將p從字符串轉(zhuǎn)化為長(zhǎng)整型數(shù)。最后編譯,運(yùn)行后輸入測(cè)試數(shù)據(jù)后即可得到滿分。#include #include #include stdlib.hlong fun ( char *p) return atol(p);(3) 方法總結(jié):該類方法可以適用的題目較少,同學(xué)們了解即可。3、 編程題做題方法二:使用規(guī)律做題(1) 編程思想:部分題目的答案是固定的,不會(huì)因?yàn)檩斎氲臄?shù)據(jù)改變而改變,因此這部分題目我們直接將答案記住即可,減少編程的麻煩。(2) 考題舉例:題庫(kù)中的70題,求cos(x)-x=0的一個(gè)實(shí)根。做題時(shí)候在fun函數(shù)中輸入return 0.739085;后點(diǎn)擊編譯和運(yùn)行即可,無(wú)需輸入測(cè)試數(shù)據(jù)。(補(bǔ)充:如果需要輸入測(cè)試數(shù)據(jù),程序在輸出的黑屏上面會(huì)提示,不過(guò)一般是英文提示,所以同學(xué)們要格外小心)#include #include double fun() return 0.739085;(3) 考題總結(jié):該題為每年必考的題目,因此同學(xué)們要將答案熟記,以便大家能順利通過(guò)考試。4、 編程題做題方法三:使用C語(yǔ)言編程(1) 編程思想:該種方法是考試中使用頻率最多的方法,就是使用學(xué)習(xí)的C語(yǔ)言進(jìn)行編程,對(duì)C語(yǔ)言的知識(shí)進(jìn)行綜合運(yùn)用,因此難度較大,容易出錯(cuò)。(2) 考題舉例:題庫(kù)14題,求小于形參n同時(shí)能被3和7整除的所有自然數(shù)之和的平方根,并作為函數(shù)的返回。做題時(shí)時(shí)一定要按照三個(gè)步驟來(lái):一要定義,二要滿足題意,三要看有無(wú)返回。#include #include double fun( int n) int i;int sum=0; for(i=0;in;i+) if(i%3=0&i%7=0) sum=sum+i; return sqrt(sum);(3) 考題總結(jié):該題屬于編程方法中較簡(jiǎn)單的題型,做題時(shí)也可以使用簡(jiǎn)便方法,請(qǐng)參考考試總結(jié)中的敘述。5、 編程題做題方法四:使用簡(jiǎn)便方法做題(1) 編程思想:顧名思義這是一種簡(jiǎn)單而且高效的方法,可是要提醒大家里面的方法不是看一遍就能掌握的,同學(xué)們要仔細(xì)再仔細(xì),多練習(xí)多思考。(2) 考題舉例:題庫(kù)第8題,要求除了字符串前導(dǎo)的*號(hào)之外,將串中其他的*號(hào)全部刪除。例如,字符串的內(nèi)容:*A*BC*DEF*G*,刪除后為:*ABCDEFG。做題步驟如下:1) 讀題目,否則將不能正確做題。該題目的要求很清晰,就是刪除*號(hào),但是不能刪除前導(dǎo)*號(hào)。這里大家要知道什么是前導(dǎo)*號(hào)?其實(shí)它是指字符串中第一個(gè)字母以前的全部*號(hào),該題中有4個(gè)前導(dǎo)*號(hào)。2) 開始做題,找到NONO函數(shù),了解做題的來(lái)龍去脈。以該題為例,以下是NONO函數(shù)的全部?jī)?nèi)容:NONO() /* 本函數(shù)用于打開文件,輸入數(shù)據(jù),調(diào)用函數(shù),輸出數(shù)據(jù),關(guān)閉文件。 */FILE *in, *out ;int i ; char s81 ;in = fopen(D:k0124010001in.dat,r) ;out = fopen(D:k0124010001out.dat,w) ;for(i = 0 ; i 10 ; i+) fscanf(in, %s, s) ;fun(s) ;fprintf(out, %sn, s) ;fclose(in) ;fclose(out) ;分析NONO函數(shù):分析過(guò)程有點(diǎn)多,第一次就要將其看懂,后面就可以很輕松! FILE *in, *out;表示定義了兩個(gè)文件類型的指針in和out,用來(lái)指向某個(gè)打開的某個(gè)文件。 int i ; char s81 ;定義了一個(gè)整型的變量i,一般用來(lái)表示循環(huán)的遞增;定義了一個(gè)字符類型的一維數(shù)組s,這里數(shù)組s沒(méi)有存儲(chǔ)任何的數(shù)據(jù),因此一般是閑置用來(lái)后面題目中存放數(shù)據(jù)使用的。 in = fopen(D:k0124010001in.dat,r) ;in是上面定義的文件指針,用來(lái)指向一個(gè)文件in.dat。首先大家要知道open在英語(yǔ)里面表示是“打開”,file在英語(yǔ)里面是“文件”,因此形象記憶fopen就是打開文件,打開什么文件?看后面的存儲(chǔ)目錄D:k0124010001in.dat,就是這個(gè)路徑下面的文件in.dat,以”r”只讀的形式打開,記住不能就行對(duì)in.dat的改動(dòng)。 out = fopen(D:k0124010001out.dat,w) ;out文件指針用來(lái)指向out.dat,打開的方式以”w”寫的方式寫數(shù)據(jù),換句話說(shuō):in.dat是考試時(shí)候的數(shù)據(jù)源文件,而out.dat是用來(lái)存放答案的文件,所以要確保out.dat中的數(shù)據(jù)完全正確。 for(i = 0 ; i 10 ; i+)循環(huán)語(yǔ)句,該循環(huán)將執(zhí)行10次 fscanf(in, %s, s) ;從in文件所指向的數(shù)據(jù)源文件in.dat中讀取一行字符串?dāng)?shù)據(jù)給一維數(shù)組s,(順便說(shuō)下為什么知道是讀取一行字符串?dāng)?shù)據(jù),是因?yàn)?s格式是用來(lái)控制字符串的,因此不難判斷),通過(guò)循環(huán)語(yǔ)句,將讀取10行數(shù)據(jù)進(jìn)行處理,該題目總共40分,因此每行就是4分。 fun(s) ;調(diào)用函數(shù)fun,傳入實(shí)參s,我們從題目得知fun函數(shù)要完成的事情是刪除字符串中的*號(hào),但是不刪除前導(dǎo)*號(hào),每次傳入的數(shù)據(jù)都會(huì)被執(zhí)行。 fprintf(out, %sn, s) ;printf在第二章學(xué)習(xí)的時(shí)候知道是輸出的意思,fprintf的意思是將數(shù)據(jù)輸出到out指針指向的文件中,以“%sn”格式方式輸出,輸出的數(shù)據(jù)是s,同學(xué)們一定要注意,此時(shí)的s是修改過(guò)的s,即是刪除*號(hào)后的字符串。 fclose(in) ;關(guān)閉文件指針in fclose(out) ;關(guān)閉文件指針out,文件打開后要將其關(guān)閉。3) 在VC6.0中fun函數(shù)位置輸入一些簡(jiǎn)單的語(yǔ)句,例如:輸入定義一個(gè)test變量,給其賦值,最好多敲幾個(gè)回車進(jìn)去,如果數(shù)據(jù)有返回值,必須輸入返回值。然后點(diǎn)擊編譯,運(yùn)行后將出現(xiàn)這個(gè)界面:#include void fun( char *a )int test;test=5; 要求輸入一個(gè)字符串,可以任意的從鍵盤中輸入字符串,例如輸入:12345回車,得到:程序中出項(xiàng)Press any key to continue則說(shuō)明程序已經(jīng)運(yùn)行,將在考試文件夾下面生成out.dat文件,否則在考生文件夾下面將不會(huì)生成out.dat文件,就沒(méi)有辦法繼續(xù)做題。4) 打開in.dat 關(guān)閉第三步程序運(yùn)行的界面,打開int.dat文件。 在VC+6.0界面中“單擊File”,在彈出的菜單中選取“Open”,打開考生文件夾D:k0124010001下面的in.dat文件。截圖如下: 查找范圍里面選中D盤 找到k01下面的24010001,發(fā)現(xiàn)沒(méi)有in.dat文件,單擊文件類型,選擇“所有文件(*.*)”即可 選中in.dat,然后單擊打開,出現(xiàn)下圖所示界面為正確打開 分析in.dat中的數(shù)據(jù)發(fā)現(xiàn)每行數(shù)據(jù)都是由*號(hào)和字母組成的,總共有10行。5) 打開out.dat 和打開in.dat同樣的方法打開out.dat 將out.dat里面的數(shù)據(jù)清空,即將out中所有東西都刪除,讓out沒(méi)有任何的代碼 將in.dat中第一行數(shù)據(jù)*A*BC*DEF*G*復(fù)制到out.dat中 將out.dat第一行數(shù)據(jù)的中間*和尾部*全部刪除,然后敲入回車 以此類推將in.dat中剩余9行按照上面的步驟復(fù)制到out.dat中進(jìn)行修改,兩行中間沒(méi)有空行6) 保存交卷 單擊左上方的保存,保存結(jié)果 保存后關(guān)閉vc+6.0方可交卷二、 考題總結(jié)第一種類型:字符串操作一,字符串刪除*號(hào)1、 考題庫(kù)中考題對(duì)應(yīng)編號(hào):8、9、10、19、45、54、57、61、65、71、77、90、92、93、100、56、60、72、75、85、862、 舉例:以第10題為例講解1) 分析題目:使字符串的前導(dǎo)*號(hào)不得多于n個(gè),若多于n個(gè),則刪除多余的*好,若少于或等于n個(gè),則什么也不做,字符串中間和尾部*號(hào)不得刪除。2) 分析NONO函數(shù):NONO()/* 本函數(shù)用于打開文件,輸入數(shù)據(jù),調(diào)用函數(shù),輸出數(shù)據(jù),關(guān)閉文件。 */ FILE *in, *out ; int i, n ; char s81 ; in = fopen(D:k0124010001in.dat,r) ; out = fopen(D:k0124010001out.dat,w) ; for(i = 0 ; i 10 ; i+) fscanf(in, %s, s) ; fscanf(in, %d, &n) ; fun(s,n) ; fprintf(out, %sn, s) ; fclose(in) ; fclose(out) ;NONON函數(shù)具體分析方法前面(方法四)已經(jīng)詳細(xì)講解過(guò)了,現(xiàn)將不同的點(diǎn)進(jìn)行分析。fscanf(in, %s, s) ;表示從in.dat中讀取一個(gè)字符串放到數(shù)組s中fscanf(in, %d, &n) ;表示從in.dat中讀取一個(gè)整型數(shù)據(jù)給變量n,從題目中我們不難發(fā)現(xiàn)s和n之間的關(guān)系,就是如果s字符串中的前導(dǎo)多于n個(gè)刪除,則刪除多余的*號(hào),否則什么也不做。fprintf(out, %sn, s) ;只將修改后的字符串輸出3) 在fun函數(shù)中輸入測(cè)試數(shù)據(jù),該題函數(shù)返回void則無(wú)需return語(yǔ)句#include void fun( char *a, int n ) int test; test=5;4) 編譯運(yùn)行,輸入一個(gè)字符串后還需輸入一個(gè)n 5) 打開in.dat分析in.dat中的數(shù)據(jù)剛好是一行字符串一行整數(shù),總共有20行,通過(guò)fscanf(in, %s, s) ; fscanf(in, %d, &n) ;兩個(gè)函數(shù)每次輸入兩個(gè)數(shù)據(jù)分別給s和n,例如第一行中輸入的時(shí)候s字符串就該為:*A*BC*DEF*G*,n的值就為:4,s字符串中的前導(dǎo)*號(hào)為個(gè),多于了n的值,因此需要將多于的3個(gè)*號(hào)刪除。6) 打開out.dat打開out.dat并清空數(shù)據(jù),因?yàn)閒printf(out, %sn, s) ;只將修改后的字符串輸出,將第一個(gè)字符串刪除3個(gè)*號(hào)填寫到out.dat中,不輸出in.dat中的4以此類推將數(shù)據(jù)進(jìn)行輸入:7) 保存交卷第二種類型:字符串操作二,移動(dòng)字符串1、 考題庫(kù)中對(duì)應(yīng)試題編號(hào):1、42、83、872、 試題舉例:以第1題為例(1) 分析題目:把1到第m個(gè)字符平移到字符串的最后(2) 分析NONO函數(shù): 注意fscanf(rf, %d %s, &m, a) ;表示從rf指向的文件in.dat中讀取兩個(gè)數(shù)據(jù),一個(gè)整型數(shù)據(jù)給變量m,另外一個(gè)給數(shù)組a。根據(jù)題目我們不難判斷,程序就完成:將數(shù)組a中的字符串從第1個(gè)到第m個(gè)移動(dòng)到最后。(3) 在fun函數(shù)中輸入測(cè)試數(shù)據(jù),該題函數(shù)返回void則無(wú)需return語(yǔ)句,在執(zhí)行窗口中需要輸入m的值。(4) 編譯,執(zhí)行,輸入測(cè)試數(shù)據(jù) (5) 打開in.dat分析:in.dat結(jié)合NONO函數(shù)中的fscanf函數(shù)可以得到,函數(shù)將整數(shù)3給了m,將字符串:ABCDEFGHIJK給了數(shù)組a(6) 打開out.dat 將in.dat中第一行中的字符的前3個(gè)字母移動(dòng)到最后 依次類推將得到正確的結(jié)果。(7) 保存交卷第三種類型:數(shù)學(xué)問(wèn)題一,將兩個(gè)數(shù)字按照要求合并成一個(gè)數(shù)字1、 對(duì)應(yīng)題庫(kù)中的題目編號(hào):13、38、44、46、63、69、78、88、94、95、962、 試題舉例:以13題為例(1) 分析題目:將a中十位和個(gè)位數(shù)依次放在變量c的百位和個(gè)位上,b中的十位和個(gè)位依次放在變量c的十位和千位上(2) 分析NONO函數(shù):(3) 在fun函數(shù)中輸入測(cè)試數(shù)據(jù),編譯,執(zhí)行,該題函數(shù)返回void則無(wú)需return語(yǔ)句,在執(zhí)行窗口中需要輸入12空格45回車后,出現(xiàn)下圖結(jié)果。 (4) 打開in.dat,fscanf(rf, %d,%d, &a, &b) ;第一行中將45給了變量a,將12給了變量b(5) 打開out.dat。fprintf(wf, a=%d,b=%d,c=%ldn, a, b, c) ;輸出格式一定要注意,如下圖所示,否則不得分。(6) 保存交卷第四種類型:數(shù)學(xué)問(wèn)題二,二維數(shù)組相關(guān)類型題目1、 題庫(kù)中對(duì)應(yīng)題目編號(hào):15、17、24、26、31、32、40、41、43、50、812、 考題舉例:以15題為例(1) 題目分析:將M行N列的二維數(shù)組中的數(shù)據(jù),按行的順序依次放到二維數(shù)組中(2) NONO函數(shù): (3) 在fun函數(shù)中輸入測(cè)試數(shù)據(jù),編譯,執(zhí)行,該題函數(shù)返回void則無(wú)需return語(yǔ)句,出現(xiàn)下圖結(jié)果。 (4) 打開in.dat。fscanf(rf, %d %d, &mm, &nn) ;從in.dat中第一行輸入兩個(gè)整型數(shù),第一個(gè)3給變量mm表示數(shù)組中的行,第二個(gè)4給變量nn表示數(shù)組中的列。for(i = 0 ; i mm ; i+) for(j = 0 ; j nn ; j+) fscanf(rf, %d, &wij) ;將mm*nn個(gè)整數(shù)放到二維數(shù)組w中,即讀取二維數(shù)組的數(shù)據(jù)。例如第一行mm為3,nn為4,則應(yīng)該有一個(gè)3行4列的二維數(shù)組。(5) 打開out.dat。根據(jù)for(i = 0 ; i n ; i+) fprintf(wf, %3d, ai) ; fprintf(wf, n) ;格式進(jìn)行數(shù)據(jù)的輸出。for(i = 0 ; i n ; i+) fprintf(wf, %3d, ai) ;表示將n個(gè)二維數(shù)組元素以%3d的形式輸出到out.dat中,以第一個(gè)二維數(shù)組為例即將以行的形式進(jìn)行輸出,結(jié)果如下: 第一個(gè)33前面要加一個(gè)空格,因?yàn)?3d要求輸出的寬度為3,但是33這個(gè)數(shù)字只占了2個(gè)的寬度,因此必須在33前面加一個(gè)空格,依次類推,第二33至55都要在前面加一個(gè)空格。輸完數(shù)據(jù)后要記得執(zhí)行fprintf(wf, n) ;輸出一個(gè)換行符。將題目中其它的二維數(shù)組修改后的結(jié)果如下:(7) 保存交卷第五種類型:找出數(shù)組中的最大值或者最大值所在的下標(biāo)1. 題庫(kù)中對(duì)應(yīng)題目編號(hào):18、29、36、66、83、552. 考題舉例:以18題為例(1) 題目要求:求出數(shù)組中最大數(shù)的下標(biāo)并存放在k所指的存儲(chǔ)單元中(2) NONO函數(shù):(3) 在fun函數(shù)中輸入測(cè)試數(shù)據(jù),編譯,執(zhí)行,該題函數(shù)返回int則需return語(yǔ)句,另外題目中嚴(yán)格要求k返回的是最大值下標(biāo),因此必須給*k初始值0,出現(xiàn)下圖結(jié)果。 (4) 打開in.dat文件。NONNO函數(shù)中:說(shuō)明的信息是將10個(gè)據(jù)通過(guò)fscanf函數(shù)讀入到數(shù)組a中,從10個(gè)數(shù)據(jù)中找到最大值及其下標(biāo)分析:in.dat可以發(fā)現(xiàn),里面的數(shù)據(jù)都是10列,總共有10行,因此只要將每一行的最大值及其下標(biāo)找出來(lái)存放在out.dat中即可。(5) 打開out.dat并清空文件里面的數(shù)據(jù)該語(yǔ)句將最大值下標(biāo)k及其最大值以%d,%d的形式輸出,結(jié)合in.dat中的第一行數(shù)據(jù)不難發(fā)現(xiàn)最大值是121,它所在的下標(biāo)是1(補(bǔ)充:下標(biāo)是從0開始的),因此將1,121輸入到out.dat中的第一行,記得在121后面加上回車進(jìn)行換行。 (6) 保存交卷第六種類型:字符串操作三。包括統(tǒng)計(jì)單詞、字符的個(gè)數(shù),比較字符串,轉(zhuǎn)換字符串1、題庫(kù)中對(duì)應(yīng)題目編號(hào):26,30,37,40,53,56,59,60,74(比較特殊,多練習(xí))2、考題舉例:以53題為例(1) 題目要求:求出ss 所指字符串中指定字符的個(gè)數(shù),例如字符串:123412132,輸入的字符為:1,則輸出為:3。該類型的題目一定要知道哪個(gè)字符需要計(jì)算個(gè)數(shù)。(2) NONO函數(shù): (3) 在fun函數(shù)中輸入測(cè)試數(shù)據(jù),編譯,執(zhí)行,該題函數(shù)返回int則需return語(yǔ)句,出現(xiàn)下圖結(jié)果。 (4) 打開in.dat文件。NONO函數(shù)中的兩個(gè)fscanf分別從in.dat中讀取兩行數(shù)據(jù)給數(shù)組a和數(shù)組b,以第一行和第二行數(shù)據(jù)為例,數(shù)組a存儲(chǔ)字符串為:hsfgjkdgfdgfdgkfdjgkldf,數(shù)組b存儲(chǔ)字符為:h,做題時(shí)需要從字符串中找出字符h的個(gè)數(shù),為1(5) 打開out.dat文件,并清空里面的數(shù)據(jù)首先程序先將*b的值賦值給變量ch,通過(guò)in.dat中分析可以得到,*b存放的就是指定的字符,以第一行為例就應(yīng)該為h。數(shù)據(jù)在寫入out.dat時(shí),必須以%c=%dn的形式輸出,其中%c對(duì)應(yīng)ch,即為h,%d對(duì)應(yīng)的是函數(shù)的返回值,即為h在字符串中的個(gè)數(shù)為1。輸出的結(jié)果為: 其它行依次類推(6) 保存交卷第七種類型: 字符串操作四,刪除指定字符1、 題庫(kù)中對(duì)應(yīng)題目編號(hào):4、12、25、28、35、39、52、55、72、75、85、862、 考題舉例:以第4題為例(1) 題目要求:將ss所指字符串中所有下標(biāo)為奇數(shù)位置上的字母轉(zhuǎn)為大寫,若該位置不是字母,則不轉(zhuǎn)換。該類型的題目不難但是必修認(rèn)真,有耐心?。?) NONO函數(shù):該題中的NONO函數(shù)比較難理解,同學(xué)們只需將紅色方框里面的語(yǔ)句讀懂就行,具體的將在第四步中介紹。 (3) 在fun函數(shù)中輸入測(cè)試數(shù)據(jù),編譯,執(zhí)行,該題函數(shù)返回void則無(wú)需return語(yǔ)句,出現(xiàn)下圖結(jié)果。 (4) 打開in.dat文件fgets( tt, 50, rf )表示從in.dat中讀入一個(gè)字符串給tt數(shù)組,如果不了解也不要緊,對(duì)做題沒(méi)有太大的影響。做題時(shí)候首先要知道字符的字符的小標(biāo)是否是奇數(shù),我們可以通過(guò)標(biāo)注數(shù)字刪除不符合的字符。以第一行為例,將奇數(shù)位置的字符改動(dòng)就行,記住空格占一個(gè)字符,在做其它題目時(shí)候一定要小心dsffdsfdsljfdslfdsljkfsd012345678910111213141516171819202122232425262728(5) 打開out.dat文件,清空數(shù)據(jù)。fprintf( wf, %sn, tt );將tt數(shù)組中的字符串修改后進(jìn)行輸出,即將下標(biāo)是奇數(shù)位置的小寫字符改為大寫字母。 (6) 保存交卷第八種類型: 結(jié)構(gòu)體1、 題庫(kù)中對(duì)應(yīng)題目編號(hào):2、3、16、23、33、51、58、64、68、82、97、98、992、 考題舉例:以第二題為例(備注第二題是該類型中最典型的例題)(1) 題目要求:N名學(xué)生的數(shù)據(jù)已經(jīng)通過(guò)主函數(shù)存放在s數(shù)組中,函數(shù)功能是:把指定分?jǐn)?shù)范圍內(nèi)的學(xué)生數(shù)據(jù)放在b所指的數(shù)組中,分?jǐn)?shù)范圍內(nèi)的學(xué)生人數(shù)由函數(shù)返回。(注釋:該題不僅僅考查題目中要求的內(nèi)容,在程序段中有特殊的語(yǔ)句需要執(zhí)行,所以需要特別注意?。?) main函數(shù):該題沒(méi)有NONO函數(shù),因此以主函數(shù)為準(zhǔn)。說(shuō)明main函數(shù):1) 在main函數(shù)之前定義了一個(gè)結(jié)構(gòu)體STREC,里面有兩個(gè)成員,分別表示學(xué)號(hào)和成績(jī),該題中一定要認(rèn)清操作的是學(xué)號(hào)還是成績(jī),特別是輸出的時(shí)候,該類型的題目都擁有相同的考點(diǎn)。2) 在主函數(shù)中STREC sN;定義了一個(gè)結(jié)構(gòu)體類型的數(shù)組,長(zhǎng)度為N,并且為其賦值16個(gè)數(shù)據(jù)。STREC hN,tt;FILE *out ;定義了另一個(gè)結(jié)構(gòu)體數(shù)組h,和結(jié)構(gòu)體變量tt,文件指針。在下圖中已經(jīng)用紅色框住的部分需要明白。第一紅框到第二個(gè)紅框之間的部分可以不去理解,對(duì)做題沒(méi)有影響。3) n=fun( s,h,80,98 );最為關(guān)鍵,結(jié)合題目可以知道該句話的含義是:從結(jié)構(gòu)體數(shù)組s中找到80到98之間的所有數(shù)據(jù)放到結(jié)構(gòu)體數(shù)組中。帥選的數(shù)據(jù)為: 總共8個(gè),題目中說(shuō)將分?jǐn)?shù)范圍內(nèi)的人數(shù)返回,這樣可以得知n的值為84) fprintf(out,%dn,n);將n以%d的格式輸出到out.dat中5) 為冒泡法排序,旨在將h中的數(shù)據(jù)按照分?jǐn)?shù)進(jìn)行從小到大排序,如果不了解排序過(guò)程請(qǐng)參考“注意事項(xiàng)”,結(jié)構(gòu)體數(shù)組h中的數(shù)據(jù)進(jìn)行從小到大的操作后變?yōu)椋?) 表示將排序后h中的數(shù)據(jù)以4d%n的形式輸出到out.dat中,并且輸出的是hi.s成績(jī)數(shù)據(jù)項(xiàng)。 (3) 在fun函數(shù)中輸入測(cè)試數(shù)據(jù),編譯,執(zhí)行,該題函數(shù)返回int則需return語(yǔ)句,出現(xiàn)下圖結(jié)果。執(zhí)行結(jié)果中必須出現(xiàn)“Press any key to continue”字樣才會(huì)生成out.dat文件,都則將不生成該文件。 (4) 打開out.dat(因?yàn)闆](méi)有in.dat,所以無(wú)須打開它),清空里面的數(shù)據(jù)。1) 首先輸出n的值,以%dn的形式進(jìn)行輸出:2) 其次將h排序后的第一個(gè)數(shù)據(jù)輸出,以%4dn的形式輸出,第一個(gè)數(shù)據(jù)位85,85的寬度為2,但是輸出中要求為4,所以必須在85前面加上2個(gè)空格。3) 將剩余數(shù)據(jù)全部輸出:(5) 保存交卷第九種類型:鏈表類型1、 題庫(kù)中對(duì)應(yīng)題目編號(hào):22、80、842、 考題舉例:以22為例進(jìn)行講解(1) 題目要求:N名學(xué)生的成績(jī)已經(jīng)在主函數(shù)中放在一個(gè)帶頭結(jié)點(diǎn)的鏈表中,h指向鏈表的頭結(jié)點(diǎn),函數(shù)功能是:找出學(xué)生的最高分,由函數(shù)值返回。(注釋:返回值是最高分,不是數(shù)據(jù)整體)(2) NONO函數(shù):主要觀察紅框部分,具體解釋將在下面介紹。(3) 在fun函數(shù)中輸入測(cè)試數(shù)據(jù),編譯,執(zhí)行,該題函數(shù)返回double則需return語(yǔ)句,出現(xiàn)下圖結(jié)果。執(zhí)行結(jié)果中必須出現(xiàn)“Press any key to continue”字樣才會(huì)生成out.dat文件,都則將不生成該文件。 (4) 打開in.dat文件。for(j=0 ; j N; j+) fscanf(in, %lf, &sj) ;表示從in.dat中輸入N個(gè)實(shí)型數(shù)給數(shù)組s中,總共有十行。從每行中找到最大值,然后在out.dat中進(jìn)行輸出。(5) 打開out.dat文件。函數(shù)將返回的最大值放在變量max中,然后將max以%6.1fn的格式進(jìn)行輸出,注意%6.1f表示數(shù)據(jù)的總寬度為6,小數(shù)點(diǎn)占1位,則應(yīng)該對(duì)數(shù)據(jù)小數(shù)點(diǎn)后的第二位進(jìn)行四舍五入操作。以第一行為例,最大值為91,則輸出值為“ 91.0”,91.0前面加2個(gè)空格。 依次類推將每行中的最大值找出來(lái)進(jìn)行輸出即可,結(jié)果如上圖所示。(6) 保存交卷第十種類型:數(shù)學(xué)問(wèn)題二,素?cái)?shù)1. 考題中對(duì)應(yīng)題目編號(hào):20、21、622. 考題舉例:以21為例(1) 題目要求:將大于形參m且僅靠m的k個(gè)素?cái)?shù)存放在xx所指的數(shù)組中。分析題目需要同學(xué)們了解:什么是素?cái)?shù)?素?cái)?shù)就是只能被自身和1整除的數(shù),最小的素?cái)?shù)是2,例如4不是素?cái)?shù)因?yàn)樗鼙?整除,5是素?cái)?shù),因?yàn)樗荒鼙?和它自身整除。(2) NONO函數(shù): (3) 在fun函數(shù)中輸入測(cè)試數(shù)據(jù),編譯,執(zhí)行,該題函數(shù)返回void則無(wú)需return語(yǔ)句,出現(xiàn)下圖結(jié)果。執(zhí)行時(shí)必須輸入兩個(gè)整型數(shù):格式必須為17,5兩個(gè)數(shù)終將要加一個(gè)逗號(hào)。執(zhí)行結(jié)果中必須出現(xiàn)“Press any key to continue”字樣才會(huì)生成out.dat文件,都則將不生成該文件。 (4) 打開in.dat。fscanf(rf, %d %d, &m, &n) ;表示從in.dat中輸入兩個(gè)數(shù)給變量m和n,以第一行為例將101給了m,將7給了n,即找出101后面的7個(gè)素?cái)?shù)放在out.dat中。(5) 打開out.dat。for( m = 0 ; m =eps,而不是i=n,循環(huán)語(yǔ)句的語(yǔ)句的順尋不能顛倒,即先加之后再計(jì)算。3. 考題11,題目要求:求出能整除形參x且不是偶數(shù)的各個(gè)整數(shù),并從小到大的順序放在pp所指的數(shù)組中,這些除數(shù)的個(gè)數(shù)通過(guò)形參n返回。此題中要求能整除x,那么x應(yīng)該為分子,而不是分母,把滿足條件的數(shù)組放到pp所指的數(shù)組中,即pp數(shù)組應(yīng)用一個(gè)整型的變量來(lái)做pp下標(biāo),數(shù)組下標(biāo)從0開始,所以定義一個(gè)整形變量k并且賦初值為0;滿足條件的個(gè)數(shù)通過(guò)形參傳回。(1) 在fun函數(shù)中輸入代碼:(2) 編譯運(yùn)行程序,輸入測(cè)試數(shù)據(jù)35,輸出1,5,7,35就說(shuō)明正確,交卷即可 備注:此題目中不能把i初值定義為0,否則程序運(yùn)行時(shí)得不到結(jié)果。4. 考題14:求小于形參n能同時(shí)被3和7同時(shí)整除的所有自然數(shù)之和的平方根。67題和14題類似。首先看清題意,題目中要求是小于形參n,不包括n,能被3與7整除,兩者用邏輯與連接,平方根用平方根的函數(shù)sqrt;此題中要求的是自然數(shù)的和的平方根,而不是平方根的和,所以要先把滿足條件的數(shù)加起來(lái)后再開方。定義一個(gè)整型變量i,讓該變量由1直到n-1,用循環(huán)實(shí)現(xiàn),一個(gè)整形變量s,讓該變量存放的是滿足條件的數(shù)的和,由于s為全局變量,故應(yīng)該賦初值為0; int i,s=0; for(i=1;in;i+) if(i%3=0&i%7=0) s+=i; return sqrt(s);5. 34、觀察表達(dá)式,表達(dá)式的分子為x的n次冥,分母為數(shù)字的階乘,s為表達(dá)式的累加和,定義三個(gè)變量s1為分子 ,s2為分母,s為分子除以分母的和。 float s1=1.0,s2=1.0,s=1.0; int i; for(i=1;i=n;i+) s1*=x; s2*=i; s+=s1/s2;return s;備注:此時(shí)s的值不能賦初值為0;如果s得初值為0,此時(shí)表達(dá)式的值中沒(méi)有第一項(xiàng)的值。并且必須用return返回。6. 48、該表達(dá)式的分子均為1,分母為該項(xiàng)和下一項(xiàng)的積,s為最后表達(dá)式的累加和,定義一個(gè)整形變量I,用于代表某一項(xiàng)的序號(hào),則i+1到表達(dá)的是下一項(xiàng)的序號(hào)。 float s=0.0; int i; for(i=1;i=n;i+) s+=1.0/(i*(i+1); return s;備注:分子為1.0,而不能是1;因?yàn)閏語(yǔ)言中規(guī)定,整型除以整型,得到的值仍然為整型,。 i+1必須用括號(hào)括起來(lái),如果沒(méi)有用括號(hào)括起來(lái),根據(jù)乘法運(yùn)算規(guī)則,則先運(yùn)算i*i,再運(yùn)算i*i+1的值。7. 49、在該表達(dá)式中,分子分母都是階乘,可以看做是三個(gè)數(shù)之間的運(yùn)算,其中的每一個(gè)數(shù)都是另外一個(gè)數(shù)的階乘,定義三個(gè)變量,其中s1代表的是m的階乘,s2代表的n的階乘,s3代表的是m-n的階乘,表達(dá)式的值可以計(jì)算為:s1/(s2*s3);三個(gè)變量都是代表的是階乘,所以在賦初值時(shí)應(yīng)該賦初值為1或者是1.0; float s1=1.0,s2=1.0,s3=1.0; int i; for(i=1;i=m;i+) s1*=i; for(i=1;i=n;i+) s2*=i; for(i=1;i=m-n;i+) s3*=i; return s1/(s2*s3); 8. 67、題目要求:求出1到1000之間能被7或11整除,但不能同時(shí)被7和11整除的所有的整數(shù)。分析題目可以知道求出1到1000之間的數(shù)字必須使用循環(huán),起始值為1,終止值為1000,否則太復(fù)雜,不能同時(shí)被7和11整除即時(shí)不能被7和11的乘積77整除,最后通過(guò)n返回滿足條件的個(gè)數(shù)。程序如下,經(jīng)過(guò)編譯執(zhí)行后得到的結(jié)果如下:9. 76、分析題目知道F(0)和F(1)是兩個(gè)初始值為0和1,假設(shè)F(0)為變量a,F(xiàn)(1)為變量1,假設(shè)F(n)為c,則:a=0,b=1;F(3)=F(2)+F(1)即:F(3)=b+a=1 即:c=b+aF(4)=F(3)+F(2)即:F(4)=(b+a)+b=2 即:c=(b+a)+b 換種形式:c=b+a,即b的值應(yīng)該為上一步中c的值,a應(yīng)該為上一步中b的值,依次類推即可使用循環(huán)來(lái)實(shí)現(xiàn)結(jié)果。 使用C語(yǔ)言編程時(shí),必須給變量C賦值,題目中要求找出大于t的最小的數(shù),話句話說(shuō)就是

溫馨提示

  • 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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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)論