如何讓C語言初學者少走彎路
眾所周知,C語言具有簡潔緊湊,靈活方便,運算符豐富,數據類型豐富,表達方式靈活實用等特點,所以C語言程序設計更主動、靈活。它語法限制不太嚴格,程序設計自由度大,如對整型量與字元型數據及邏輯型數據可以通用等。但是事物都有兩面性,正是因為這個靈活給程序的調試帶來了許多不便,尤其對初學C語言的人來說,經常會出一些連自己都不知道錯在哪裡的錯誤。看著有錯的程序,不知該如何下手,從哪裡改起。這裡羅列了一些C編程時常犯的錯誤,方便初學的小夥伴可以有個參考,做到心中有數,不至於毫無頭緒。
零基礎小白到大神之路,歡迎加裙 四八七八七五零零四,群里有免費C++課程,還有大量乾貨哦
1.書寫標識符時,忽略了大小寫字母的區別。
main()
{
int a=5;
printf("%d",A);
}
編譯程序把a和A認為是兩個不同的變數名,而顯示出錯信息。C認為大寫字母和小寫字母是兩個不同的字元。習慣上,符號常量名用大寫,變數名用小寫表示,以增加可讀性。
2.忽略了變數的類型,進行了不合法的運算。
main()
{
float a,b;
printf("%d",a%b);
}
%是求余運算,得到a/b的整餘數。整型變數a和b可以進行求余運算,而實型變數則不允許進行「求余」運算。
3.將字元常量與字元串常量混淆。
char c;
c="a";
在這裡就混淆了字元常量與字元串常量,字元常量是由一對單引號括起來的單個字元,字元串常量是一對雙引號括起來的字元序列。C規定以「」作字元串結束標誌,它是由系統自動加上的,所以字元串「a」實際上包含兩個字元:『a"和『",而把它賦給一個字元變數是不行的。
4.忽略了「=」與「==」的區別。
在許多高級語言中,用「=」符號作為關係運算符「等於」。如在BASIC程序中可以寫
if (a=3) then …
但C語言中,「=」是賦值運算符,「==」是關係運算符。如:
if (a==3) a=b;
前者是進行比較,a是否和3相等,後者表示如果a和3相等,把b值賦給a。由於習慣問題,初學者往往會犯這樣的錯誤。
5.忘記加分號。
分號是C語句中不可缺少的一部分,語句末尾必須有分號。
a=1
b=2
編譯時,編譯程序在「a=1」後面沒發現分號,就把下一行「b=2」也作為上一行語句的一部分,這就會出現語法錯誤。改錯時,有時在被指出有錯的一行中未發現錯誤,就需要看一下上一行是否漏掉了分號。
{ z=x+y;
t=z/100;
printf("%f",t);
}
對於複合語句來說,最後一個語句中最後的分號不能忽略不寫(這是和PASCAL不同的)。
6.多加分號。
對於一個複合語句,如:
{ z=x+y;
t=z/100;
printf("%f",t);
};
複合語句的花括弧後不應再加分號,否則將會畫蛇添足。
又如:
if (a%3==0);
I++;
本是如果3整除a,則I加1。但由於if (a%3==0)後多加了分號,則if語句到此結束,程序將執行I++語句,不論3是否整除a,I都將自動加1。
再如:
for (I=0;I
本意是先後輸入5個數,每輸入一個數後再將它輸出。由於for()後多加了一個分號,使循環體變為空語句,此時只能輸入一個數並輸出它。
7.輸入變數時忘記加地址運算符「&」。
int a,b;
scanf("%d%d",a,b);
這是不合法的。Scanf函數的作用是:按照a、b在內存的地址將a、b的值存進去。「&a」指a在內存中的地址。
8.輸入數據的方式與要求不符。
scanf("%d%d",&a,&b);
輸入時,不能用逗號作兩個數據間的分隔符,如下面輸入不合法:
3,4
學習C語言始終要記住「曙光在前頭」和「千金難買回頭看」,「千金難買回頭看」是學習知識的重要方法,就是說,學習後面的知識,不要忘了回頭弄清遺留下的問題和加深理解前面的知識,這是初學的小夥伴最不易做到的,然而卻又是最重要的。學習C語言就是要經過幾個反覆,才能前後貫穿,積累應該掌握的C知識。同時不要忘記上機實踐,希望熱愛編程的小夥伴可以早日成為大神~
※氣質深藍,夏日美家清爽明朗 室內設計篇
※Web前端面試題、面試技巧有哪些?
※Web前端工程師工作前 VS 工作後
※米蘭時尚和室內設計,碰撞出什麼花火?
※C語言程序員必須收藏的資源大全
TAG:IT技術java交流 |
※如果你想學好語言
※零基礎學c語言如何開始
※如何能讓寶寶能言善道 同時學三種語言沒問題
※如何選擇日本語言學校?
※學語言就得無所畏懼
※網路語言你懂多少?
※出國留學如何通過語言關?
※美國留學新「捷徑」,無語言也無妨!
※如何診斷孩子是語言障礙?
※C語言學習必須擁有學習路線,不然你就只會寫貪吃蛇
※語言:如何讓孩子贏在起跑線上
※語言天才竟然是這樣學外語的!
※英國大學申請即將截止,雅思竟然拖後腿…語言課來了解一下!
※喵星人你語言怎麼學偏了
※為什麼說C語言不是低級語言?
※如果再學一門新語言,你會選擇 Go 嗎?
※我們為什麼要學C語言?
※如果你善於「語言遷移」,法語學習就不是那麼難的事
※如何突破語言學習的瓶頸!
※趙立新四國語言切換自如,娛樂圈的這些學霸讓你意想不到