




已閱讀5頁,還剩86頁未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
計(jì)算機(jī)三級(jí)網(wǎng)絡(luò)技術(shù)機(jī)試超級(jí)講義三級(jí)C上機(jī)的考試概括:一道編程題,不是完整的編程,完成一段函數(shù)如何順利通過考試: 熟悉上機(jī)環(huán)境,考試過程中不要在此浪費(fèi)時(shí)間和精力 掌握一些C編程的基本知識(shí) 看好南開100題的各種題型的解法 多上機(jī)獨(dú)立練習(xí)。 掌握題庫題目分類規(guī)律,考試題型有限,只是少數(shù)考題條件略改,比如原題中是“從大到小”排序,考題也許改成“從小到大”排序;排序關(guān)鍵字變化等,因此讀透題目的基礎(chǔ)上在作題,不因馬虎而作錯(cuò)題目。 考試過程中,認(rèn)真審題最關(guān)鍵,看到自己熟悉的簡(jiǎn)單題目、復(fù)雜題目考試之前分別對(duì)待,考試過程中保持冷靜,不慌張,見易題步盲目歡喜,見難題不亂陣腳。C編程的基本知識(shí)C程序設(shè)計(jì)的內(nèi)容很豐富,按照考試要求,100題解法中主要涉及到的是基礎(chǔ)知識(shí)、四種結(jié)構(gòu)的的程序設(shè)計(jì)、函數(shù)與數(shù)組的應(yīng)用和算法,在學(xué)習(xí)時(shí),應(yīng)該把主要精力放在這些部分,其它的知識(shí),如輸入輸出的語句、文件的讀寫、指針的定義等,源程序已經(jīng)給出(只要能讀懂即可)。.一、快速掌握C語言的語法忠告強(qiáng)化學(xué)習(xí),加上機(jī)練習(xí)。在寫程序上經(jīng)常忘記C語言中的分號(hào)、小括號(hào)、大括號(hào)的運(yùn)用,一開始就要養(yǎng)成良好習(xí)慣和細(xì)心。特別注意的是為什么說上機(jī)練習(xí)很重要,原因就是在紙上寫的,語法錯(cuò)了不知道,而上機(jī)錯(cuò)了就顯示。二、C語言的運(yùn)算符和運(yùn)算順序這是學(xué)好C程序設(shè)計(jì)的基礎(chǔ),C語言的運(yùn)算非常靈活,功能十分豐富,運(yùn)算種類遠(yuǎn)多于其它程序設(shè)計(jì)語言。在表達(dá)式方面較其它程序語言更為簡(jiǎn)潔,如自加、自減、逗號(hào)運(yùn)算使表達(dá)式更為簡(jiǎn)單。當(dāng)多種不同運(yùn)算組成一個(gè)運(yùn)算表達(dá)式,即一個(gè)運(yùn)算式中出現(xiàn)多種運(yùn)算符時(shí),運(yùn)算的優(yōu)先順序和結(jié)合規(guī)則十分重要。考試中常用的運(yùn)算符:1.算術(shù)運(yùn)算符包括加(+)、減(-)、乘(*)、除(/)、求余(或稱模運(yùn)算,%)、自增(+)、自減(-)2.關(guān)系運(yùn)算符用于比較運(yùn)算。包括大于()、小于(=)、小于等于(=)和不等于(!=)3.邏輯運(yùn)算符用于邏輯運(yùn)算。包括與(&)、或(|)、非(!)4.位操作運(yùn)算符左移()5.賦值運(yùn)算符用于賦值運(yùn)算,分為簡(jiǎn)單賦值(=)、復(fù)合算術(shù)賦值(+=,-=,*=,/=,%=)6.指針運(yùn)算符用于取內(nèi)容(*)和取地址(&)二種運(yùn)算。7.特殊運(yùn)算符有括號(hào)(),成員(.)等幾種。先要明確運(yùn)算符按優(yōu)先級(jí)不同分類,下面我們通過幾個(gè)例子來說明:(1) 5*8/4%10 這個(gè)表達(dá)式中出現(xiàn)3種運(yùn)算符,是同級(jí)運(yùn)算符,運(yùn)算順序按從左至右結(jié)合,因此先計(jì)算5 *8=40,然后被4除,結(jié)果為10,最后是%(求余數(shù))運(yùn)算,所以表達(dá)式的最終結(jié)果為10%10 = 0;(2)a = 3;b = 5;c =+ a* b ;d =a + +* b;(3)(a = 3,b = 5,b+ = a,c = b* 5)三、學(xué)好數(shù)據(jù)類型定義1、 常見的數(shù)據(jù)類型:(1)基本數(shù)據(jù)類型:整型、長(zhǎng)整型、字符型、無符號(hào)型(unsigned char)、實(shí)數(shù)型float、doubleint 整數(shù)-3276832767 ;char 字符 單引號(hào),數(shù)字串問題,轉(zhuǎn)義字符: n ; double、float都是浮點(diǎn)型,double(雙精度型)比float(單精度型)存的數(shù)據(jù)更準(zhǔn)確些,占的空間也更大,int是整型,long是長(zhǎng)整型,long的范圍比int大注意:允許字符變量參與數(shù)值運(yùn)算,即用字符的ASCII 碼參與運(yùn)算。由于大小寫字母的ASCII 碼相差32,因此運(yùn)算后把小寫字母換成大寫字母。然后分別以整型和字符型輸出。(2)指針類型: 定義方式: 類型說明符 *變量名; int *p; char *p; 賦值方法:int a; int *p=&a; 或者 int a;int *p; p=&a; 注意:不允許把一個(gè)數(shù)賦予指針變量,錯(cuò)誤形式: int *p;p=1000; 被賦值的指針變量前不能再加“*”說明符,如寫為*p=&a 錯(cuò)誤指針變量的運(yùn)算: 取地址運(yùn)算符& 取內(nèi)容運(yùn)算符* 注意:指針運(yùn)算符*和指針變量說明中的指針說明符* 不是一回事。在指針變量說明中,“*”是類型說明符,表示其后的變量是指針類型。 而表達(dá)式中出現(xiàn)的“*”則是一個(gè)運(yùn)算符用以表示指針變量所指的變量。例如:main()int a=5,*p=&a;printf (%d,*p);int a,*pa=&a,*pb;pb=pa; /*把a(bǔ)的地址賦予指針變量pb*/ int a5,*pa;pa=a; (數(shù)組名表示數(shù)組的首地址,故可賦予指向數(shù)組的指針變量pa) 也可寫為:pa=&a0; /*數(shù)組第一個(gè)元素的地址也是整個(gè)數(shù)組的首地址,也可采取初始化賦值的方法:int a5,*pa=a; 指針變量的加減算術(shù)運(yùn)算:(主要針對(duì)數(shù)組變量的操作) 對(duì)于指向數(shù)組的指針變量,可以加上或減去一個(gè)整數(shù)n。設(shè)pa是指向數(shù)組a的指針變量,則pa+n,pa-n,pa+,+pa,pa-,-pa 指針變量加或減一個(gè)整數(shù)n的意義是把指針指向的當(dāng)前位置(指向某數(shù)組元素)向前或向后移動(dòng)n個(gè)位置。注意,數(shù)組指針變量向前或向后移動(dòng)一個(gè)位置和地址加1或減1 在概念上是不同的。因?yàn)閿?shù)組可以有不同的類型各種類型的數(shù)組元素所占的字節(jié)長(zhǎng)度是不同的。如指針變量加1,即向后移動(dòng)1 個(gè)位置表示指針變量指向下一個(gè)數(shù)據(jù)元素的首地址。 而不是在原地址基礎(chǔ)上加1。 例如:int a5,*pa;pa=a; pa指向數(shù)組a,也是指向a0pa=pa+2; pa指向a2,即pa的值為&pa2指針變量的加減運(yùn)算只能對(duì)數(shù)組指針變量進(jìn)行,對(duì)指向其它類型變量的指針變量作加減運(yùn)算是毫無意義。兩個(gè)指針變量之間的運(yùn)算只有指向同一數(shù)組的兩個(gè)指針變量之間才能進(jìn)行運(yùn)算, 否則運(yùn)算無意義。 數(shù)組之間的關(guān)系運(yùn)算: pf1=pf2表示pf1和pf2指向同一數(shù)組元素pf1pf2表示pf1處于高地址位置pf1=7)B=a; 分支體可以是一條語句,此時(shí)“ ”可以省略它有兩條分支路徑可選,一是當(dāng)條件為真,執(zhí)行分支體,否則跳過分支體,這時(shí)分支體就不會(huì)執(zhí)行。if(條件)分支1else分支2這是典型的分支結(jié)構(gòu),如果條件成立,執(zhí)行分支1,否則執(zhí)行分支2,分支1和分支2都可以是1條或若干條語句構(gòu)成。嵌套分支語句:其語句格式為:if(條件1) 分支1;else if(條件2) 分支2 else if(條件3) 分支3 else if(條件n) 分支n else 分支n+13、循環(huán)結(jié)構(gòu):循環(huán)結(jié)構(gòu)可以減少源程序重復(fù)書寫的工作量,用來描述重復(fù)執(zhí)行某段算法的問題,這是程序設(shè)計(jì)中最能發(fā)揮計(jì)算機(jī)特長(zhǎng)的程序結(jié)構(gòu),C語言中提供四種循環(huán),即goto循環(huán)、while循環(huán)、do while循環(huán)和for循環(huán)。四種循環(huán)可以用來處理同一問題,一般情況下它們可以互相代替換,但一般不提倡用goto循環(huán),在學(xué)習(xí)中我們主要學(xué)習(xí)while、dowhile、for三種循環(huán)。常用的三種循環(huán)結(jié)構(gòu)學(xué)習(xí)的重點(diǎn)在于弄清它們相同與不同之處,以便在不同場(chǎng)合下使用,這就要清楚三種循環(huán)的格式和執(zhí)行順序,將每種循環(huán)的流程圖理解透徹后就會(huì)明白如何替換使用,如把while循環(huán)的例題,用for語句重新編寫一個(gè)程序,這樣能更好地理解它們的作用。特別要注意在循環(huán)體內(nèi)應(yīng)包含趨于結(jié)束的語句(即循環(huán)變量值的改變),否則就可能成了一個(gè)死循環(huán),這是初學(xué)者的一個(gè)常見錯(cuò)誤。do while(條件表達(dá)式) ; while (條件表達(dá)式) ; 其中條件表達(dá)式:(若為真(或非0)則繼續(xù)循環(huán))for(表達(dá)式1;表達(dá)式2;表達(dá)3) 語句:表達(dá)式1通常用來給循環(huán)變量賦初值,一般是賦值表達(dá)式。也允許在for語句外給循環(huán)變量賦初值,此時(shí)可以省略該表達(dá)式。表達(dá)式2通常是循環(huán)條件,一般為關(guān)系表達(dá)式或邏輯表達(dá)式。表達(dá)式3通??捎脕硇薷难h(huán)變量的值,一般是賦值語句。注意 :這三個(gè)表達(dá)式都可以是逗號(hào)表達(dá)式, 即每個(gè)表達(dá)式都可由多個(gè)表達(dá)式組成。三個(gè)表達(dá)式都是任選項(xiàng),都可以省略。3、轉(zhuǎn)移語句 break, continue和return。break 跳出本層循環(huán),轉(zhuǎn)去執(zhí)行后面的程序continue 結(jié)束本次循環(huán),即不再執(zhí)行循環(huán)體中continue 語句之后的語句,轉(zhuǎn)入下一次循環(huán)條件的判斷與執(zhí)行 注意: 本語句只結(jié)束本層本次的循環(huán),并不跳出循環(huán)。void main()int n=7;do if (n%7!=0) continue;printf(%d ,n); n+;While(n=100) void main()int n;for(n=7;n=100;n+)if (n%7!=0)continue;printf(%d ,n); void main()int n,i;for(n=2;n=100;n+)for(i=2;i=n) printf(t%d,n);注意它們的異同點(diǎn):用while和dowhile循環(huán)時(shí),循環(huán)變量的初始化的操作應(yīng)在循環(huán)體之前,而for循環(huán)一般在語句1中進(jìn)行的;while 循環(huán)和for循環(huán)都是先判斷表達(dá)式,后執(zhí)行循環(huán)體,而dowhile循環(huán)是先執(zhí)行循環(huán)體后判斷表達(dá)式,也就是說dowhile的循環(huán)體最少被執(zhí)行一次,而while 循環(huán)和for就可能一次都不執(zhí)行。另外還要注意的是這三種循環(huán)都可以用break語句跳出循環(huán),用continue語句結(jié)束本次循環(huán)。順序結(jié)構(gòu)、分支結(jié)構(gòu)和循環(huán)結(jié)構(gòu)并不彼此孤立的,在循環(huán)中可以有分支、順序結(jié)構(gòu),分支中也可以有循環(huán)、順序結(jié)構(gòu)。4、模塊化程序結(jié)構(gòu)C語言的模塊化程序結(jié)構(gòu)用函數(shù)來實(shí)現(xiàn),即將復(fù)雜的C程序分為若干模塊,每個(gè)模塊都編寫成一個(gè)C函數(shù),然后通過主函數(shù)調(diào)用函數(shù)及函數(shù)調(diào)用函數(shù)來實(shí)現(xiàn)一大型問題的C程序編寫,因此常說:C程序=主函數(shù)+子函數(shù)。 因些,對(duì)函數(shù)的定義、調(diào)用、值的返回等中要尤其注重理解和應(yīng)用,并通過上機(jī)調(diào)試加以鞏固。注意:上機(jī)考試要求考生只對(duì)某個(gè)子函數(shù)作答注意: 模塊化程序中的全局變量與局部變量簡(jiǎn)單記憶方法:主函數(shù)中定義的變量為全局變量,適用于任何子函數(shù),而在子函數(shù)中定義的變量為局部變量,適用范圍只是本函數(shù)。#include #include void readwriteDat();int isP(int m) int i; for(i=2;i0;m+) if(isP(m) xxs+=m; k-;main() int m,n,xx1000; clrscr(); printf(nPlease enter two integers:); scanf(%d%d,&m,&n); num(m,n,xx); for(m=0;mn;m+) printf(%d ,xxm); printf(n); readwriteDat();void readwriteDat() int m,n,xx1000, i; FILE *rf,*wf; rf=fopen(in.dat,r); wf=fopen(out.dat,w); for(i=0;i10;i+) fscanf(rf,%d %d,&m,&n); num(m,n,xx); for(m=0;mn;m+)fprintf(wf,%d ,xxm); fprintf(wf,n); fclose(rf); fclose(wf);注意:區(qū)分函數(shù)是否需要返回值 區(qū)分標(biāo)志 函數(shù)定義是否有 void例如:請(qǐng)編寫函數(shù)countValue(),它的功能是:求n以內(nèi)(不包括n)同時(shí)能被3與7整除的所有自然數(shù)之和的平方根s,并作為函數(shù)值返回,最后結(jié)果s輸出到文件out.dat中。 例如若n為1000時(shí),函數(shù)值應(yīng)為:s=153.。 部分源程序存在文件prog1.c中。 請(qǐng)勿改動(dòng)主函數(shù)main()和輸入輸出數(shù)據(jù)函數(shù)progReadWrite()的內(nèi)容。#include #include #include double countValue(int n) int i;double s=0.0;for(i=1;in;i+)if(i%21=0) s+=i;return sqrt(s);main() clrscr(); printf(自然數(shù)之和的平方根=%fn,countValue(1000); progReadWrite();progReadWrite() FILE *fp,*wf; int i,n; float s; fp=fopen(in.dat,r); if(fp=NULL) printf(數(shù)據(jù)文件in.dat不存在!); return; wf=fopen(out.dat,w); for(i=0;i10;i+) fscanf(fp,%dn,&n); s=countValue(n); fprintf(wf,%fn,s); fclose(fp);fclose(wf);五、掌握一些簡(jiǎn)單的算法編程其實(shí)一大部分工作就是分析問題,找到解決問題的方法,再以相應(yīng)的編程語言寫出代碼。要求我們掌握一些簡(jiǎn)單的算法,在掌握這些基本算法后,要完成對(duì)問題的分析就容易了。如兩個(gè)數(shù)的交換、三個(gè)數(shù)的比較、冒泡法排序,這就要求我們要清楚這些算法的內(nèi)在含義,下面介紹考試中出現(xiàn)頻率較高的算法:1、數(shù)字拆分此類題在100題目中占的比重很大,共占了16道題,主要是對(duì)四位數(shù)分解成千位數(shù),百位數(shù),十位數(shù),個(gè)位數(shù),這些就要用到運(yùn)算中的整除(“/”)和求余(“%”)運(yùn)算,一定要理解這兩個(gè)運(yùn)算的結(jié)果。如:已知數(shù)據(jù)文件IN.DAT中存有200個(gè)四位數(shù),并已調(diào)用讀函數(shù)readDat()把這些數(shù)存入數(shù)組a中,請(qǐng)考生編制一函數(shù)jsVal(),其功能是:若一個(gè)四位數(shù)的千位數(shù)字上的值小于等于百位數(shù)字上的值,百位數(shù)字上的值小于等于十位數(shù)字上的值,以及十位數(shù)字上的值小于等于個(gè)位數(shù)字上的值,并且原四位數(shù)是偶數(shù),則統(tǒng)計(jì)出滿足此條件的個(gè)數(shù)cnt并把這些四位數(shù)按從小到大的順序存入數(shù)組b中,最后調(diào)用寫函數(shù)writeDat()把結(jié)果cnt以及數(shù)組b中符合條件的四位數(shù)輸出到OUT.DAT文件中。從解法中可以看出,分別求出這個(gè)四個(gè)位數(shù),假如原四位數(shù)是a千位數(shù):a/1000;百位數(shù):a%1000/100;十位數(shù):a%100/10;個(gè)位數(shù):a%10;2、排序法排序方法很多,只要掌握一種方法,就可以應(yīng)對(duì)南開題中關(guān)于排序題的解法,建議用冒泡排序法。如用冒泡排序法對(duì)10個(gè)不同整數(shù)排序(從小到大),選擇法排序思路:設(shè)有10個(gè)元素a1a10,將a1與a2a10比較,若a1比a2a10都小,則不進(jìn)行交換,即無任何操作;若a2a10 中有一個(gè)比a1小,則將其中最小的一個(gè)(假設(shè)為a)與a1交換,此時(shí)a1中存放了10個(gè)中最小的數(shù)。第二輪將a2與a3a10比較,將剩下9個(gè)數(shù)中的最小者a與a2交換,此時(shí)a2 中存放的10個(gè)數(shù)中第2小的數(shù);依此類推,共進(jìn)行9輪比較,a1到a10就已按從小到大的順序存放。即每一輪都找出剩下數(shù)中的最小一個(gè),代碼如下:9 7 1 2 11 6 8for(i=1;i=9;i+) 理會(huì)此處為 i=9 for(j=i+1;j=10;j+) 理會(huì)此處j=i+1 和jaj) 此處不能丟掉小括號(hào) 考試當(dāng)中主要考試此處的判斷條件 temp=a; a=aj; aj=temp;重點(diǎn)提示:題庫中幾乎80%以上題目都用到以上方法,大家必須明白其原理,并熟練掌握。特別提示:該題型請(qǐng)注意在冒泡排序過程中變量的使用??荚囘^程中常常出現(xiàn)以下畫面,就是由于變量之間使用混淆所造成。例如:考試中典型的數(shù)字排序問題在文件in.dat中有200個(gè)正整數(shù),且每個(gè)數(shù)均在1000至9999之間。函數(shù)ReadDat()讀取這200個(gè)數(shù)存放到數(shù)組aa中。請(qǐng)編制函數(shù)jsSort(),其函數(shù)的功能是:要求按每個(gè)數(shù)的后三位的大小進(jìn)行降序排列,然后取出滿足此條件的前10個(gè)數(shù)依次存入數(shù)組b中,如果后三位的數(shù)值相等,則按原先的數(shù)值進(jìn)行升序排列。最后調(diào)用函數(shù)WriteDat()把結(jié)果bb輸出到文件out.dat中。例:處理前 9012 5099 6012 7025 8088 處理后 5099 8088 7025 6012 9012 注意:部分源程序已給出。請(qǐng)勿改動(dòng)主函數(shù)main()、讀數(shù)據(jù)函數(shù)ReadDat()和輸出數(shù)據(jù)函數(shù)WriteDat()的內(nèi)容。 #include#include#includeint aa200,bb10;void jsSort() int i,j,data; for(i=0;i199;i+)for(j=i+1;j200;j+) if(aai%1000aaj)data=aai;aai=aaj;aaj=data; for(i=0;i10;i+) bbi=aai;void main()readDat();jsSort();writeDat();system(pause);readDat()FILE *in;int i;in=fopen(in.dat,r);for(i=0; i200; i+) fscanf(in,%d,&aai);fclose(in);writeDat()FILE *out;int i;clrscr();out=fopen(out.dat,w);for(i=0; istring23、sqrt 求double類型數(shù)值的平方根函數(shù)已知在文件IN.DAT中存有100個(gè)產(chǎn)品銷售記錄,每個(gè)產(chǎn)品銷售記錄由產(chǎn)品代碼dm(字符型4位),產(chǎn)品名稱mc(字符型10位),單價(jià)dj(整型),數(shù)量sl(整型),金額je(長(zhǎng)整型)五部分組成。其中:金額=單價(jià)*數(shù)量計(jì)算得出。函數(shù)ReadDat()是讀取這100個(gè)銷售記錄并存入結(jié)構(gòu)數(shù)組sell中。請(qǐng)編制函數(shù)SortDat(),其功能要求:按產(chǎn)品代碼從大到小進(jìn)行排列,若產(chǎn)品代碼相同,則按金額從大到小進(jìn)行排列,最終排列結(jié)果仍存入結(jié)構(gòu)數(shù)組sell中,最后調(diào)用函數(shù)WriteDat()把結(jié)果輸出到文件OUT6.DAT中。 部分源程序存在文件prog1.c中。請(qǐng)勿改動(dòng)主函數(shù)main()、讀數(shù)據(jù)函數(shù)ReadDat()和輸出數(shù)據(jù)函數(shù)WriteDat()的內(nèi)容。#include #include #include #include #include #define MAX 100typedef struct char dm5; /*產(chǎn)品代碼*/ char mc11; /*產(chǎn)品名稱*/ int dj; /*單價(jià)*/ int sl; /*數(shù)量*/ long je; /*金額*/PRO;PRO sellMAX;void ReadDat();void WriteDat();void SortDat()int i,j; PRO xy; 上邊這些是定義了一個(gè)結(jié)構(gòu)體,名字為PRO 定義了一個(gè)PRO的數(shù)組xy 注意大寫PRO for(i=0;i99;i+)for(j=i+1;j100;j+) if(strcmp(selli.dm,sellj.dm)0|strcmp(selli.dm,sellj.dm)=0&selli.jesellj.je) xy=selli; sell i=sellj; sellj=xy;void main() memset(sell,0,sizeof(sell); ReadDat(); SortDat(); WriteDat(); void ReadDat() FILE *fp; char str80,ch11; int i; fp=fopen(IN.DAT,r); for(i=0;i100;i+) fgets(str,80,fp); memcpy(selli.dm,str,4); memcpy(selli.mc,str+4,10); memcpy(ch,str+14,4);ch4=0; selli.dj=atoi(ch); memcpy(ch,str+18,5);ch5=0; selli.sl=atoi(ch); selli.je=(long)selli.dj*selli.sl; fclose(fp);void WriteDat(void) FILE *fp; int i; fp=fopen(OUT6.DAT,w); for(i=0;i100;i+) printf(%s %s %4d %5d %5dn, selli.dm,selli.mc,selli.dj,selli.sl,selli.je); fprintf(fp,%s %s %4d %5d %5dn, selli.dm,selli.mc,selli.dj,selli.sl,selli.je); fclose(fp);函數(shù)ReadDat()實(shí)現(xiàn)從文件ENG.IN中讀取一篇英文文章,存入到字符串?dāng)?shù)組xx中;請(qǐng)編制函數(shù)encryptChar(),按給定的替代關(guān)系對(duì)數(shù)組xx中的所有字符進(jìn)行替代,仍存入數(shù)組xx的對(duì)應(yīng)的位置上,最后調(diào)用函數(shù)WriteDat()把結(jié)果xx輸出到文件PS1.DAT中。替代關(guān)系:f(p)=p*11 mod 256(p是數(shù)組中某一個(gè)字符的ASCII值,f(p)是計(jì)算后新字符的ASCII值),如果計(jì)算后f(p)值小于等于32或大于130,則該字符不變,否則將f(p)所對(duì)應(yīng)的字符進(jìn)行替代。部分源程序存在文件prog1.c中。原始數(shù)據(jù)文件存放的格式是:每行的寬度均小于80個(gè)字符。請(qǐng)勿改動(dòng)主函數(shù)main()、讀數(shù)據(jù)函數(shù)ReadDat()和輸出數(shù)據(jù)函數(shù)WriteDat()的內(nèi)容。#include #include #include #include unsigned char xx5080;int maxline=0;/*文章的總行數(shù)*/int ReadDat(void);void WriteDat(void);void encryptChar() int i,j;for(i=0;imaxline;i+)for(j=0;jstrlen(xxi);j+)if(xxij*11%256130) continue;else xxij=xxij*11%256;void main() clrscr(); if(ReadDat() printf(數(shù)據(jù)文件ENG.IN不能打開!n007); return; encryptChar(); WriteDat();int ReadDat(void) FILE *fp; int i=0; unsigned char *p; if(fp=fopen(eng.in,r)=NULL) return 1; while(fgets(xxi,80,fp)!=NULL) p=strchr(xxi,n); if(p)*p=0; i+; maxline=i;fclose(fp);return 0;void WriteDat(void) FILE *fp; int i; fp=fopen(ps1.dat,w); for(i=0;imaxline;i+) printf(%sn,xxi); fprintf(fp,%sn,xxi); fclose(fp);或者:void encryptChar() int i,j;unsigned char ch;for(i=0;imaxline;i+) for(j=0;jstrlen(xxi);j+) ch=xxij*11%256;if(ch130) continue;else xxij=ch;題庫中典型的素?cái)?shù)判斷問題int i,j,sum;for(i=100;i=800;i+) for(j=2;ji;j+) if(i%j=0) break;if(j=i) sum+=i ; 針對(duì)100題庫的應(yīng)試辦法1、 按照題目類型分類講解:數(shù)字問題;商品排序;字母替換和字符操作(移動(dòng),排序);選票問題;報(bào)數(shù)出圈問題;特殊問題(數(shù)學(xué)問題,特殊函數(shù))2、 分析算法3、 分析各種題型容易出錯(cuò)位置和形式4、 調(diào)試過程中如何定位錯(cuò)誤5、 針對(duì)個(gè)別題目 帶標(biāo)志 特別對(duì)待,帶 標(biāo)志表示該類型中較復(fù)雜題目,需要多練習(xí)6、 掌握極個(gè)別題目巧妙的方法(比如避開比較難的指針內(nèi)容)下面分類別講解:第一部分 數(shù)字問題抽中率在45%左右數(shù)字題目類型1: 6,11,12- 24、88數(shù)字拆分排序問題(同學(xué)強(qiáng)化練習(xí)) 數(shù)字題目類型2:25,26,27,28,29,30,31(拆分后拼數(shù)后判斷條件),此類題目千萬小心,小心符合題目要求的“條件。條件出錯(cuò)導(dǎo)致整個(gè)題目出錯(cuò)”。數(shù)字題目類型3:32,33,34,35數(shù)字題目類型4:連續(xù)大于某個(gè)數(shù)相鄰數(shù)字 2, 36,37,38數(shù)字題目類型5:素?cái)?shù)問題 39,40,89,90,91,92其他數(shù)字題目類型:69,70,71,93, 94,95,96, 97, 98, 99, 100帶 標(biāo)志為相對(duì)較難的題目,請(qǐng)大家特別對(duì)待數(shù)字題目類型1-6、int i,j,temp;for(i=0;i199;i+) for(j=i+1;j200;j+) if(aai%1000aaj%1000 | aai%1000=aaj%1000 & aaiaaj) temp=aai; aai=aaj; aaj=temp; for(i=0;i10;i+) bbi=aai;同學(xué)考慮:此題可以把條件語句拆成條件語句嵌套11、 數(shù)字題目,涉及右移問題int i,data;for(i=0;i0) /*此處一定先設(shè)定該條件*/totNum+;data=xxi1; /*此處一定記住右移符號(hào)*/if(data%2=0)totCnt+;totPjz+=xxi;totPjz/=totCnt; /*此處一定在循環(huán)體外邊*/考試過程中同學(xué)容易出現(xiàn)錯(cuò)誤形式:int i,data;for(i=0;i0) totNum+;data=xxi1;if(data%2=0)totCnt+;totPjz+=xxi;totPjz/=totCnt;同學(xué)分析以上內(nèi)容為什么出錯(cuò)88、int i,j,cnt=0,bw,sw,gw; for(i=100;i=999;i+) bw=i/100;sw=i%100/10;gw=i%10;for(j=10;j*j=i;j+)if(i=j*j&(bw=sw|sw=gw|gw=bw) bbcnt+=i;return cnt; /*此處一定返回cnt*/數(shù)字題目類型2-25qw=ai/1000; bw=ai%1000/100; sw=ai%100/10; gw=ai%10; ab=10*qw+gw; cd=10*bw+sw; if(ab%2!=0&cd%2!=0&(ab%5=0|cd%5=0)&qw!=0&bw!=0) bcnt+=ai; for(i=0;icnt-1;i+) for(j=i+1;jcnt;j+) if(bibj) tmp=ai; ai=aj; aj=tmp; 請(qǐng)同學(xué)查找上題目出錯(cuò)在什么位置數(shù)字題目類型4-2int i,j,data;for(i=0;iMAX-5;i+)if(ai%2!=0)for(j=i+1;j=i+5;j+) /* 此處注意不能加大括號(hào) */ if(aiaj) break; /* 此處注意不能用continue */if(j=i+6) bcnt+=ai; for(i=0;icnt-1;i+) for(j=i+1;jbj) data=bi; bi=bj; bj=data; 36:int i,j,tag;for(i=0;iMAX-5;i+) if(ai%2=0) for(j=i+1;jaj) break; if(j=i+6) /*注意應(yīng)該是i+6不是i+5*/ bcnt+=ai; for(i=0;icnt-1;i+) for(j=i+1;jbj) tag=bi; bi=bj; bj=tag; 37:int i,j,tag;for(i=5;iMAX;i+) if(ai%2=0) for(j=i-5;ji;j+) if(aiaj) break; if(j=i) /*注意應(yīng)該是j=i 而不是j=i+1 考慮此處改成j=i+1應(yīng)該改動(dòng)什么地方*/ bcnt+=ai; for(i=0;icnt-1;i+) for(j=i+1;jcnt;j+) if(bibj) tag=bi; bi=bj; bj=tag; 38:int i,j,tag;for(i=5;iMAX;i+) if(ai%2!=0 &ai%7=0) for(j=i-5;ji;j+) if(aiaj) break; if(j=i) /注意應(yīng)該是j=i 而不是j=i+1 bcnt+=ai; for(i=0;icnt-1;i+) for(j=i+1;jcnt;j+) if(bibj) tag=bi; bi=bj; bj=tag; 同學(xué)考慮:38題能把條件:“被7整除”調(diào)整到什么位置” 數(shù)字題目類型5- 89:素?cái)?shù)判斷問題做法1int i,j,bb200; for(i=500;i=800;i+) /*注意此處的大括號(hào)不能丟*/for(j=2;ji;j+) if(i%j=0) break;if(j=i) bbcnt+=i; for(i=0;icnt;i=i+2) sum+=bbi; for(i=1;i500;i-) for(j=2;ji;j+) if(i%j=0) break; if(j=i) cnt+;sum=sum+k*i;k=k*(-1); 90:int i,j,bw,sw,gw;for(i=100;i1000;i+) bw=i/100;sw=i%100/10; gw=i%10; for(j=2;ji;j+) if(i%j=0) break; if(i=j) &(gw+sw)%10=bw) cnt+; sum+=i; 注意:89,90兩個(gè)題目中源題沒有給出素?cái)?shù)判斷函數(shù),需要自己動(dòng)手編寫91int i; for(i=1;i0;m+) /*注意此處的大括號(hào)不能丟掉 */ for(i=2;i=m)xxs+=m;k-;其他數(shù)字題目類型-69:int i,j,data; for(i=0;i199;i+)for(j=i+1;jaaj%1000|aai%1000=aaj%1000&aaiaaj)data=aai;aai=aaj;aaj=data; for(i=0;i10;i+) bbi=aai;70,71 :數(shù)字結(jié)構(gòu)數(shù)組排序問題這類題目主要考察結(jié)構(gòu)數(shù)組的定義和結(jié)構(gòu)數(shù)組元素的引用方法,在前幾種類型的基礎(chǔ)上,比較容易實(shí)現(xiàn)。 另外需要注意:這兩個(gè)題目考察大家函數(shù)返回值問題。即return的使用。 93回文數(shù)int i,strl,half; char xy20; ltoa(n,xy,10); /* 把一整數(shù)轉(zhuǎn)換為字符串注意這里不能使用itoa()函數(shù),因?yàn)閚是long 型的itoa()函數(shù)有3個(gè)參數(shù):第一個(gè)參數(shù)是要轉(zhuǎn)換的數(shù)字,第二個(gè)參數(shù)是要寫入轉(zhuǎn)換結(jié)果的目標(biāo)字符串,第三個(gè)參數(shù)是轉(zhuǎn)移數(shù)字時(shí)所用 的基數(shù)。在上例中,轉(zhuǎn)換基數(shù)為10。10:十進(jìn)制;2:二進(jìn)制. */ strl=strlen(xy); half=strl/2; for(i=0;i=half
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025高速公路工程施工合同
- 2025美團(tuán)酒店預(yù)訂合同協(xié)議
- 2025標(biāo)準(zhǔn)房屋租賃合同簡(jiǎn)化版范本
- 2025如何補(bǔ)辦丟失的勞動(dòng)合同證明
- 2025簡(jiǎn)易版權(quán)轉(zhuǎn)讓合同
- 2025專利權(quán)許可合同模板
- 2025電梯行業(yè)勞動(dòng)合同范本
- 2025設(shè)備租賃合同與協(xié)議書范本
- 2025存量房買賣合同書
- 2025融資租賃合同的相關(guān)法律特征
- T-ZZB 3624-2024 1000kV交流架空輸電線路金具
- 建筑行業(yè)施工期間意外傷害免責(zé)協(xié)議
- 2025年河南應(yīng)用技術(shù)職業(yè)學(xué)院?jiǎn)握新殬I(yè)技能測(cè)試題庫匯編
- 2025年中國雞尾酒行業(yè)市場(chǎng)運(yùn)行態(tài)勢(shì)及投資戰(zhàn)略規(guī)劃報(bào)告
- 學(xué)生會(huì)述職報(bào)告:文體部工作匯報(bào)
- 冀教版 八年級(jí)英語下冊(cè) 第二學(xué)期 期中綜合測(cè)試卷(2025年春)
- 民兵國防知識(shí)教育教案
- 毒理學(xué)研究新技術(shù)應(yīng)用-深度研究
- 隱私安全與用戶滿意度關(guān)系-洞察分析
- 心理健康C證面試15題
- DB33T 2202-2019 公安警察院校警務(wù)化管理規(guī)范
評(píng)論
0/150
提交評(píng)論