版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、1.調(diào)試C程序時常見的錯誤類型分析 一般情況下,錯誤主要分為兩大類:一、語法錯誤。對于這種錯誤,用編譯器很容易解決。所以,改錯題的第一步是先編譯,解決這類語法錯誤。下面總結(jié)了二級C語言上機(jī)改錯題中常見的語法錯誤:(1)丟失分號,或分號誤寫成逗號。(2)關(guān)鍵字拼寫錯誤,如本來小寫變成大寫。(3)語句格式錯誤,例如for語句中多寫或者少寫分號。(4)表達(dá)式聲明錯誤,例如:少了()(5)函數(shù)類型說明錯誤。與main()函數(shù)中不一致。(6)函數(shù)形參類型聲明錯誤。例如:少*等。(7)運(yùn)算符書寫錯誤,例如:/寫成了。二、邏輯錯誤,或者叫語義錯誤,這和實現(xiàn)程序功能緊密相關(guān),一般不能用編譯器發(fā)現(xiàn)。對于邏輯錯誤
2、可以按這樣的步驟進(jìn)行查找。(1)先讀試題,看清題目的功能要求。(2)通讀程序,看懂程序中算法的實現(xiàn)方法。(3)細(xì)看程序,發(fā)現(xiàn)常見錯誤點。2.改錯題的改錯方式總結(jié),當(dāng)然這些總結(jié)只能對大部分改錯行有效。 1、若錯誤行是函數(shù)首部,可分為以下幾種情況: A、該行最后若有分號則刪除,中間若有分號則改成逗號 B、形參類型不一致的問題,特別是指針類型,若后面用到某形參時有指針運(yùn)算則該形參必為指針類型;若形參是二維數(shù)組或指向m個元素的指針變量,則第二維的長度必須與main中對應(yīng)數(shù)組的第二維長度相同 C、函數(shù)類型不一致的問題,若函數(shù)中沒有return語句則函數(shù)類型為void,若有return語句則函數(shù)的類型必須
3、與return后變量的類型一致。 2、若錯誤行是if或while語句,則首先看有沒有用小括號將整個表達(dá)式括起,若沒有則加上小括號。 3、若錯誤行中有if、while、for則要特別注意條件表達(dá)式的錯誤問題: A、指針變量的應(yīng)用,若表達(dá)式中有指針變量且沒有指針運(yùn)算符,則加上指針運(yùn)算符 B、若條件表達(dá)式中只有一個等于號,則改成兩個等于號,若為其它比較運(yùn)算符則一般是進(jìn)行逆轉(zhuǎn)或加一個等于號 C、for中要用分號分隔表達(dá)式,而不是用逗號 4、語法錯誤 A、語句缺少分號,若錯誤行中有語句沒有用分號結(jié)束,則加上分號。 B、大小寫不對,若錯誤行中有大寫字母則一般都改成小寫字母。 5、指針變量的運(yùn)用,若錯誤行中
4、有指針變量,并且該變量名前沒有指針運(yùn)算符則一般都是加上指針運(yùn)算符 6、若錯誤行為return語句,則首先看是否是缺少分號若是則加上分號即可;否則就是return后的變量或表達(dá)式錯誤(此時可通過看題意,來分析該返回哪一變量或表達(dá)式) 7、若錯誤行中見到整型1除以某個表達(dá)式時,一概改成1.0。但若是整型變量或表達(dá)式則只能用強(qiáng)制轉(zhuǎn)換 8、復(fù)合運(yùn)算符寫錯 9、字符串結(jié)束符寫錯,若有字符串結(jié)束符則要特別注意有沒有寫錯,但第11題例外,因為該題是要將數(shù)字字符轉(zhuǎn)換成對應(yīng)的數(shù)字。 10、若錯誤行是定義語句,則首先看類型是否符合;再看所賦初值是否正確;若以上均不是,則看是否少定義了某個變量或少了花括號。 11、
5、表達(dá)式錯誤(占的份量最多,并且沒有統(tǒng)一的改法,我們只能通過題目要求來分析并修改) 12、若錯誤行中有一條橫線,則必須將橫線刪除再填空。填空題中亦是如此。 例題/*1.下面給定的程序的功能是:讀入一個整數(shù)k(2=k=10000),打印他所有的質(zhì)因子(即所有為素數(shù)的的質(zhì)因子)。例如,若輸入整數(shù)2310,則應(yīng)輸出:2、3、5、7、11。請改正程序中的錯誤,使程序得到正確的結(jié)果。注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:1 #include 2 #include 3 IsPrime(int n);4 5 int i,m;6 m=1;7 for(i=2;in;i+)8
6、if!(n%i)9 10 m=0;break;11 12 return(m);13 14 main()15 16 int j,k;17 clrscr();18 printf(nPlease enter an integer nunber 2 and 10000:);scanf(%d,&k);19 printf(nnThe Prime factor(s) of %d is (are):,k);20 for(j=2;j=k;j+)21 if(!(k%j)&(IsPrime(j)22 printf(n %4d,j);23 printf(n);24 試題解答及分析錯誤一:第三行的末尾不需要分號,這并不
7、是一個語句的結(jié)束,這是一個函數(shù)的頭部;錯誤二:第八行應(yīng)該該為if(!(n%i),這是由if語句的執(zhí)行過程決定的,if語句先判斷緊跟著它的()里面的條件的真假,如果真執(zhí)行下面的語句,如果是多條語句可以用括起來如果嫁就跳過直接執(zhí)行下面的語句但這個if語句中把括號忘了。自然出錯;程序整體分析我們的題目要求判斷求出一個整數(shù)的所有質(zhì)因子我們可以求出它所有的因子,再看這些因子中哪些是素數(shù)不就行了,程序先通過scanf(%d,%k);從鍵盤讀入一個整數(shù),接著我們開始循環(huán),對于2到k之間的每一個j;用!(k%j)判斷j是不是k的因子,如果是的話,k%j=0,則非0就是真的,再用一個判斷它是不是素數(shù)的函數(shù)IsP
8、rime(int n)來判斷它是不是素數(shù),如果是的話就是我們所求的。IsPrime()函數(shù)分析,函數(shù)語句的意思是,只要2到n中有任意一個數(shù)有能被n整除的話,就返回0(假),否則返回1(真),我們看一下循環(huán)體if(!(n%i))這個語句的分析上面有,只要n能把i整除的話m=0,break語句會使程序立刻跳出循環(huán)體,執(zhí)行return (m);語句。*/#include #include IsPrime(int n)int i,m; m=1; for(i=2;in;i+) if(!(n%i) m=0;break; return(m); main() int j,k; clrscr(); printf
9、(nPlease enter an integer nunber 2 and 10000:);scanf(%d,&k); printf(nnThe Prime factor(s) of %d is (are):,k); for(j=2;j=0; i-) /參考答案:for (i=sl, j=0; i=0; i-=2)/ t2*j = si;t2*j +1 = si;j+;/*found*/t2*sl = 0; /參考答案:t2*j = 0;/main() char s100, t100;clrscr();printf(nPlease enter string s:); scanf(%s, s)
10、;fun(s, t);printf(The result is: %sn, t);第6題給定程序MODI1.C中函數(shù) fun 的功能是:將在字符串s中下標(biāo)為奇數(shù)位置上的字符,緊隨其后重復(fù)出現(xiàn)一次,放在一個新串t中,t中字符按原字符串中字符出現(xiàn)的逆序排列。(注意0為偶數(shù))例如:當(dāng)s中的字符串為:ABCDEFG時,則t中的字符串應(yīng)為:FFDDBB。請改正函數(shù)fun中的錯誤,使它能得出正確的結(jié)果。注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!Modi1.c#include#include#includevoid fun (char *s, char *t) int i, j, s
11、l;sl = strlen(s);/*found*/if(sl%2) Sl-=2; else Sl-; /參考答案:if(sl%2) sl-=2; else sl-;/for (i=sl, j=0; i=0; i-=2) t2*j = si;t2*j +1 = si;j+;/*found*/t2*sl = 0; /參考答案:t2*j = 0;/main() char s100, t100;clrscr();printf(nPlease enter string s:); scanf(%s, s);fun(s, t);printf(The result is: %sn, t);第7題給定程序MO
12、DI1.C中函數(shù) fun 的功能是:把在字符串s中出現(xiàn)的每個字符,緊隨其后重復(fù)出現(xiàn)一次,形成一個新串放在t中,且在t中把原相鄰字符的位置進(jìn)行了交換。例如:當(dāng)s中的字符串為:ABCDE時,則t中的字符串應(yīng)為:BBAADDCCEE。請改正函數(shù)fun中的錯誤,使它能得出正確的結(jié)果。注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!Modi1.c#include#include#includevoid fun (char *s, char *t)/*found*/int i, j; /參考答案:int i,j,sl;/sl = strlen(s);for (i=0, j=0; i if
13、 (i+1 tl) /參考答案:if (j=tl)*u+ = si;*u = 0;main() char s100, t100, u100;clrscr();printf(nPlease enter string s:); scanf(%s, s);printf(nPlease enter string t:); scanf(%s, t);fun(s, t, u);printf(the result is: %sn, u);第9題給定程序MODI1.C中函數(shù) fun 的功能是:將未在字符串s中出現(xiàn)而在字符串t中出現(xiàn)的字符形成一個新的字符串放在u中,u中字符按原字符串中字符順序排列,不去掉重復(fù)字
14、符。例如:當(dāng)s = ABCDE,t = BDFGG時,u中的字符串為FGG。請改正函數(shù)fun中的錯誤,使它能得出正確的結(jié)果。注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!Modi1.c#include#include#includevoid fun (char *s, char *t, char *u) int i, j, sl, tl;sl = strlen(s); tl = strlen(t);/*found*/for (i=0; i/*found*/ for (j=0; jif (ti = sj) break;if (j=sl) *u+ = ti;/*found*/u
15、 = 0; /參考答案 *u = 0;main() char s100, t100, u100;clrscr();printf(nPlease enter string s:); scanf(%s, s);printf(nPlease enter string t:); scanf(%s, t);fun(s, t, u);printf(The result is: %sn, u);第10題給定程序MODI1.C中函數(shù) fun 的功能是:將既在字符串s中出現(xiàn)又在字符串t中出現(xiàn)的字符構(gòu)成一個新的字符串放在u中,u中字符按原字符串中字符順序排列,不去掉重復(fù)字符。例如:當(dāng)s=ABBCDE,t=BDFG時,u中的字符串為:BBD。請改正函數(shù)fun中的錯誤,使它能得出正確的結(jié)果。注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!Modi1.c#include#include#includevoid fun (char *s, char *t, char *u) int i, j, sl, tl;sl = strlen(s); tl = strlen(t);for (i=0; i for (j=0; jif (si = tj
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025版市政工程挖掘機(jī)租賃及施工配合合同協(xié)議書3篇
- 2025版智能交通管理系統(tǒng)軟件開發(fā)與運(yùn)營服務(wù)合同3篇
- 2025版城市綠地養(yǎng)護(hù)勞務(wù)分包合同模板4篇
- 企業(yè)人力資源管理概念
- 二零二五版知識產(chǎn)權(quán)保密與競業(yè)限制服務(wù)合同3篇
- 塑料薄膜光學(xué)性能研究考核試卷
- 2025版事業(yè)單位教師崗位聘用合同續(xù)簽協(xié)議書3篇
- 2025年度碼頭轉(zhuǎn)租及船舶??糠?wù)外包合同4篇
- 04毛首鞭形線蟲簡稱鞭蟲47課件講解
- 2025年食品行業(yè)食品安全風(fēng)險評估合同范本3篇
- 垃圾處理廠工程施工組織設(shè)計
- 天皰瘡患者護(hù)理
- 2025年蛇年新年金蛇賀歲金蛇狂舞春添彩玉樹臨風(fēng)福滿門模板
- 《建筑制圖及陰影透視(第2版)》課件 4-直線的投影
- 新生物醫(yī)藥產(chǎn)業(yè)中的人工智能藥物設(shè)計研究與應(yīng)用
- 防打架毆斗安全教育課件
- 損失補(bǔ)償申請書范文
- 壓力與浮力的原理解析
- 鐵路損傷圖譜PDF
- 裝修家庭風(fēng)水學(xué)入門基礎(chǔ)
- 移動商務(wù)內(nèi)容運(yùn)營(吳洪貴)任務(wù)二 社群的種類與維護(hù)
評論
0/150
提交評論