亚洲精品中文字幕无乱码_久久亚洲精品无码AV大片_最新国产免费Av网址_国产精品3级片

范文資料網(wǎng)>書稿范文>方法>解決方法>《C語(yǔ)言常見(jiàn)錯(cuò)誤分析及解決方法

C語(yǔ)言常見(jiàn)錯(cuò)誤分析及解決方法

時(shí)間:2022-11-19 03:28:21 解決方法 我要投稿
  • 相關(guān)推薦

C語(yǔ)言常見(jiàn)錯(cuò)誤分析及解決方法

C.C語(yǔ)言的應(yīng)用很廣泛,越來(lái)越多的程序員希望能夠?qū)W好C由于C語(yǔ)言的編譯系統(tǒng)對(duì)語(yǔ)法的檢查不如其他語(yǔ)言那么嚴(yán)格,因此C語(yǔ).下面將C語(yǔ)言中初學(xué)者最常見(jiàn)的錯(cuò)誤分析如下;

C語(yǔ)言常見(jiàn)錯(cuò)誤分析及解決方法

1 語(yǔ)句書寫錯(cuò)誤

由于大部分學(xué)生都是初次接觸程序設(shè)計(jì)語(yǔ)言,缺乏程序設(shè)計(jì)的實(shí)踐,對(duì)C語(yǔ)言語(yǔ)句又比較陌生,因此在編寫程序時(shí)經(jīng)常出現(xiàn)丟三落四、畫蛇添足的情況.語(yǔ)句書寫錯(cuò)誤主要有:

(1)語(yǔ)句結(jié)束未加分號(hào)或多加分號(hào).C語(yǔ)言規(guī)定,分號(hào)作為語(yǔ)句的終止符,是語(yǔ)句中不可缺少的一部分.初學(xué)者經(jīng)常忽略這個(gè)分號(hào),如:

main(); structdate

