C語言 三級上機(jī)考試題型總結(jié)與注意事項(xiàng)
按前面的分題型講解,三級上機(jī)考試100道題被分為9大題型。每種題型在題庫中占的比例也已經(jīng)在題型名字后面的括號中注明。
題型
一、結(jié)構(gòu)體數(shù)組排序問題(11%)
題型
二、對四位數(shù)先篩選再處理的問題(35%)
題型
三、整數(shù)處理問題(17%)
題型
四、對字符數(shù)組中的字符進(jìn)行替換的問題(18%)
題型
五、對字符串?dāng)?shù)組進(jìn)行排序的問題(6%)
題型
六、特殊排序問題(5%)
題型七、二次排序問題(2%)
題型
八、選票統(tǒng)計(jì)問題(3%)
題型
九、數(shù)列問題(3%)
注意事項(xiàng): 應(yīng)考策略:
1、首先仔細(xì)審題,看清題目要求,避免眼高手低。
2、在頭文件下面,看清試題程序中已經(jīng)定義的變量及其類型。
3、試題程序中已經(jīng)定義的結(jié)果變量不要重復(fù)定義(中間變量沒關(guān)系)。
4、看清試題程序中定義好的變量后,注意試題程序中有沒有進(jìn)行初始化。重復(fù)初始化沒關(guān)系,但是不進(jìn)行初始化會出問題。
5、按照題目要求,仔細(xì)分析,平穩(wěn)答題,時(shí)間絕對夠用。
6、答完題先保存,再編譯,有語法錯(cuò)誤則改正,編譯通過后則運(yùn)行。
7、以運(yùn)行結(jié)果為準(zhǔn),檢查是否具有題目要求的功能,以排除邏輯錯(cuò)誤。
8、時(shí)間很充足,急著早交卷沒用,確定無誤后再交卷。
常見小錯(cuò)誤
1、字符串的比較沒有使用strcmp()函數(shù)。
2、把等號錯(cuò)寫為賦值符號。
3、在程序進(jìn)行中,尤其是多次循環(huán)的程序中,沒有考慮到變量值的變化。
4、沒有注意循環(huán)的作用范圍,少寫{}。
5、沒有注意運(yùn)算符的優(yōu)先級。
還有很多其它的小錯(cuò)誤,在上機(jī)的過程中會出現(xiàn)。不上機(jī)運(yùn)行,總是會有想不到的錯(cuò)誤,多上機(jī)運(yùn)行,也可以發(fā)現(xiàn)很多小技巧。
常用運(yùn)算符優(yōu)先級(從高到低)
1、[ ]
。(結(jié)構(gòu)體成員引用運(yùn)算符)
2、++---(負(fù)號)()(強(qiáng)制轉(zhuǎn)換運(yùn)算符)*(指針運(yùn)算符)&(取地址運(yùn)算符)
3、*(乘)/ %
4、+
5、<<
>>
6、<
<=
>
>=
7、==!=
8、&&
9、||
10、=
+=
*=
/=
%=(賦值運(yùn)算符號)
11、,(逗號)
C語言 三級上機(jī)考試中最常用的基礎(chǔ)知識: 2010-04-22 21:
51一、上機(jī)考試題中的常用操作
上機(jī)考試題中有許多操作經(jīng)常用到,以下是幾種非常常用的,還有一些更細(xì)節(jié)的東西在以后的具體題目中會著重分析。
1、對數(shù)組元素進(jìn)行排序
如對數(shù)組a[N]進(jìn)行從小到大排列(或叫升序排列),程序如下:
int i,j,t;for(i=0;ia[j])t=a[i],a[i]=a[j],a[j]=t;程序思路解析:
從數(shù)組中的第一個(gè)元素開始,與它后面的所有元素依次進(jìn)行比較,如果發(fā)現(xiàn)前面的比后面的大,就進(jìn)行交換,否則不進(jìn)行處理。a[0]將是N個(gè)元素中最大的,a[1]將是除a[0]以外的元素中最大的。這樣一直到倒數(shù)第二個(gè)元素。最后一個(gè)元素后面沒有元素了,所以i這種操作的特點(diǎn): 當(dāng)i變化以后,第i個(gè)元素之前的元素就已經(jīng)確定了,只有后面的元素才會在程序往下執(zhí)行時(shí)發(fā)生變化。比如對數(shù)據(jù)3,2,1,6,5進(jìn)行升序排列,程序執(zhí)行時(shí)數(shù)據(jù)的狀態(tài)變化為:
1,x,x,x,x
1,2,x,x,x
1,2,3,x,x
1,2,3,5,6
所以說,如果要求將a[N]中最小的10個(gè)元素按從小到大的順序排列到數(shù)組的前部的話,則只須對數(shù)組的前10個(gè)元素進(jìn)行處理,相應(yīng)的程序改為: int i,j,t;for(i=0;i<10;i++)for(j=i+1;ja[j])t=a[i],a[i]=a[j],a[j]=t;
而不必對i>=10 的元素處理。
這種操作在三級考試題中經(jīng)常用到。其中的交換條件,也就是if()中的內(nèi)容,根據(jù)問題的要求會有所變化;比如把從小到大改為從大到小,或者改為按元素對10求余的余數(shù)大小進(jìn)行從小到大排列,相應(yīng)的程序中if()語句改為: if(a[i]if(a[i]%10>a[j]%10)t=a[i],a[i]=a[j],a[j]=t;
2、將篩選出的數(shù)組元素統(tǒng)計(jì)個(gè)數(shù),并存入另一數(shù)組
通常題目中會預(yù)先定義一個(gè)名為cnt的整型變量,用于個(gè)數(shù)統(tǒng)計(jì)。
比如,將整型數(shù)組a[200]中能被3整除的數(shù)統(tǒng)計(jì)個(gè)數(shù),并存入數(shù)組b[200]中,程序如下:
int i;cnt=0;(如果題目已經(jīng)初始化為0了,該句就可以省了)for(i=0;i<200;i++)if(a[i]%3==0)b[cnt++]=a[i];最后一句是一種精簡的寫法,相當(dāng)于:b[cnt]=a[i],cnt++;這里cnt也用來表示數(shù)組 b的元素號,這樣可以節(jié)省定義變量的個(gè)數(shù),不必再定義另一個(gè)變量專門表示數(shù)組b的元素號。只要a[i]滿足條件a[i]%3==0,個(gè)數(shù)cnt 就加1,最后cnt 就是所有這樣的元素的個(gè)數(shù)。
還是像排列順序問題中一樣,if()中內(nèi)容根據(jù)問題的要求相應(yīng)地進(jìn)行改變。
3、整數(shù)各位數(shù)字的求法
有很多題目中都涉及到對一個(gè)四位數(shù)或三位數(shù)的各位數(shù)字進(jìn)行判斷,因此必然用到對整數(shù)各位數(shù)字的求解。
如對四位數(shù)x,它各位數(shù)字: 千位:qw=x/1000;百位:bw=x%1000/100;十位:sw=x%100/10;個(gè)位:gw=x%10;小知識點(diǎn):
在沒有進(jìn)行強(qiáng)制類型轉(zhuǎn)換的情況下,對整型變量除10,結(jié)果還是整型,沒有小數(shù),所以數(shù)字的位數(shù)就少了一位。利用這個(gè)特點(diǎn),可以求出一個(gè)整數(shù)有多少位,并能能過%10的操作依次求出這個(gè)數(shù)的個(gè)位、十位、百位??在以后的一個(gè)例題中會用到這一點(diǎn)。
4、結(jié)構(gòu)體數(shù)組的引用 如以下程序: Typedef struct {char dm[5];char mc[10];int je;int dj;}PRO;PRO sell[100];sell[100]為結(jié)構(gòu)體數(shù)組,引用其中某一元素,和數(shù)組一樣,sell[i]為第i個(gè)元素;引用其中的某一元素的某一項(xiàng),用sell[i].dm;sell[i].mc;sell[i].je 等。符號‘.’是結(jié)構(gòu)體引用運(yùn)算符,它的優(yōu)先級和圓括號()、下標(biāo)運(yùn)算符[ ]、指向結(jié)構(gòu)體運(yùn)算符 —> 一樣,在所有運(yùn)算符中是最高的。
5、素?cái)?shù)的判斷
比如,要判斷整數(shù)n是否為素?cái)?shù),程序如下(大致分為兩部分): int i;for(i=2;iif(n%i==0)break;
if(i==n)??;
// n 是素?cái)?shù) else ??;
// n不是素?cái)?shù)
程序思路解析: 素?cái)?shù)也就是不能分解為兩個(gè)因數(shù)相乘。從2開始檢查,一直到n-1,如果n%i==0,也就是說i是n的因數(shù),則中斷循環(huán)。否則繼續(xù)檢查下一個(gè)數(shù)。
因此,如果中間發(fā)現(xiàn)了n的因數(shù)(n不是素?cái)?shù)),for循環(huán)就中斷了,則最后i的值小于n;如果從2到n-1都沒有n 的因數(shù)(n是素?cái)?shù)),則for循環(huán)會進(jìn)行到底,最后i的值就等于n。最后通過判斷i的值來判斷n是否為素?cái)?shù)就可以了。
在三級考試中,要注意審題,有的題目是讓考生自己寫判斷素?cái)?shù)的程序語句,也有個(gè)別題目在題目中給出了判斷素?cái)?shù)的子函數(shù),因此這樣的話,只需要調(diào)用題目中給出的函數(shù)就可以了,而不需要做重復(fù)工作。當(dāng)然如果做了重復(fù)工作也沒有關(guān)系,不會影響最后結(jié)果的正確性,只是多費(fèi)點(diǎn)時(shí)間而已。關(guān)于判斷素?cái)?shù),程序可以寫的更精簡,執(zhí)行效率也可以更高,不過為了簡單易懂,這里不再多寫,并且在以后的題目中,也都以這種形式來判斷素?cái)?shù)。
6、return 語句。
在寫子函數(shù)時(shí),有時(shí)會要求函數(shù)返回一個(gè)值,只要用return 語句將其返回就可以了。return后面的括號可以寫也可以不寫。需要注意的是:
一個(gè)函數(shù)最多只能有一個(gè)返回值,并且只能執(zhí)行一次返回值的操作。在執(zhí)行return語句之后,函數(shù)的調(diào)用將結(jié)束,也就是說子函數(shù)中的程序?qū)K止運(yùn)行。
也就是說,從某種意義上講,子函數(shù)中的return語句具有類似于break語句的作用,可以用于控制子函數(shù)中的循環(huán)語句的執(zhí)行。這在以后的例題中也會用到,有助于理解一些問題。
比如,要寫一個(gè)判斷素?cái)?shù)的子函數(shù),要求是素?cái)?shù)則返回1,不是素?cái)?shù)則返回0,程序如下: int is sushu(int n){ int i;for(i=2;i按照上面講的判斷素?cái)?shù)的函數(shù)原理,以及有關(guān)ruturn語句的“類似”break語句的特點(diǎn),不難這個(gè)小函數(shù)。
二、常用庫函數(shù)(使用頻率與順序有關(guān)):
1、strlen(str)
計(jì)算字符串的長度(不包括字符串結(jié)束標(biāo)志‘