全國計(jì)算機(jī)等級(jí)考試二級(jí)C語言上機(jī)答題技巧1_第1頁
全國計(jì)算機(jī)等級(jí)考試二級(jí)C語言上機(jī)答題技巧1_第2頁
全國計(jì)算機(jī)等級(jí)考試二級(jí)C語言上機(jī)答題技巧1_第3頁
全國計(jì)算機(jī)等級(jí)考試二級(jí)C語言上機(jī)答題技巧1_第4頁
全國計(jì)算機(jī)等級(jí)考試二級(jí)C語言上機(jī)答題技巧1_第5頁
已閱讀5頁,還剩4頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、全國計(jì)算機(jī)等級(jí)考試二級(jí)C語言上機(jī)答題技巧一、上機(jī)改錯(cuò)題的特點(diǎn)和注意事項(xiàng) 1上機(jī)改錯(cuò)的試題中通常包含兩個(gè)(或三個(gè))錯(cuò)誤需要修改。2試題中用"*found*/"來提示在下一行(或下面第二行)有錯(cuò)。3錯(cuò)誤的性質(zhì)基本分語法錯(cuò)和邏輯錯(cuò)兩種,也有些試題要求把語句添加在下劃線處。4特別要注意的是:只能在出錯(cuò)的行上進(jìn)行修改,不要改動(dòng)程序行的順序,更不要自己另編程序。二、上機(jī)改錯(cuò)測試時(shí),建議按以下步驟進(jìn)行1首先仔細(xì)審題,了解試題的要求,看清楚試題給出的輸入和輸出例示,以便檢驗(yàn)改錯(cuò)后程序運(yùn)行的結(jié)果是否正確。2當(dāng)在Visual C+6.0環(huán)境下調(diào)出源程序后,審視所在函數(shù),根據(jù)題義理解程序所采用的

2、基本算法,做到心里有數(shù)。3先按CTRL+F7對(duì)測試程序進(jìn)行檢查是否有語法錯(cuò)誤。當(dāng)編譯提示有語法錯(cuò)時(shí),可參考編譯提示來查找并改正錯(cuò)誤。4當(dāng)不再出現(xiàn)語法錯(cuò)時(shí),使用F7執(zhí)行,看結(jié)果使用CTRL+F5,按照試題的示例給出的數(shù)據(jù)進(jìn)行試算,若試算的結(jié)果與給出的輸出結(jié)果相同時(shí),該題就做對(duì)了;若試算的結(jié)果與給出的輸出結(jié)果不同,就應(yīng)進(jìn)一步檢查程序中的邏輯錯(cuò)誤。5當(dāng)程序存在邏輯錯(cuò)誤時(shí),首先應(yīng)當(dāng)理解題意、讀懂程序的算法,必要時(shí)可按步檢查數(shù)據(jù)的流程,以便確定錯(cuò)誤所在。例如,題目要求數(shù)據(jù)按由小到大排序,而結(jié)果數(shù)據(jù)是按由大到小進(jìn)行了排序,問題可能出現(xiàn)在條件判斷上。又如,輸出的字符串比預(yù)期的短,就有可能字符串的結(jié)束標(biāo)志放錯(cuò)

3、了位置。再如做循環(huán)的時(shí)候數(shù)組上限下限錯(cuò)誤了,基數(shù)是從0開始而不是1開始的。修改程序中的邏輯錯(cuò)時(shí),要求考生認(rèn)真讀懂程序代碼。6修改完成,得到正確結(jié)果后,一定不要忘記把修改后的程序存盤。三、上機(jī)編程題的特點(diǎn)和說明1在二級(jí)C程序設(shè)計(jì)上機(jī)考試中,要求完成一個(gè)獨(dú)立的函數(shù)的編程。目前教育部考試中心已出版了上機(jī)考試習(xí)題集,這些有助于學(xué)習(xí)編程,但考生應(yīng)當(dāng)在學(xué)習(xí)過程中理解基本的算法,通過實(shí)際上機(jī)操作積累經(jīng)驗(yàn),才能掌握基本的編程能力。四、進(jìn)行編程測試時(shí),建議按以下步驟進(jìn)行1首先仔細(xì)審題,了解試題的要求,記下試題給出的輸入和輸出例示,以便檢驗(yàn)在完成指定的函數(shù)后程序運(yùn)行的結(jié)果是否正確。2當(dāng)在Visual C+6.0環(huán)

