二級(jí)C語言上機(jī)改錯(cuò)題技巧總結(jié)_第1頁
二級(jí)C語言上機(jī)改錯(cuò)題技巧總結(jié)_第2頁
二級(jí)C語言上機(jī)改錯(cuò)題技巧總結(jié)_第3頁
二級(jí)C語言上機(jī)改錯(cuò)題技巧總結(jié)_第4頁
二級(jí)C語言上機(jī)改錯(cuò)題技巧總結(jié)_第5頁
已閱讀5頁,還剩4頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、 .二級(jí)C上機(jī)改錯(cuò)題技巧總結(jié)一、 改錯(cuò)題之方法步驟1. 上機(jī)考試中改錯(cuò)題占30分,一般有兩個(gè)地方有錯(cuò)誤,題型簡(jiǎn)單2. 做改錯(cuò)題時(shí)先看出錯(cuò)的地方,分析語法錯(cuò)誤,如果能用C語言的語法判斷出錯(cuò)誤,改之即可3. 沒有語法錯(cuò)誤即分析邏輯錯(cuò)誤,邏輯錯(cuò)誤可以從幾個(gè)方面分析:(1) 從題目的要求中找到錯(cuò)誤,例如:題目要求計(jì)算s=1+1/2+1/3+1/n,那么循環(huán)的范圍就應(yīng)該是for(i=0;i<=n;i+),但是考試中經(jīng)常將其寫為:for(i=0;i<n;i+)(2) 根據(jù)題目中的關(guān)鍵字改錯(cuò),例如:題目中要求從小到大排序,則“從小到大”就是關(guān)鍵字(3) 重點(diǎn)注意函數(shù)的調(diào)用、函數(shù)的返回值類型,函數(shù)

2、的形參,這個(gè)是上機(jī)考試中的重點(diǎn)(4) 注意細(xì)節(jié),請(qǐng)參考以下為考生總結(jié)的知識(shí)(5) 多練習(xí),多思考,多總結(jié)二、 改錯(cuò)題之語法錯(cuò)誤1. 關(guān)鍵字出錯(cuò)(1) 關(guān)鍵字出錯(cuò),指的是C語言中的關(guān)鍵字出錯(cuò)。C語言的關(guān)鍵字都是小寫字母,并且在VC+6.0中以藍(lán)色字體顯示,如果常見的關(guān)鍵字是黑色字體,可以斷定關(guān)鍵字出錯(cuò);(2) if關(guān)鍵字出錯(cuò)1) 舉例:上機(jī)題庫P79第6題/*found*/ If(substrk+1='0') 2) 類似題目:12、35題(3) double關(guān)鍵字出錯(cuò)1) 舉例:上機(jī)題庫P86第23題/*found*/double fun(double a, dounle x0)

3、2) 類似題目:36、51(4) while關(guān)鍵字出錯(cuò)1) 舉例:上機(jī)題庫P77第2題/*found*/ wihle( q>p )2) 類似題目:(5) return關(guān)鍵字出錯(cuò)1) 舉例:上機(jī)題庫P101第54題/*found*/ Return(Value);2) 類似題目:862. 格式出錯(cuò)(1) C語言中的語句、基本結(jié)構(gòu)、函數(shù)等都有相應(yīng)的規(guī)范格式,程序中將這些格式書寫錯(cuò)誤,將導(dǎo)致編譯器無法識(shí)別程序,因此導(dǎo)致出錯(cuò);(2) 語句末尾少分號(hào)1) 分號(hào)是語句結(jié)束的標(biāo)志,每個(gè)語句都必須以分號(hào)結(jié)尾2) 舉例:上機(jī)題庫P77第2題第一個(gè)出錯(cuò)點(diǎn)/*found*/ q=p+i3) 類似的題目:28題第

4、一空、29題第1空、34題第2空、37題第2空、48題第2空,49第1空,59第2空、70、79、97(3) for結(jié)構(gòu)格式出錯(cuò)1) for結(jié)構(gòu)的格式:for(表達(dá)式1;表達(dá)式2;表達(dá)式3) 循環(huán)體語句 ,for結(jié)構(gòu)體中表達(dá)式必須以分號(hào)隔開,改錯(cuò)題中經(jīng)常出現(xiàn)將for結(jié)構(gòu)中分號(hào)錯(cuò)寫為逗號(hào)的情況;2) 舉例:上機(jī)題庫P77第3題第2個(gè)出錯(cuò)點(diǎn)/*found*/ for( i = 100, i <= m, i += 100 )3) 類似的題目:6題第一空、14題第二空、53第1空、73、86第1空(4) if結(jié)構(gòu)格式出錯(cuò)1) if結(jié)構(gòu)的格式:if(表達(dá)式),if后面必須加上小括號(hào)2) 舉例:P9