{intyear;

intmouth;

intday;}{inta=1;……

以上兩段程序在編譯時(shí)都會(huì)出錯(cuò).第一段程序在定義結(jié)構(gòu)體變量時(shí),沒(méi)有添加終止結(jié)構(gòu)定義的“;”,

第二段程序在函數(shù)定義中第一行的函數(shù)名后應(yīng)該沒(méi)有“;”.可見(jiàn)每一條語(yǔ)句的后邊都要加分號(hào),函數(shù)名后邊不加分號(hào).因此初學(xué)者要特別注意分號(hào)的使用.

(2){},[],(),′′,″″不配對(duì).解決這個(gè)問(wèn)題最好的方法是在寫這些符號(hào)的時(shí)候先成對(duì)書寫,然后再在中間添加語(yǔ)句.

(3)不該有空格的位置加了空格.例如,在關(guān)系運(yùn)算符<=,>=,==,!=中,兩個(gè)符號(hào)之間不允許有空格.

對(duì)于以上錯(cuò)誤,初學(xué)者要相當(dāng)小心,C語(yǔ)言程序雖然書寫格式自由,但這些細(xì)節(jié)不能忽視.那么解決語(yǔ)句類錯(cuò)誤的方法是增強(qiáng)感性認(rèn)識(shí),加深理解,在思維方式上形成固定的語(yǔ)句模式.初學(xué)者要多讀程序,閱讀程序是學(xué)習(xí)C語(yǔ)言入門最快、最簡(jiǎn)潔的方法.特別是對(duì)于一些沒(méi)有學(xué)過(guò)計(jì)算機(jī)語(yǔ)言的初學(xué)者,應(yīng)該先閱讀教材,學(xué)習(xí)它們的編程格式、編程風(fēng)格,多看一些優(yōu)秀代碼,拓展自己的思維能力,開闊眼界.2 定義、初始化、引用方式錯(cuò)誤

此類錯(cuò)誤涉及的是C語(yǔ)言的語(yǔ)法部分.語(yǔ)法是C語(yǔ)言的基礎(chǔ),只有掌握了語(yǔ)法,才能夠編寫程序.因此要求初學(xué)者熟悉C語(yǔ)言的每一個(gè)語(yǔ)法,并能根據(jù)這些語(yǔ)法來(lái)編程.那么C語(yǔ)言中常見(jiàn)的語(yǔ)法錯(cuò)誤主要有:

211 使用未經(jīng)過(guò)定義的變量

例如:

a,b;main()

{a=1;b=5;

收稿日期:2017—12—10

作者簡(jiǎn)介:朱一峰(1983-),男,遼寧朝陽(yáng)市人,助教,主要從事計(jì)算機(jī)教學(xué)研究.

1994-2017 China Academic Journal Electronic Publishing House. All rights reserved. http://emrowgh.com

朱一峰

}

a=1;B=5;

printf(″%d\n″,a+b);

} 41printf(″%d+%d=%d\n″,a,b,a+b); 又如:main() {inta,b;

以上兩段程序在編譯時(shí)都會(huì)出錯(cuò).C語(yǔ)言要求對(duì)程序中用到的每一個(gè)變量都必須預(yù)先定義,并且嚴(yán)格區(qū)分大、小寫英文字母.C語(yǔ)言程序習(xí)慣上使用小寫英文字母,大寫英文字母通常作為常量的宏定義和其他特殊的用途.

212 數(shù)組的定義與引用方式不正確

C語(yǔ)言規(guī)定,數(shù)組定義的形式采用“數(shù)組名+[常量表達(dá)式]式,不能出現(xiàn)變量或非整型值.(3(; (1)inta[j];

(2)intx=10,b[x];(4)213 3pt=&a;int3pt,a;

pt前面的“3”是一個(gè)指針聲明符,表示是一個(gè)整形指針變量,在第二條語(yǔ)句中pt前面的“3”是指針運(yùn)算符,也稱為“間接引用運(yùn)算符”,作用于指針變量,3pt表示指針變量pt所指向的存儲(chǔ)空間,相當(dāng)于變量a.另外,在使用指針前一定要對(duì)其進(jìn)行初始化,否則系統(tǒng)在執(zhí)行程序時(shí)會(huì)給出如下的信息:run-timeerrorR6001———nullpointerassigment或者引起更嚴(yán)重的錯(cuò)誤使系統(tǒng)崩潰.214 定義函數(shù)時(shí)出現(xiàn)的錯(cuò)誤

如:

);{printf(″insidesum\n″ (1)intfun(inta,intb)

{intresult;

result=a+b;

}

(2)intsum(void)intsum1(void));{printf(″insidesum1\n″}}

在C語(yǔ)言中,函數(shù)有返回值時(shí)要有返回值語(yǔ)句,第一段程序缺少“return;”語(yǔ)句;一個(gè)函數(shù)的定義不能從屬于另外一個(gè)函數(shù),因此函數(shù)不能嵌套定義,第二段程序應(yīng)將函數(shù)sum1定義在函數(shù)sum之外.

解決語(yǔ)法類問(wèn)題的最好辦法是課上認(rèn)真聽講、積極思考,課下多實(shí)踐,具體做好以下幾點(diǎn).(1)養(yǎng)成良好的編程習(xí)慣.C語(yǔ)言的學(xué)習(xí)過(guò)程就是反復(fù)實(shí)踐的過(guò)程,實(shí)踐環(huán)節(jié)是非常重要的.要編出好的程序,就要通過(guò)上機(jī)操作來(lái)驗(yàn)證程序的正確性.多上機(jī)、勤上機(jī)不但可以提高個(gè)人反映速度、鍛煉心理素質(zhì)、增強(qiáng)心理承受能力,而且通過(guò)執(zhí)行程序,初學(xué)者會(huì)發(fā)現(xiàn)程序中的錯(cuò)誤,從而了解所學(xué)知識(shí)的不足,同時(shí)也能學(xué)會(huì)根據(jù)編譯時(shí)系統(tǒng)提示的錯(cuò)誤信息來(lái)改正程序中的錯(cuò)誤.(2)學(xué)習(xí)C語(yǔ)言必須注意代碼運(yùn)行的細(xì)節(jié).教材上的例子代碼一定要自己動(dòng)手上機(jī)運(yùn)行一遍,編譯、執(zhí)行結(jié)果完全和教材上說(shuō)的一致才算是學(xué)完一個(gè)例題,如果與教材不符,就要仔細(xì)查找出錯(cuò)原因.除了教材上現(xiàn)有的例子外,自己還要盡可能地“設(shè)計(jì)”一些程序,以便驗(yàn)證自己的想法是否正確.(3)初學(xué)者不要忽視課后習(xí)題,應(yīng)該獨(dú)立完成所有課后習(xí)題,然后參照習(xí)題答案中給出的代碼,查看自己程序代碼的不足,再修改自己的程序.大多初學(xué)者不重視習(xí)題的做法是錯(cuò)誤的,因?yàn)樽髡咄ǔ?huì)在習(xí)題中給出一些重要的編程思想,而不是簡(jiǎn)單的檢驗(yàn)已學(xué)知識(shí).3 混淆錯(cuò)誤

《C語(yǔ)言常見(jiàn)錯(cuò)誤分析及解決方法》全文內(nèi)容當(dāng)前網(wǎng)頁(yè)未完全顯示,剩余內(nèi)容請(qǐng)?jiān)L問(wèn)下一頁(yè)查看。

