上機改錯題應試方法淺談市公開課特等獎市賽課微課一等獎課件_第1頁
上機改錯題應試方法淺談市公開課特等獎市賽課微課一等獎課件_第2頁
上機改錯題應試方法淺談市公開課特等獎市賽課微課一等獎課件_第3頁
上機改錯題應試方法淺談市公開課特等獎市賽課微課一等獎課件_第4頁
上機改錯題應試方法淺談市公開課特等獎市賽課微課一等獎課件_第5頁
已閱讀5頁,還剩10頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

上機改錯題應試方法淺談南京農(nóng)業(yè)大學工學院電氣工程系電子信息科學與技術教研室第1頁改錯題中所存在錯誤主要是:1.語法錯誤:肉眼觀察或用TC編譯器調試發(fā)覺。2.邏輯錯誤:經(jīng)過肉眼觀察和TC編譯器調試得到結果不正確發(fā)覺。3.運行錯誤:如包含不正確頭文件,無法經(jīng)過編譯。第2頁常見語法錯誤:1.定義類型與輸入輸出格式類型不匹配。inta;floatf;scanf(”%f”,&a);//對整型變量賦值不能用%f格式符printf(”%d”,&f);//對實型變量輸出不能用%d格式符2.忘記加分號,分號是C語句中不可缺乏一部分,語句末尾必須有分號a=1;b=2;

編譯時,編譯程序在“a=1”后面沒發(fā)覺分號,就把下一行“b=2”也作為上一行語句一部分,這就會出現(xiàn)語法錯誤。改錯時,有時在被指出有錯一行中未發(fā)覺錯誤,就需要看一下上一行是否遺漏了分號,{

z=x+y;t=z/100;

printf(“%f”,t);}

對于復合語句來說,最終一個語句中最終分號不能忽略不寫

第3頁3.多加分號對于一個復合語句,如:{

z=x+y;t=z/100;printf(“%f”,t);

};

復合語句花括號后不應再加分號,不然將會畫蛇添足。又如:if

(a%3==0);i++;本是假如3整除a,則i加1。但因為if

(a%3==0)后多加了分號,則if語句到此結束,程序將執(zhí)行i++語句,不論3是否整除a,i都將自動加1。再如:for

(i=0;i<5;i++);{scanf("%d",&x);printf("%d",x);}

本意是先后輸入5個數(shù),每輸入一個數(shù)后再將它輸出.因為for()后多加了一個分號,使循環(huán)體變?yōu)榭照Z句,此時只能輸入一個數(shù)并輸出它。第4頁4.輸入變量時忘記加地址運算符”&”:int

a,b;scanf(”%d%d”,a,b);

這是不正當.scanf函數(shù)作用是:按照a,b在內(nèi)存地址將a,b值存進去,“&a”指a在內(nèi)存中地址。

5.對數(shù)組名輸入字符串時加了“&“:inta[20];scanf(”%s”,&a);

數(shù)組名本身就是一個地址,不需要加”&”。一樣問題也會出現(xiàn)在指針變量中,如:

inta,*p=&a;scanf(”%d”,&p);6.scanf(”%7.2f”,&a);//錯,不能要求精度第5頁7.數(shù)組定義、賦值錯誤。如:inta[2][]={1,2,3,4,5,6};

第一維能夠省,非第一維不能省。chars[10]=’’;

對字符數(shù)組整體賦值(初始化)要加花括弧{},或者以字符串形式賦值能夠省花括弧{}。8.(重點)函數(shù)調用時參數(shù)不匹配、函數(shù)類型不匹配(1)普通變量:voidfun(floata){~~~~returnt;}main(){inta,b;~~~~b=fun(a);}第6頁8.(重點)函數(shù)調用時參數(shù)不匹配、函數(shù)類型不匹配(2)數(shù)組元素:使用方法同普通變量(3)數(shù)組名:fun(int*a,intn)//會忘記星號{~~~~returnt;}main(){inta[10],n=10;~~~~b=fun(&a);//n參數(shù)忘記傳遞了,}//a前面不能加”&”第7頁常見邏輯錯誤:1.忽略了“=”與“==”區(qū)分,在C語言中,“=”是賦值運算符,“==”是關系運算符,如:if(n%i=0)k=j;while(a=3)k=j;2./和%兩種運算符混用。求奇偶數(shù)時用了”/”:if(n/2==1)t=i+j;3.”>、<、>=、<=”使用方法邏輯混亂。如:求十個正數(shù)之和。do{scanf(”%d”,&n[i]);if(n[i]<0)i++;}while(i<10);