5、3第37第1個(gè)出錯(cuò)點(diǎn)/*found*/ if n = = 03) 類似題目:59題第1空(5) 數(shù)組格式出錯(cuò)1) 一維數(shù)組的定義形式:類型名 數(shù)組名常量表達(dá)式,謹(jǐn)記是數(shù)組的獨(dú)有特征2) 舉例:P89第28題第2個(gè)出錯(cuò)點(diǎn)/*found*/ t(k)=b(j);3) 舉例2:P97第1個(gè)出錯(cuò)點(diǎn)(二維數(shù)組不能省略列下標(biāo))/*found*/int fun(int n, int xx)4) 類似題目:95題第1空(6) 函數(shù)格式出錯(cuò)1) 記住函數(shù)名后面一定是花括號(hào),不能是方括號(hào),方括號(hào)只有在數(shù)組下標(biāo)中用到2) 舉例:P86第22題第1出錯(cuò)點(diǎn)/*found*/ n=strlen aa ;3) scanf(

6、輸入控制,輸入數(shù)據(jù)列表),scanf函數(shù)中輸入數(shù)據(jù)列表要求為變量的地址4) 舉例2:P95第41題第2出錯(cuò)點(diǎn)/*found*/ scanf("%d",aij);5) 類似題目:第80題第1空(7) 命令行格式錯(cuò)誤1) #include “stdio.h”,include和define前面都必須有#2) 舉例:P84第17題第1出錯(cuò)點(diǎn)/*found*/include (stdio.a)3. 使用了未定義的變量:變量必須先定義后執(zhí)行(1) 0(零)和o(字母歐)的區(qū)別1) 區(qū)別:零像雞蛋,字母歐像乒乓球2) 舉例:上機(jī)題庫P85第19題第一個(gè)出錯(cuò)點(diǎn)/*found*/ a2=k/

7、1o;3) 類似題目:19題第一空、23題第二空、43題第二空、51題第二空、77、98、(2) P(大)和p(?。┑膮^(qū)別1) 區(qū)別:一般在定義時(shí)候p為小寫,但是在使用的時(shí)候變?yōu)榇髮慞,做題時(shí)候一定要細(xì)心2) 舉例:上機(jī)題庫P91第33題第一出錯(cuò)點(diǎn)fun(int *a,int n,int x) int p=0,i; an=x; while( x!=ap )p=p+1;/*found*/ if(P=n) return -1;3) 類似題目:33題第一空、82(3) 普通變量大小寫的區(qū)別1) 定義時(shí)候和使用時(shí)候變量的大小寫不一致,違背了變量必須“先定義后執(zhí)行”的原則2) 舉例:18題第2空int

8、fun ( float *s, int n, float *aver ) float ave, t = 0.0 ; int count = 0, k, i ; for ( k = 0 ; k < n ; k+ )/*found*/ t = sk ; ave = t / n ; for ( i = 0 ; i < n ; i+ ) if ( s i < ave ) count+ ;/*found*/ *aver = Ave ;/*分析:定義時(shí)候float ave, t = 0.0 ;ave為小寫,但是此時(shí)使用時(shí)候卻是Ave大寫,因此出錯(cuò)*/ return count ;3) 類

9、似題目:18題第2空、22題第2空、38題第1空、54題第2空三、 改錯(cuò)題之邏輯錯(cuò)誤1. 運(yùn)算符號(hào)出錯(cuò):(1) C語言中除號(hào)是“/”不是“”(2) 賦值號(hào)(=)和等號(hào)(= =)混淆1) 記住在if語句中出現(xiàn)賦值號(hào)(=)一般是講它改為等號(hào)(= =)。2) 類似題目:14題第一空和29題第二空都是這樣的錯(cuò)誤、87、91、942. 表達(dá)式的取值范圍出錯(cuò):(1) 當(dāng)遇到計(jì)算表達(dá)式的累加或是累減時(shí),一定用到循環(huán)來完成相應(yīng)的操作。(2) 例如:改錯(cuò)題第七題中要求計(jì)算t=1-1/2*2-1/3*3-.-1/m*m這個(gè)表達(dá)式,在這個(gè)題目中第一空有這樣的for語句:for(i=2;i<m;i+)y-=1/