C語(yǔ)言中常見(jiàn)的易混淆錯(cuò)誤主要有:

311 字符常量與字符串常量混淆

C語(yǔ)言規(guī)定字符常量是用單引號(hào)括起來(lái)的一個(gè)字符或用單引號(hào)括起來(lái)的以“\”字符開始的字符;字符串常量是用一對(duì)雙引號(hào)括起來(lái)的字符序列.它們除在形式上不同外,其存儲(chǔ)方式亦不同,字符常量在內(nèi)存中占一個(gè)字節(jié);字符串常量除了每個(gè)字符各占一個(gè)字節(jié)外,其字符串結(jié)束符“\0”也要占一個(gè)字節(jié).不能將一個(gè)字符串常量賦給一個(gè)字符變量,如:

(下轉(zhuǎn)100頁(yè))charc1,c2;c1=″a″;c2=″b″;

1994-2017 China Academic Journal Electronic Publishing House. All rights reserved. http://emrowgh.com

100遼寧師專學(xué)報(bào)2017年第4期員,給一些人造成的印象是該體系只與領(lǐng)導(dǎo)有關(guān),實(shí)際上整個(gè)管理體系的運(yùn)行必須是全體人員參與,每個(gè)人都要明確本部門的質(zhì)量目標(biāo)和自己的工作職責(zé),熟悉與自己有關(guān)的管理制度、考核辦法,了解與自己有關(guān)的程序文件,在實(shí)際工作中,真正按照程序去做,將其作為工作中必須遵守的規(guī)范.

412 持續(xù)改進(jìn)

運(yùn)行ISO9000質(zhì)量管理體系要強(qiáng)調(diào)持續(xù)改進(jìn),一層意思是所制定的文件要隨著實(shí)踐的檢驗(yàn),不斷修改完善,使之更加符合實(shí)際,起到程序化高效管理的效果;另一層意思是在體系運(yùn)行過(guò)程中,對(duì)工作中發(fā)現(xiàn)的新問(wèn)題要不斷改進(jìn),達(dá)到更好的目標(biāo).持續(xù)改進(jìn)體現(xiàn)了一種創(chuàng)新工作精神,不能把ISO9000質(zhì)量管理體系本身當(dāng)成是僵化的死框框,一定要正確理解ISO9000質(zhì)量管理體系的涵義.5 結(jié)語(yǔ)

通過(guò)遼寧機(jī)電職業(yè)技術(shù)學(xué)院的實(shí)踐,證明ISO9000不斷提高,.,如學(xué)校整體人事制度改革還沒(méi)有到位,,這些都有待于在今后不斷改進(jìn).

(審稿人 胡 坤,責(zé)任編輯 朱成杰)

(上接41頁(yè))