4、境下調(diào)出源程序后,應(yīng)對(duì)照函數(shù)首部的形參,審視主函數(shù)中調(diào)用函數(shù)時(shí)的實(shí)參內(nèi)容,以便明確在函數(shù)中需要處理的數(shù)據(jù)對(duì)象。3理解試題的要求,審視主函數(shù)中調(diào)用函數(shù)的方式,若在表達(dá)式中調(diào)用函數(shù)(如把函數(shù)值賦給某個(gè)對(duì)象),則要求有函數(shù)值返回,需注意函數(shù)的類型,并在函數(shù)中用return語句返回函數(shù)值;若主函數(shù)中僅用語句形式調(diào)用函數(shù),則需要通過形參間接地返回所得結(jié)果。4選擇適當(dāng)?shù)乃惴ㄟM(jìn)行編程,輸入程序語句。不要忘記及時(shí)存盤!5編譯程序,直到?jīng)]有語法錯(cuò)誤。6調(diào)試程序,利用試題中給出的例示數(shù)據(jù)進(jìn)行輸入(若要求輸入的話),運(yùn)行程序,用例示的輸出數(shù)據(jù)檢驗(yàn)輸出結(jié)果,直到結(jié)果相同。1.書寫標(biāo)識(shí)符時(shí),忽略了大小寫字母的區(qū)別。ma

5、in()int a=5;printf("%d",A);編譯程序把a(bǔ)和A認(rèn)為是兩個(gè)不同的變量名,而顯示出錯(cuò)信息。C認(rèn)為大寫字母和小寫字母是兩個(gè)不同的字符。習(xí)慣上,符號(hào)常量名用大寫,變量名用小寫表示,以增加可讀性。2.忽略了變量的類型,進(jìn)行了不合法的運(yùn)算。main()float a,b;printf("%d",a%b);%是求余運(yùn)算,得到a/b的整余數(shù)。整型變量a和b可以進(jìn)行求余運(yùn)算,而實(shí)型變量則不允許進(jìn)行“求余”運(yùn)算。3.將字符常量與字符串常量混淆。char c;c="a"在這里就混淆了字符常量與字符串常量,字符常量是由一對(duì)單引號(hào)括起來

6、的單個(gè)字符,字符串常量是一對(duì)雙引號(hào)括起來的字符序列。C規(guī)定以“”作字符串結(jié)束標(biāo)志,它是由系統(tǒng)自動(dòng)加上的,所以字符串“a”實(shí)際上包含兩個(gè)字符:a'和',而把它賦給一個(gè)字符變量是不行的。4.忽略了“=”與“=”的區(qū)別。在許多高級(jí)語言中,用“=”符號(hào)作為關(guān)系運(yùn)算符“等于”。如在BASIC程序中可以寫if (a=3) then 但C語言中,“=”是賦值運(yùn)算符,“=”是關(guān)系運(yùn)算符。如:if (a=3) a=b;前者是進(jìn)行比較,a是否和3相等,后者表示如果a和3相等,把b值賦給a。由于習(xí)慣問題,初學(xué)者往往會(huì)犯這樣的錯(cuò)誤。5.忘記加分號(hào)。分號(hào)是C語句中不可缺少的一部分,語句末尾必須有分號(hào)。a

7、=1b=2編譯時(shí),編譯程序在“a=1”后面沒發(fā)現(xiàn)分號(hào),就把下一行“b=2”也作為上一行語句的一部分,這就會(huì)出現(xiàn)語法錯(cuò)誤。改錯(cuò)時(shí),有時(shí)在被指出有錯(cuò)的一行中未發(fā)現(xiàn)錯(cuò)誤,就需要看一下上一行是否漏掉了分號(hào)。 z=x y;t=z/100;printf("%f",t);對(duì)于復(fù)合語句來說,最后一個(gè)語句中最后的分號(hào)不能忽略不寫。6.多加分號(hào)。對(duì)于一個(gè)復(fù)合語句,如: z=x y;t=z/100;printf("%f",t);復(fù)合語句的花括號(hào)后不應(yīng)再加分號(hào),否則將會(huì)畫蛇添足。又如:if (a%3=0);I ;本是如果3整除a,則I加1。但由于if (a%3=0)后多加了分號(hào)

8、,則if語句到此結(jié)束,程序?qū)?zhí)行I 語句,不論3是否整除a,I都將自動(dòng)加1。再如:for (I=0;I<5;I );scanf("%d",&x);printf("%d",x);本意是先后輸入5個(gè)數(shù),每輸入一個(gè)數(shù)后再將它輸出。由于for()后多加了一個(gè)分號(hào),使循環(huán)體變?yōu)榭照Z句,此時(shí)只能輸入一個(gè)數(shù)并輸出它。7.輸入變量時(shí)忘記加地址運(yùn)算符“&”。int a,b;scanf("%d%d",a,b);這是不合法的。Scanf函數(shù)的作用是:按照a、b在內(nèi)存的地址將a、b的值存進(jìn)去。“&a”指a在內(nèi)存中的地址。8.輸入