10、(i*i);從題目中不難發(fā)現(xiàn)i是一個(gè)變量,它的取值范圍從整數(shù)2開始到m-1結(jié)束,最終計(jì)算的結(jié)果為 y=1-1/2*2-1/3*3-.-1/(m-1)*(m-1)和題目要求的不符,因此將i<m改為i<=m。(3) 做這樣的題目看兩點(diǎn):一看題目中的表達(dá)式,二看for語句中變量的取值范圍。(4) 類似題目:31題第二空、52第2空、81、88、3. C語言中的除法運(yùn)算:(1) 這個(gè)考點(diǎn)同樣考查表達(dá)式的相關(guān)知識(shí)。(2) 例如:改錯(cuò)題第七題中要求計(jì)算t=1-1/2*2-1/3*3-.-1/m*m這個(gè)表達(dá)式,在這個(gè)題目中第一空有這樣的for語句:for(i=2;i<m;i+)y-=1/(

11、i*i);剛才我們將了表達(dá)式的范圍,現(xiàn)在我們考慮y-=1/(i*i);是否正確?賦值號(hào)左邊問題不大,我們看看右邊1/(i*i),其中i是整數(shù),那么i*i也是整數(shù),在C語言中1除以比它大的數(shù)時(shí)值為零。這樣和題目的要求就不相符。(3) 記?。?/2的值為零,只有1.0/2或是1.0/2.0的值為0.5。(4) 類似題目:39題第一空也同樣是這種錯(cuò)誤、57、764. 找最大值和排序問題:(1) 遇到這種題目在改錯(cuò)題中最容易考查的是大于(>)、小于(<)等符號(hào)的變化,當(dāng)你查找出錯(cuò)的地方?jīng)]有語法錯(cuò)誤,也沒有使用了未定義的變量時(shí),記住這個(gè)口訣:將大于改為小于,將小于改為大于?。?) 類似題目:

12、11題第二空、12題第一空和13題第二空、4題第二空、585. 函數(shù)的返回值及其參數(shù):重點(diǎn)int fun(int x,int y) main() if(x>y)return x; int a,b,c;else return y; scanf(“%d%d”,&a,&b); c=fun(a,b); printf(“最大值為:%d”,c);(1) 函數(shù)的返回類型:1) 在上面的例子中fun函數(shù)的返回值是int,如果將int改為double,很明顯是錯(cuò)誤的。從兩個(gè)地方來看,首先return x;中x的類型必須和fun函數(shù)中的返回值相同,x是整型。其次c=fun(a,b);中fun

13、函數(shù)將一個(gè)返回值賦值給了變量C,說明函數(shù)返回的值一定是整型。2) 記?。汉瘮?shù)調(diào)用、函數(shù)的返回值和ruturn中數(shù)據(jù)類型必須一致!3) 類似題目:1.1、3.1、16.1、19.2、34.1、36.1、40.1、48.1、71都死這樣的錯(cuò)誤,(注1.1表示第一題第一空)。78、89、90、(2) return后面的表達(dá)式及其類型:19.2、30.2、39.2(3) 函數(shù)傳遞的參數(shù):int fun(int *x,int *y) main() if(*x>*y)return *x; int a,b,c;else return *y; scanf(“%d%d”,&a,&b); c

14、=fun(&a,&b); printf(“最大值為:%d”,c);1) 一定注意:傳遞的是值還是地址。比較上面兩個(gè)例子大家很容易區(qū)別傳遞的是值還是地址,第一個(gè)例子調(diào)用函數(shù)的時(shí)候傳遞的是值,因此在fun函數(shù)的形參中x和y僅僅是普通的變量,而第二個(gè)例子中調(diào)用函數(shù)的時(shí)候傳遞的是地址,因此在fun函數(shù)的形參中x和y就是兩個(gè)指針變量。2) 類似題目:5.1、13.1、17.2、20.1、25.2、52.1、56、84、85、100(4) 指針的使用:int fun(int *x,int *y) if(*x>*y)return *x; else return *y; 1) 在此例中f

15、un函數(shù)的形參是x和y,它們的類型是整型的指針,那么在fun函數(shù)的函數(shù)體中使用到x和y的值時(shí)一定要區(qū)分:x>y比較的是x和y所存變量地址的大小,*x>*y才是比較值的大小。2) 如果存在*x=x+y;的類似情況一定是錯(cuò)誤的,必須要將賦值號(hào)的左右兩邊的類型變?yōu)橐恢隆?3) 類似題目:5.2、5.3、20.2、24.2、35.1、44.1、72、75、一定特別注意!6. 數(shù)組: (1) 數(shù)組下標(biāo)的初始值:數(shù)組下標(biāo)從零開始,到長(zhǎng)度減一結(jié)束。1) 考試技巧:當(dāng)出錯(cuò)行在定義部分時(shí),先檢查該定義語句有沒有語法錯(cuò)誤,再看定義語句中的變量有沒有賦初始值,最后看變量賦的初始值有沒有正確。 2) 定義