312 使用自增與自減運(yùn)算符時(shí)出現(xiàn)的混淆錯(cuò)誤

如:

main()

{

intx=2,y=3;printf(″i=%d,j=%d\n″,++x+y,++y+x);}程序的運(yùn)行結(jié)果為:i=7,j=6

對(duì)函數(shù)參數(shù)的求值順序是從右至左,所以printf函數(shù)中先求第2個(gè)表達(dá)式++y+x的值,y自增1后其值變?yōu)?,然后加x結(jié)果為6;再求第1個(gè)表達(dá)式的值,x自增1后其值變?yōu)?,然后加y結(jié)果為7.313 誤認(rèn)為形參值的變化會(huì)影響實(shí)參值的變化

如:

voidmain() intsum(inta,intb)

{a=a+b;

b=a+b;

returna;

}{inta=1,b=3,c;c=sum(a,b);printf(″%d,%d,%d\n″,a,b,c);}

輸出結(jié)果為:1,3,4.C語(yǔ)言的“值傳遞”既可以在函數(shù)之間傳遞“變量的值”,也可以在函數(shù)之間傳遞“變量的地址”.而“傳值”只能實(shí)現(xiàn)外部數(shù)據(jù)向函數(shù)內(nèi)部數(shù)據(jù)的傳遞,而不能實(shí)現(xiàn)函數(shù)內(nèi)部數(shù)據(jù)的傳出.因此,a、b改變只改變子函數(shù)中的a、b的值,輸出時(shí)主函數(shù)中的a、b值不發(fā)生變化.314 break語(yǔ)句與continue語(yǔ)句處理過(guò)程混淆

break語(yǔ)句作用是終止循環(huán)或switch結(jié)構(gòu).在循環(huán)體內(nèi),使用break語(yǔ)句可退出循環(huán)體(不等循環(huán)的正常結(jié)束)而執(zhí)行該循環(huán)語(yǔ)句后面的語(yǔ)句,相當(dāng)于程序多了一個(gè)出口.

continue語(yǔ)句作用是結(jié)束本次循環(huán)(不是終止整個(gè)循環(huán)),跳過(guò)循環(huán)體中continue語(yǔ)句后面的語(yǔ)句,返回循環(huán)語(yǔ)句的首部,檢查是否滿足循環(huán)條件以決定是否開始下一次循環(huán).

解決混淆類問(wèn)題的辦法其實(shí)很簡(jiǎn)單,主要有:(1)將易混淆錯(cuò)誤根據(jù)教材章節(jié)進(jìn)行合理分類,找出兩者的區(qū)別,記住這些區(qū)別就可以了.有些區(qū)別在理解后會(huì)更容易記憶.(2)初學(xué)者可以嘗試用抄教材源代碼的辦法來(lái)解決易混淆問(wèn)題,因?yàn)橛幸恍┐a需要通過(guò)多次實(shí)踐才能熟練掌握,這樣不僅能夠解決問(wèn)題,還能積累經(jīng)驗(yàn),提高自己的編程能力.一般說(shuō)來(lái),學(xué)完整本教材,應(yīng)該完成數(shù)千行乃至上萬(wàn)行的代碼,不管是原封不動(dòng)照抄教材上的,還是心血來(lái)潮隨意編寫的,都將成為今后繼續(xù)學(xué)習(xí)的一筆寶貴財(cái)富.

以上例舉出一些初學(xué)者在學(xué)習(xí)C語(yǔ)言時(shí)最容易犯的錯(cuò)誤,對(duì)錯(cuò)誤產(chǎn)生的原因進(jìn)行分類分析,并提出相應(yīng)的解決辦法.隨著學(xué)習(xí)的不斷深入,只有通過(guò)大量的上機(jī)實(shí)踐,積累更多的程序設(shè)計(jì)經(jīng)驗(yàn),才能熟練掌握和運(yùn)用C語(yǔ)言.

C語(yǔ)言常見(jiàn)錯(cuò)誤及解決方法2017-03-22 21:04 | #2樓