9、數(shù)據(jù)的方式與要求不符。scanf("%d%d",&a,&b);輸入時(shí),不能用逗號(hào)作兩個(gè)數(shù)據(jù)間的分隔符,如下面輸入不合法:3,4輸入數(shù)據(jù)時(shí),在兩個(gè)數(shù)據(jù)之間以一個(gè)或多個(gè)空格間隔,也可用回車鍵,跳格鍵tab。scanf("%d,%d",&a,&b);C規(guī)定:如果在“格式控制”字符串中除了格式說明以外還有其它字符,則在輸入數(shù)據(jù)時(shí)應(yīng)輸入與這些字符相同的字符。下面輸入是合法的:3,4此時(shí)不用逗號(hào)而用空格或其它字符是不對(duì)的。3 4 3:4又如:scanf("a=%d,b=%d",&a,&b);輸入應(yīng)如

10、以下形式:a=3,b=49.輸入字符的格式與要求不一致。在用“%c”格式輸入字符時(shí),“空格字符”和“轉(zhuǎn)義字符”都作為有效字符輸入。scanf("%c%c%c",&c1,&c2,&c3);如輸入a b c字符“a”送給c1,字符“”送給c2,字符“b”送給c3,因?yàn)?c只要求讀入一個(gè)字符,后面不需要用空格作為兩個(gè)字符的間隔。10.輸入輸出的數(shù)據(jù)類型與所用格式說明符不一致。例如,a已定義為整型,b定義為實(shí)型a=3;b=4.5;printf("%f%dn",a,b);編譯時(shí)不給出出錯(cuò)信息,但運(yùn)行結(jié)果將與原意不符。這種錯(cuò)誤尤其需要注意。1

11、1.輸入數(shù)據(jù)時(shí),企圖規(guī)定精度。scanf("%7.2f",&a);這樣做是不合法的,輸入數(shù)據(jù)時(shí)不能規(guī)定精度。12.switch語句中漏寫break語句。例如:根據(jù)考試成績的等級(jí)打印出百分制數(shù)段。switch(grade) case 'A':printf("85100n");case 'B':printf("7084n");case 'C':printf("6069n");case 'D':printf("<60 ");

12、default:printf("error ");由于漏寫了break語句,case只起標(biāo)號(hào)的作用,而不起判斷作用。因此,當(dāng)grade值為A時(shí),printf函數(shù)在執(zhí)行完第一個(gè)語句后接著執(zhí)行第二、三、四、五個(gè)printf函數(shù)語句。正確寫法應(yīng)在每個(gè)分支后再加上“break;”。例如case 'A':printf("85100 ");break;13.在定義數(shù)組時(shí),將定義的“元素個(gè)數(shù)”誤認(rèn)為是可使的最大下標(biāo)值。main()static int a10=1,2,3,4,5,6,7,8,9,10;printf("%d",a10)

13、;C語言規(guī)定:定義時(shí)用a10,表示a數(shù)組有10個(gè)元素。其下標(biāo)值由0開始,所以數(shù)組元素a10是不存在的。16.在不應(yīng)加地址運(yùn)算符&的位置加了地址運(yùn)算符。scanf("%s",&str);    =C語言編譯系統(tǒng)對(duì)數(shù)組名的處理是:數(shù)組名代表該數(shù)組的起始地址,且scanf函數(shù)中的輸入項(xiàng)是字符數(shù)組名,不必要再加地址符&。應(yīng)改為:scanf("%s",str);1、編一個(gè)函數(shù)fun(char *s),函數(shù)的功能是把字符串中的內(nèi)容逆置。例子如:字符串中原有的內(nèi)容為:abcdefg,則調(diào)用該函數(shù)后,串中的內(nèi)容為:g