16、初始值有竅門,遇到累加時(shí),用來存放累加和的變量一般賦值為零,遇到求階乘時(shí),用來存放階乘值的變量一般賦值為一。3) 8.1中的變量k賦值為1,但是數(shù)組的下標(biāo)只能從0開始,因此將1改為0就行了。 (2) 普通變量的初始值:1) 依照上面的技巧,我們同樣可以將它延伸到普通變量中。41.1中需要將變量的值進(jìn)行初始化,題目中有這樣的要求:“輸出主對(duì)角線元素之和”,既然這樣我們很肯定初始值應(yīng)該為零,接著我們看看是給哪個(gè)變量賦值?看printf(“sum=%d”,sum);輸出的是sum的值,說明sum就是我們要補(bǔ)充在橫線上的變量。2) 10.1也可以用同樣的方法來分析。 (3) 數(shù)組和字符串長(zhǎng)度減一:1)

17、 當(dāng)使用數(shù)組中的元素時(shí),最大值只能到數(shù)組長(zhǎng)度減一。字符串以0作為字符串的結(jié)束標(biāo)志,因此取值最大也只能到字符串長(zhǎng)度減一。25.2中輸出printf(“%d”,aai);分析程序知道i在此時(shí)就是數(shù)組的長(zhǎng)度,我們要輸出數(shù)組中的元素,最大就只能到aai-1,因此改為 printf(“%d”,aai-1);就行了。2) 4.1和38.2中考查的是字符串長(zhǎng)度減一的問題。(4) 數(shù)組下標(biāo)往后走:1) 當(dāng)題目要求將一個(gè)數(shù)組中的元素直接賦值或是以某種方式復(fù)制到另一個(gè)數(shù)組中時(shí),接受數(shù)據(jù)的數(shù)組中的下標(biāo)要自增。9.1中sj=si;將si中的值復(fù)制給sj,聯(lián)系上下函數(shù)段發(fā)現(xiàn)i是一個(gè)變量被for語句控制,從0開始直到遇到

18、0結(jié)束。i一直在加但是j沒有變化,因此改為sj+=si;即可。2) 類似的題目有:25.2、26.2、32.1、50.2。7. 特例:(1) 部分題目的解答很特殊,需要根據(jù)上下文中的內(nèi)容來解答題目:例如10.1,在此題目中,定義了變量t=0;根據(jù)下面程序中的循環(huán),s=0.0,首先加的是變量t的值,即s的值是從0.0開始的,s得到的值是:s=0.0+0.0+1.0/3+,觀察表達(dá)式的值,這個(gè)少加了第一項(xiàng)1.0的值,所以變量t的初值不能是0.0,只能是1.0,或者是1;(2) 21.2中的這個(gè)題目中,表達(dá)式的值是從2/1+3/2+5/3即表達(dá)式的規(guī)律是從第一項(xiàng)開始,以后的每一項(xiàng)的分子是前一項(xiàng)的分子

19、和分母的和,分母為前一項(xiàng)的分子。所以該題目的第二個(gè)空中的內(nèi)容應(yīng)該是:c=a;a+=b;b+=c;這一條語句中 a代表的變量的分子,b代表的是變量的分母,執(zhí)行第一個(gè)表達(dá)式的值,把a(bǔ)的值賦值給變量c,第二個(gè)表達(dá)式是把分子和分母的和相加復(fù)制給變量a,第三個(gè)表達(dá)式是把原來a的值和變量b的值相加之后得到的值賦值給變量b,則變量b得到的值也為分子分母的和,不滿足題意,而分母應(yīng)該為原來分子的值。第三表達(dá)式的值應(yīng)該改為:b=c;(3) 類似的題目有:33.2、40.2、43.1、47.1、50.18. 素?cái)?shù) 11.1 、29、83(1) 判斷一個(gè)數(shù)是否是素?cái)?shù)的方法很多,的是只用掌握一種即可,首先掌握判斷一個(gè)素?cái)?shù)的方法;(2) 素?cái)?shù)的定義:

溫馨提示

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