葉小芹 毛玲



摘要:C語言程序設計這門課程在高校計算機課程中占據較重要的地位,尤其是本科高校的計算機相關專業,該課程旨在提升學生的編程基礎知識和基本技能,但學生要想學好C語言,掌握C語言的編程技巧,就得在學好C語言基本知識的基礎上,再反復進行上機練習,學會找出程序中的常見錯誤及錯誤原因。論文針對學生在編程過程中容易出現的錯誤進行總結和分析,主要是通過幾個具體的實際案例來進行分析,以供后續學生參考和使用,靈活掌握該課程的編程技巧。
關鍵詞:C語言;編程;錯誤;技巧;分析
中圖分類號:TP311.5? ? ? 文獻標識碼:A
文章編號:1009-3044(2021)23-0144-04
Abstract: The course "C Language Programming" occupies a more important position in computer courses in colleges and universities, especially computer-related majors in undergraduate universities. This course aims to improve students' basic programming knowledge and basic skills. However, if students want to learn the C language and master the programming skills of the C language, they have to learn the basic knowledge of the C language, and then repeat the exercises on the computer to learn to find the common errors and the causes of the errors in the program. This article summarizes and analyzes the errors that students are prone to in the process of programming, mainly through a few specific practical cases to analyze, for subsequent students to refer to and use, and flexibly master the programming skills of the course.
Key words: C language; programming; errors; skills; analyze
1 背景
C語言程序設計是高等院校理工科專業的基礎課及必修課,很多高校都將二級省考成績作為該課程的期末成績,可見該課程的重要性。C語言是一門高級語言,是所有計算機高級語言的基礎,很多語言比如C++、Java、C#等都借鑒了它的思想、語法,例如計算機類專業學生在學習Java語言之前首先要學習C語言,同時它又是電子類專業學習單片機、DSP、PLC等專業課程的基礎。綜上,C語言是一門基礎語言且十分重要,要想學好C語言,就得從C語言的編程環境VC++6.0開始,能讀懂程序,會編寫及會調試程序,調試程序就是要學會找出程序中的錯誤,在錯誤中成長。本文將學生們在進行C語言上機課的過程中出現的常見錯誤列舉出來,并進行總結和分析,以供后續學生參考和使用。
2 計算機語言錯誤類型
程序中出現的錯誤一般分為三類,即語法錯誤、邏輯錯誤和系統錯誤[1]。
2.1 語法錯誤
語法錯誤指的是程序中含有不符合語法規定的語句,例如大小寫沒有區分,使用了沒有定義的變量等等,通常由于學生對語法不熟悉或對C語言的理解不深造成的。一般情況下,高級語言都是需要經過翻譯過程的,在C語言中,是通過VC++6.0編程環境中的編譯按鈕對C程序進行翻譯,當編譯的時候,如果程序有語法錯誤,一般輸出窗口會給出提示消息,包括錯誤個數和警告個數,錯誤出現的行號、名稱和原因提示等,有時候一個錯誤可有多個提示消息,導致這樣的原因是因為這個錯誤導致了其他行也出現了錯誤,所以作為初學者在不確定有多少個錯誤的情況下,可從第一個錯誤提示開始找錯誤并修改錯誤,修改完第一個錯誤立即編譯運行一下,若沒有錯誤,那其他錯誤提示就是該錯誤導致的,若還有錯誤則按以上方法繼續找,直到沒有錯誤為止。同時找錯誤也是講究方法的,即在輸出窗口雙擊錯誤提示消息[2],提示消息會立即以藍色標記突出顯示出來,同時會有一個藍色箭頭指向錯誤行,這樣就不用去計算該程序的錯誤所在行數了。語法錯誤如下圖1所示。
2.2 語義錯誤
錯誤又稱邏輯錯誤,指的是那些不違反C語言的語法規則,卻不合邏輯或不合題意導致結果不正確的錯誤。這類錯誤編譯器不會報錯,需要自己去發現。語義錯誤如上圖2所示。
在上圖2中,關系表達式中要表達“相等”關系時,應該用“==”,而題目中卻用了“=”,“=”代表“賦值”,即if(c=a+b)處犯了語義錯誤,這樣的程序編譯是沒有問題的,但是結果跟預期的不一樣。
2.3 系統錯誤
系統錯誤是指程序中沒有語法錯誤和語義錯誤,但程序的正常運行依賴于某些外部條件比如系統的軟硬件,如果系統的軟硬件出現問題,就會導致程序不能正常運行。
3 常見錯誤
初學者在編程時,最容易犯錯誤,而這些錯誤是可以經過反復練習,準確定位,總結經驗,在此基礎上,最終通過查找錯誤來掌握C語言的語法規則。接下來主要討論C語言中幾種常見的錯誤類型。