既然我前邊總結(jié)了那么多關(guān)于c語(yǔ)言常見(jiàn)錯(cuò)誤那么現(xiàn)在給大家分享一下c語(yǔ)言常見(jiàn)錯(cuò)誤及解決方法,關(guān)于c語(yǔ)言常見(jiàn)錯(cuò)誤及解決方法是針對(duì)大家的通病說(shuō)提出的解決方法,大家可以參考一下。

《C語(yǔ)言常見(jiàn)錯(cuò)誤分析及解決方法》全文內(nèi)容當(dāng)前網(wǎng)頁(yè)未完全顯示,剩余內(nèi)容請(qǐng)?jiān)L問(wèn)下一頁(yè)查看。

c語(yǔ)言常見(jiàn)錯(cuò)誤及解決方法一、基礎(chǔ)知識(shí)和數(shù)據(jù)類型、表達(dá)式、掌握關(guān)鍵詞的具體用法及適用范圍對(duì)象。

1、 拼寫錯(cuò)誤,尤其是include,main,void,float等詞。c語(yǔ)言的32個(gè)關(guān)鍵字與基本含義如下:

double :聲明雙精度變量或函數(shù)

int: 聲明整型變量或函數(shù)

char :聲明字符型變量或函數(shù)

float:聲明浮點(diǎn)型變量或函數(shù)

void :聲明函數(shù)無(wú)返回值或無(wú)參數(shù),聲明無(wú)類型指針(基本上就這三個(gè)作用)

auto :聲明自動(dòng)變量 一般不使用

struct:聲明結(jié)構(gòu)體變量或函數(shù)

break:跳出當(dāng)前循環(huán)

else :條件語(yǔ)句否定分支(與 if 連用)

long:聲明長(zhǎng)整型變量或函數(shù)    

switch :用于開關(guān)語(yǔ)句 

case:開關(guān)語(yǔ)句分支  

enum:聲明枚舉類型   

register:聲明積存器變量 

typedef:用以給數(shù)據(jù)類型取別名(當(dāng)然還有其他作用)

extern:聲明變量是在其他文件正聲明(也可以看做是引用變量)  

return:子程序返回語(yǔ)句(可以帶參數(shù),也看不帶參數(shù))  

un-io-n:聲明聯(lián)合數(shù)據(jù)類型  

const :聲明只讀變量  

short :聲明短整型變量或函數(shù)

unsigned:聲明無(wú)符號(hào)類型變量或函數(shù)

continue:結(jié)束當(dāng)前循環(huán),開始下一輪循環(huán) 

for:一種循環(huán)語(yǔ)句(可意會(huì)不可言傳)      

signed:生命有符號(hào)類型變量或函數(shù)  

default:開關(guān)語(yǔ)句中的“其他”分支 

goto:無(wú)條件跳轉(zhuǎn)語(yǔ)句    

sizeof:計(jì)算數(shù)據(jù)類型長(zhǎng)度  

volatile:說(shuō)明變量在程序執(zhí)行中可被隱含地改變 

do :循環(huán)語(yǔ)句的循環(huán)體

while :循環(huán)語(yǔ)句的循環(huán)條件

static :聲明靜態(tài)變量

if:條件語(yǔ)句

2、 {},[],(),‘’,“”不配對(duì)。解決這個(gè)問(wèn)題最好的方法就是每當(dāng)寫這些符號(hào)的時(shí)候就先寫成一對(duì),然后再在中間加內(nèi)容。

3、 忘記在語(yǔ)句的末尾加分號(hào),或在預(yù)處理命令后多加分號(hào)。記住:每一個(gè)語(yǔ)句的后邊都要加分號(hào),而預(yù)處理命令并不是語(yǔ)句,所以不加分號(hào),他們必須每行一條,不能把多個(gè)命令寫在一行。

4、 混淆/和\;注釋對(duì)應(yīng)的符號(hào)是,而轉(zhuǎn)義字符是以\開頭,除號(hào)是/。

5、 printf()和scanf()的參數(shù)設(shè)置有誤,主要表現(xiàn)在以下幾方面:

l        類型不匹配的問(wèn)題。(例如:有floata=3.5,但輸出的時(shí)候printf(“a=%d”,a);則屏幕上會(huì)顯示出a=0.00000或者提示其它運(yùn)行錯(cuò)誤)。基本原則是:float對(duì)應(yīng)%f,int對(duì)應(yīng)%d, char對(duì)應(yīng)%c。

l        個(gè)數(shù)不匹配。無(wú)論是哪個(gè)函數(shù),都可以有n個(gè)參數(shù),第一個(gè)永遠(yuǎn)是“”括起來(lái)的內(nèi)容,表示輸出格式。剩下的n-1個(gè)是輸出的變量或者輸入的變量的地址。需要注意的是,如果后邊有n-1個(gè)參數(shù),那么前邊一定對(duì)應(yīng)n-1個(gè)%f一類的格式說(shuō)明符。

l        scanf()中變量前忘了加&。記。簊canf()中變量前要有&(但后邊學(xué)到的字符數(shù)組名和指針前不用加)

6、 定義標(biāo)識(shí)符的時(shí)候經(jīng)常出現(xiàn)使用非法字符的情況,例如:標(biāo)識(shí)符中不能用空格,也就是說(shuō)不能有這樣的定義:int radium ofcircle;一般情況下可用下劃線將三個(gè)單詞連接在一起。

7、 在使用變量前未定義,或未初始化。例如:若下邊的sum未定義,則在編譯時(shí)會(huì)提示相應(yīng)的錯(cuò)誤信息,而若未初始化為0,則求和的結(jié)果一定是錯(cuò)誤的。

void main()

{ int i,a[10], sum=0;  

for(i=0;i<10;i++) sum+=a[i];

printf(“%d”,sum);

}

8、  符合常量定義錯(cuò)誤  。例如:#definepi=3.14159,這里的=應(yīng)該換成空格。

9、 計(jì)算錯(cuò)誤。主要注意:++,――和其它運(yùn)算符一起運(yùn)算時(shí),除根據(jù)優(yōu)先級(jí)進(jìn)行計(jì)算時(shí),還要考慮先后位置的特殊含義;數(shù)據(jù)類型不一致時(shí)發(fā)生的自動(dòng)轉(zhuǎn)換也會(huì)導(dǎo)致計(jì)算的誤差;還要注意求模結(jié)果的符號(hào)與被除數(shù)相同;某些特殊情況下 使用懶惰求值法。

10、不能除以0,要做合法性檢查;

11、類型溢出。記住每種數(shù)據(jù)類型的取值范圍,確保數(shù)據(jù)在所定義類型范圍之內(nèi);

12、數(shù)學(xué)表達(dá)式的格式有誤。常見(jiàn)的有:(1)數(shù)學(xué)與c語(yǔ)言運(yùn)算表達(dá)式的混淆(例如:=表示賦值,而==才表示我們數(shù)學(xué)中的相等關(guān)系)。(2)、忽略了運(yùn)算的優(yōu)先級(jí)。解決這個(gè)問(wèn)題的最好方法就是寫數(shù)學(xué)表達(dá)式時(shí)不要從左到右,而是按優(yōu)先級(jí)的順序?qū),寫完?yōu)先級(jí)高的一個(gè)表達(dá)式后加上()再寫下一級(jí)的表達(dá)式,例如:計(jì)算梯形的面積時(shí),要s=((a+b)*h)/2,不要1/2*a+b*h.(3)忽略了計(jì)算和賦值時(shí)的自動(dòng)轉(zhuǎn)換。例如:floathalf=1/2;這樣,因?yàn)椋接疫吺钦麛?shù)相除的結(jié)果為整數(shù)0,不會(huì)得到0.5存入half,進(jìn)而會(huì)影響下邊的計(jì)算結(jié)果。要想不在這兒絆跟頭,當(dāng)計(jì)算不同類型的數(shù)據(jù)時(shí),一定注意會(huì)不會(huì)出現(xiàn)引起錯(cuò)誤的自動(dòng)轉(zhuǎn)換,建議最好加上強(qiáng)制轉(zhuǎn)換。(4)賦值號(hào)左邊不是變量,例如:若有#definepi3.14,程序中又出現(xiàn)pi=3.14159。又例如:f(n)=f(n-1)*n(這是典型的數(shù)學(xué)語(yǔ)言,在c語(yǔ)言中右邊的乘積不能正確存儲(chǔ),而左邊又是一個(gè)函數(shù)調(diào)用)。