14、fedcbafun(char *s) int i=0,t,n=strlen(s);for(;s it=*(s i);*(s i)=*(s n-1-i);*(s n-1-i)=t;注:該題的算法是先分別找出字符串的兩頭,然后同時(shí)逐一往中間移動(dòng),每移動(dòng)一次都進(jìn)行兩字符的位置對(duì)換,直到中間字符(用s i地址,因此要注意把它的內(nèi)容取出再進(jìn)行換位。即先進(jìn)行取內(nèi)容運(yùn)算*)2、請(qǐng)編寫函數(shù)fun,對(duì)長度為7個(gè)字符的字符串,除首、尾字符外,將其余5個(gè)字符按降序排列。例如,原來的字符串為CEAedca,排序后輸出為CedcEAa。int fun(char *s,int num) int i,j,t;for(i=1

15、;ifor(j=i 1;jif(s t=s;s=sj;sj=t;該題采用的排序法是選擇法進(jìn)行降序排序,算法是用外for()循環(huán)從字符串的前端往后端走動(dòng),每走動(dòng)一個(gè)字符都用內(nèi)嵌的for()循環(huán)在該字符后找出最小的字符與該字符進(jìn)行換位。直到外for()循環(huán)走到最后一個(gè)字符。此外,此題還要注意把首尾字符除開,即在最外層for()循環(huán)中從1開始,只到num-2即可。3、請(qǐng)編寫一個(gè)unsigned fun(unsigned w),w是一個(gè)大于10的無符號(hào)整數(shù),若w是n(n>=2)位的整數(shù),函數(shù)求出w的后n-1位的數(shù)作為函數(shù)值返回。例如:w值為5923,則函數(shù)返回923;w值為923則函數(shù)返回23。

16、unsigned fun( unsigned w ) if(w>=10000) return w000;if(w>=1000) return w00;if(w>=100) return w0;return w; 注:由于unsigned型整數(shù)在0-65535這間,只要它大于10000則對(duì)10000求余即得出后面4位,否則如果大于1000則對(duì)1000求余得出后3位數(shù),這樣一層一層往小的判斷。由于return的作用除了返回值以外,還有當(dāng)執(zhí)行到return時(shí)就跳出該程序,所以可以連續(xù)的用if()語句。4、請(qǐng)編一函數(shù)void fun(int ttMN,int ppN),tt指向一個(gè)M

17、行N列的二維數(shù)組,求出二維數(shù)組每列中最小元素,并依次放入pp所指一維數(shù)組中,二維數(shù)組中的數(shù)已在主函數(shù)中賦予。#define M 3#define N 4void fun(int ttMN,int ppN) int i, j;for(i=0;i pp=tt0;for(j=0;jif(ttj5、請(qǐng)編一個(gè)函數(shù)fun,其中n所指存儲(chǔ)單元中存放了數(shù)組中元素的個(gè)數(shù)。函數(shù)的功能是:刪除所有值為y的元素。數(shù)組元素中的值和y的值由主函數(shù)通過健盤讀入。試題程序。#define M 20void fun (int bb, int *n,int y) int i,j=0;for( i=0; i<*n; i )i

18、f(bb!=y) bbj =bb;*n=j;6、 請(qǐng)編寫一個(gè)函數(shù)int fun(int x),它的功能是:判斷整數(shù)x是否是同構(gòu)數(shù)。若是同構(gòu)數(shù),函數(shù)返回1;否則返回0。所謂“同構(gòu)數(shù)”是指這樣的數(shù),它出現(xiàn)在它的平方數(shù)的右邊。例如:輸入整數(shù)5,5的平方數(shù)是25,5是25中右側(cè)的數(shù),所以5是同構(gòu)數(shù)。x的值由主函數(shù)從健盤讀入,要求不大于100。int fun (int x) int xx=x * x;if(xx=x/xx=x/xx0=x) return 1;else return 0;7、請(qǐng)編寫函數(shù)fun,它的功能是:求出ss所指字符串中、指定字符的個(gè)數(shù),并返回此值。例如:若輸入字符串:12341213

19、2,輸入字符為:1,則輸出:3。#define M 81int fun(char *ss,char c)int num=0;while(*ss!='0')if(*ss=c) num+ ;ss+ ;return(num);8、請(qǐng)編寫函數(shù)fun,經(jīng)的功能是:求出1到1000之內(nèi)能被7或11整除、但不能同時(shí)補(bǔ)7和11整除的所有整數(shù)并將它們放在a所指的數(shù)組中,通過n返回這些數(shù)的個(gè)數(shù)。void fun(int *a,int *n) int i,m=0;for(i=1;i<1000;i )if(i%7=0)/(i=0)&&!(i%7=0)&&(i=0)am=i;m =1;*n=m;10、要求程序的功能是:把20個(gè)隨機(jī)數(shù)存入一個(gè)數(shù)組,然后輸出該數(shù)組中的最小值。其中確定最小值的下標(biāo)的操作在fun函數(shù)中實(shí)現(xiàn),請(qǐng)給出該函數(shù)的定義。試題程序。#include#include#define VSIZE 20int vectorVSIZE;i

溫馨提示

  • 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)論