注意此處應該是if(n[i]>0)i++;第8頁4.for語句中自變量起始值邏輯錯誤。如:題目要求a[0]不用,a[1]元素開始保留數(shù)據(jù),已和習慣一致,不過因為習慣:for(i=0;i<=10;i++)scanf(”%d”,a[i]);

此處應該改成i=1再如:數(shù)組元素地址賦值inta[10],t,*p;~~~~~for(p=0;*p<=10;p++)t+=*p;

第9頁5.數(shù)組上下標取值極易發(fā)生錯誤。for(i=1;i<4;i++)//i=0{sum1=a[i][i];//sum1+=a[i][i];

sum2=a[i][i];//sum2+=a[i][3-i];

}假如改錯題內(nèi)出現(xiàn)相關數(shù)組上下限問題,犯錯可能性極大。

6.“==”和“!=”混用。如:請輸入十個非零數(shù)while(a[n]==0)//改為a[n]!=0scanf(”%d”,a[n]);//改為a[n++]第10頁7.指針傳了地址值,但在調用函數(shù)內(nèi)并未應用。Voidswap(int*a,int*b){int*c=a;//改為intc=*a;(注意)a=b;//改為*a=*b;b=c;//改為*b=c;}voidmain(){intx=1,y=2;swap1(&x,&y);//注意x、y前&不能丟printf(“%d,%d”,x,y);}假如程序運行輸出結果為:2,1x與y變量值才實現(xiàn)了交換,才沒有邏輯錯誤。第11頁文件包含及宏定義錯誤:1.忘記加頭文件,如曾經(jīng)考到用:isdigit(ch);要用頭文件#include”ctype.h”用到數(shù)學公式就要用頭文件#include”math.h”2.數(shù)組下標是0到9,下標最大是9,不過數(shù)組長度是10,所以假如用宏定義,注意:#defineN9

//應改為10

main(){inta[N];}第12頁1、忘記定義變量或忘記賦初值。(如intx;sum=0等)2、輸入輸出數(shù)據(jù)類型與所用格式說明符不一致。(int對應%d;float對應%f;char對應%c、%a)3、未注意int型數(shù)據(jù)數(shù)值范圍。(-32768~32767)4、在輸入語句scanf中忘記使用變量地址符?;蚨嗉拥刂贩?、輸入數(shù)據(jù)形式與要求不符。(scanf("%d%d",&a,&b);輸入數(shù)據(jù)應為ab.6、誤把“=”作為等于運算符?!埃剑健辈艦榈扔?、語句后面漏分號。語句末尾必須有分號。8、在不該加分號地方加了分號。如if,for,while語句中不可多加分號。9、對應該有花括號復合語句,忘記加花括號。10、括號不配對。多層括號或少了層。11、在用標識符時,忘記大寫字母和小寫字母區(qū)分。12、引用數(shù)組元素時誤用了圓括號。多維數(shù)組,第一維內(nèi)數(shù)字能夠省不寫。13、在定義數(shù)組時,將定義元素個數(shù)誤認為是可使用最大下標值。第13頁14、對二維或多維數(shù)組定義和引用方法不對。對二維數(shù)組和多維數(shù)在定義和引用時必須將每一維數(shù)據(jù)分別用方括號括起來。15、誤認為數(shù)組名代表數(shù)組中全部元素。數(shù)組名代表首地址,不能經(jīng)過數(shù)組名輸出幾個整數(shù)。16、混同字符數(shù)組與字符指針區(qū)分。17、在引用指針變量之前沒有對它賦予確定值。18、switch語句各分支中漏寫break語句。19、混同字符和字符串表示形式。字符常量形式是用單撇號括起來,用雙撇號是字符串。20、自加,自減運算符時出錯誤。21、所調用函數(shù)在調用語句之后才定義,而又在調用前未申明。22、對函數(shù)申明與函數(shù)定義不匹配23、在需要加頭文件時沒用#include命令去包含文件。如用到fab函數(shù)時沒有用#include<math.h>,在有strlen,strcpy,strcat,strcmp時用到#include<string.h>第14頁24、誤認為形參值改變會影響實參值。25、函數(shù)實參和形參類型不一致

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論