13、使用庫(kù)函數(shù)前,尤其是數(shù)學(xué)函數(shù)忘了加#include<?.h>。

c語(yǔ)言常見(jiàn)錯(cuò)誤及解決方法二流程控制,了解控制流程的來(lái)龍去脈,掌握起運(yùn)行規(guī)律。

1、 丟掉語(yǔ)句結(jié)束標(biāo)記“;”,尤其是for語(yǔ)句中表達(dá)式后或do-while語(yǔ)句后的分號(hào),或在預(yù)處理命令后邊、while()后、for()后加“;”;

2、 if語(yǔ)句或循環(huán)語(yǔ)句中邏輯表達(dá)式或關(guān)系表達(dá)式書寫錯(cuò)誤。一定要注意c語(yǔ)言的條件與數(shù)學(xué)表達(dá)式的區(qū)別(例如我們數(shù)學(xué)中經(jīng)常寫到的0≤x≤9,在c語(yǔ)言中應(yīng)該寫成x>=0&&x<=9)。

3、 if-else嵌套時(shí)不配對(duì)。最好在寫每個(gè)條件時(shí)要用兩個(gè){}分別將兩個(gè)分支先括起來(lái),再添加其中的語(yǔ)句,以保證其配對(duì)不易錯(cuò)。

4、 switch()語(yǔ)句中的格式不正確。()中的表達(dá)式結(jié)果一定是一些明確的值,不能是區(qū)間;表達(dá)式的所有可能結(jié)果要列在case后邊,case與常量之間有一空格,不要丟掉必要的break;

5、 隨意修改循環(huán)控制變量i的值,導(dǎo)致循環(huán)次數(shù)的改變,尤其是當(dāng)循環(huán)有嵌套時(shí)。在循環(huán)體中,不要將循環(huán)控制變量進(jìn)行另外的改變。

6、 分不清什么情況下用雙重循環(huán),什么情況下用兩個(gè)控制變量寫成一重循環(huán)。當(dāng)i不變,j又循環(huán)一遍的時(shí)候用雙重循環(huán)。當(dāng)i,j同時(shí)變化的時(shí)候用一重循環(huán),此時(shí),循環(huán)控制變量有兩個(gè),但條件只寫一個(gè)就可以,因?yàn)榱硪粋(gè)總是進(jìn)行相應(yīng)的變化的。

7、 忽略循環(huán)體與循環(huán)控制變量的關(guān)系。其實(shí),很多情況下,循環(huán)控制變量都在循環(huán)體中起到非常重要的作用。應(yīng)該利用上這種關(guān)系。

三、數(shù)組與指針

1、 字符串的輸入有錯(cuò)誤:主要表現(xiàn)在使用scanf()或gets()時(shí)加了&,或輸入字符串時(shí)用循環(huán),(這樣的話,字符個(gè)數(shù)無(wú)論多長(zhǎng),都不會(huì)為自動(dòng)加\0,將來(lái)引用的時(shí)候也就不能以字符串的形式引用。)

2、 對(duì)字符串的處理中,循環(huán)條件仍然寫成i<n。由于字符串是不定長(zhǎng)的,所以循環(huán)條件一般為str[i]!=’\0’或i<strlen(str)

3、 而輸入所對(duì)應(yīng)的變量是指針時(shí)(常見(jiàn)的有:輸入的變量是字符數(shù)組名或指向字符串的指針)不能加&。

4、 指針定義后未賦值就引用。如果在定義時(shí)不知道賦什么值,可以用p=null賦初值,以避免引起的災(zāi)難性錯(cuò)誤。

5、 分不清p和*p。前者是指針,即地址,后者表示指針?biāo)g接引用的數(shù)據(jù),但如果是二級(jí)指針或多級(jí)指針,取*以后得到的仍然可能是地址。

四、函數(shù)

1、 函數(shù)定義的時(shí)候,函數(shù)頭部加分號(hào),而函數(shù)聲明的地方忘了加分號(hào)

2、 函數(shù)實(shí)參格式不對(duì),主要表現(xiàn)在:給出實(shí)參時(shí),多給出數(shù)組類型,或者,形參是數(shù)組inta[];的時(shí)候,給出的a[]或a[i].

3、 遞歸時(shí)忘了設(shè)置邊界條件,這樣易造成死循環(huán)調(diào)用。

4、使用函數(shù)之前未聲明(包括c庫(kù)函數(shù)的聲明)。建議大家,將所定義的一切函數(shù)都在程序開始的預(yù)處理命令后加上函數(shù)原型的聲明,這樣做不僅可以避免錯(cuò)誤,而且整個(gè)程序的結(jié)構(gòu)看起來(lái)更清楚。

五、結(jié)構(gòu)體共用體

1、 結(jié)構(gòu)體類型定義有誤,主要表現(xiàn)在:結(jié)構(gòu)體類型里還有嵌套的時(shí)候,忘記了成員名稱。(例如:下邊的例子中,有些同學(xué)經(jīng)常忽略了birthday)

2、 結(jié)構(gòu)體類型名和結(jié)構(gòu)體變量名混淆。例如:

struct stu

{….

struct data

{int year,month,day;

}birthday

};

struct stu a; struct stu是類型名稱,而且不分配空間,且不能直接引用。只有定義了結(jié)構(gòu)體類型structstu的變量a以后,才為a分配相應(yīng)的內(nèi)存空間,引用時(shí)也要是a.???

3、 結(jié)構(gòu)體變量的成員引用不正確,尤其是當(dāng)結(jié)構(gòu)體類型中有嵌套定義的時(shí)候。一定要一級(jí)一級(jí)的引用。例如:上邊的例子:如果引用其中的年的話,一定是a.birthday.year. 不能直接a.year.

4、 對(duì)結(jié)構(gòu)體變量進(jìn)行輸入輸出的時(shí)候,整體輸入或整體輸出。除作為函數(shù)參數(shù)外,不能對(duì)結(jié)構(gòu)體變量整體操作,只能一個(gè)成員一個(gè)成員地輸入、輸出。

5、 不理解共用體的“共占內(nèi)存”。對(duì)共用體中的成員變量,一定要靠一個(gè)標(biāo)記區(qū)別它們,并分別按不同類型引用它們。切記:共用體變量不能做函數(shù)形參。

六、文件

1、 使用之前沒(méi)有打開文件,使用之后沒(méi)有關(guān)閉文件。

2、 相關(guān)函數(shù)的調(diào)用格式有誤。請(qǐng)一定注意實(shí)參的類型、順序、個(gè)數(shù)上與函數(shù)原型(或函數(shù)聲明)的一致。

【C語(yǔ)言常見(jiàn)錯(cuò)誤分析及解決方法】相關(guān)文章:

電腦硬盤的常見(jiàn)錯(cuò)誤提示及解決方法09-22

Matlab常見(jiàn)語(yǔ)法錯(cuò)誤及解決方法轉(zhuǎn)02-26

SQLServer連接中常見(jiàn)錯(cuò)誤解決方法12-05

常見(jiàn)的SQLServer連接失敗錯(cuò)誤以及解決方法09-22

SQL數(shù)據(jù)庫(kù)連接常見(jiàn)錯(cuò)誤的解決方法09-22

鍋爐安全閥的常見(jiàn)故障分析和解決方法09-22

錯(cuò)誤711的解決方法09-22

explorerexe錯(cuò)誤的解決方法09-22

上海三菱gps電梯常見(jiàn)電梯故障分析及解決方法05-25

loadrunner錯(cuò)誤及解決方法總結(jié)09-22