c語言易錯的點,C語言易錯

本文目錄一覽:

c語言中從鍵盤輸入數據的規律和容易出錯的地方

以下為你收集的c語言輸入數據要點及注意事項

說明: (1)數據輸入是相對計算機內存

(2) 數據輸入使用標準庫函數完成

(3) 數據輸入標準庫函數的原型聲明在stdio.h頭文件中

1、函數getchar函數的功能是從鍵盤上輸入一個字元。

其一般形式為:字元變數=getchar();

getchar函數只能接受單個字元,輸入數字也按字元處理。

輸入多餘的字元存入到鍵盤的緩衝區,若有下一個getchar函數語句,直接從鍵盤的緩衝區讀取。

2、字元串輸入函數gets 格式:

gets (st)

功能:從鍵盤上輸入一個字元串,本函數得到一個函數值,即為該字元數組的首地址。

注意:gets函數並不以空格作為字元串輸入結束的標誌,而只以回車作為輸入結束。這是與scanf(「%s」,…)函數不同的。

3、scanf()函數的一般形式

scanf(「格式控制字元串」,地址列表);

地址列表,用來接受數據各變數的地址。

變數的地址表示如下: 變數名 ,別忘了取地址運算

其格式字元串的一般形式為:

%[*][輸入數據寬度][長度]類型字元

其中有方括弧[]的項為任選項。各項的意義如下:

1) 類型字元

表示輸入數據的類型,其格式符和意義如下所示:

d 輸入十進位整數

o 輸入八進位整數

x 輸入十六進位整數

u 輸入無符號十進位整數

f或e 輸入實型數(用小數形式或指數形式)

c 輸入單個字元

s 輸入字元串

2) 「*」符

用以表示該輸入項讀入後不賦予相應的變數,跳過該輸入值。

如 scanf(“%d %*d %d”,a,b);

輸入為:1 2 3 把1賦予a,2被跳過,3賦予b。

3)寬度

用十進位整數指定輸入的寬度(即字元數)。

例如: scanf(“%5d”,a);

輸入: 12345678

只把12345賦予變數a,其餘部分被截去。

又如: scanf(“%4d%4d”,a,b);

輸入:12345678將把1234賦予a,而把5678賦予b。

4)長度 長度格式符為l和h,l表示輸入長整型數據(如%ld)和雙精度浮點數(如%lf)。h表示輸入短整型數據。

例如:

main()

{ inta;

long b;

double x;

scanf(「%d%ld%lf」,a,b,x);

printf(「a=%d, b= %ld,x=%lf」,a,b,x);

}

使用scanf函數還必須注意以下幾點:

(1)scanf函數中沒有精度控制。

如:scanf(「%5.2f」,a); 是非法的。

(2)scanf中要求給出變數地址,

如: scanf(「%d」,a);是非法的。

(3)在輸入多個數值數據時,若格式控制串中沒有非格式字元作輸入數據之間的間隔則可用空格,TAB或回車作間隔。

例如:scanf(「%d%d」,a,b);

輸入: 12 10 回車

或 12 回車 10 回車

(4)在輸入字元數據時,若格式控制串中無非格式字元,則認為所有輸入的字元均為有效字元。

例如:

scanf(“%c%c%c”,a,b,c);

輸入為:d e f 則把’d’賦予a, 『』’賦予b,’e’賦予c。

只有當輸入為: def時,把’d’賦於a,’e’賦予b,’f’賦予c。

如果在格式控制中加入空格作為間隔,

如 scanf (“%c %c %c”,a,b,c);

輸入時各數據之間可加空格。

(5)如果格式控制串中有非格式字元則輸入時也要輸入該非格式字元。

例如:

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

其中用非格式符「,」作間隔符,故輸入時應為: 5,6,7

又如:

scanf(“a=%d,b=%d,c=%d”,a,b,c);

則輸入應為: a=5,b=6,c=7

(6)如輸入的數據與輸出的類型不一致時,雖然編譯能夠通過,但結果可能不正確。

void main()

{ inta;

printf(“inputa number\n”);

scanf(“%d”,a);

printf(“%ld”,a);

}

以上總結比較全面,希望能幫到你。

在C語言編程中應該注意哪些問題

1.先學習C語言的基礎知識。現在正在學C語言的在校學生可以直接進入第2步學習。

2.按照《C語言程序設計入門學習六步曲》進行上機練習。

3.在上機練習時要養成良好的編程風格。點擊查看C語言的編程風格

4.積极參加C、C++興趣小組,養成和老師與同學交流習慣,從而相互收益。有時別人不經意的一句話可能使你茅塞頓開–「一句話點醒夢中人」。

5.及時總結自己的學習經驗,養成寫C語言日記的習慣。軟體有編程日記功能。

6.從網上或教材上找一個自己感興趣的題目(選題時根據自己的能力,可先易後難,培養自己的成就感,如果有了成就感,即使再苦再累還是感覺C語言學習是一件快樂的事,同學們喜歡打遊戲,經常通宵達旦地玩遊戲也樂而不疲就是這個道理)進行實戰訓練,提高自己的C語言綜合應用能力。

7. 由於C語言靈活、強大,初學者要全面地掌握它是不可能的,因此在學習C語言的過程中,不要在細枝末節上浪費精力(比如++、–用於表達式的計算,實際上是沒有意義的),但一定要熟練掌握C語言的流程式控制制語句、數組、函數、指針等基礎知識的應用,為學習面向對象程序設計打下堅實的基礎。如果這些知識你學不好,要後續學習好C++、可視化的程序設計Visual C++或C++Builder就像空中樓閣,是不現實的。

C語言程序設計入門學習六步曲

筆者在從事教學的過程中,聽到同學抱怨最多的一句話是:老師,上課我也能聽懂,書上的例題也能看明白,可是到自己動手做編程時,卻不知道如何下手。發生這種現象的原因有三個:

一、所謂的看懂聽明白,只是很膚淺的語法知識,而我們編寫的程序或軟體是要根據要解決問題的實際需要控制程序的流程,如果你沒有深刻地理解C語言的語句的執行過程(或流程),你怎麼會編寫程序解決這些實際問題呢?

二、用C語言編程解決實際問題,所需要的不僅僅是C語言的編程知識,還需要相關的專業知識。例如,如果你不知道長方形的面積公式,即使C語言學得再好你也編不出求長方形的面積的程序來。

三、C語言程序設計是一門實踐性很強的課程,「紙上談兵」式的光學不練是學不好C語言的。例如,大家都看過精彩自行車雜技表演,假如,你從來沒有騎過自行車,光聽教練講解相關的知識、規則、技巧,不要說上台表演、就是上路你恐怕都不行。

出現問題原因清楚了,那麼如何學習呢?請你看【C語言學習六步曲】

在程序開發的過程中,上機調試程序是一個不可缺少的重要環節。「三分編程七分調試」,說明程序調試的工作量要比編程大得多。這裡以如何上機調試C程序來說明C語言的學習方法。

第一步、驗證性練習

在這一步要求按照教材上的程序實例進行原樣輸入,運行一下程序是否正確。在這一步基本掌握C語言編程軟體的使用方法(包括新建、打開、保存、關閉C程序,熟練地輸入、編輯C程序;初步記憶新學章節的知識點、養成良好的C語言編程風格)。

初學者最容易犯的錯誤是:

1、沒有區分開教材上的數字1和字母l,字母o和數字0的區別,造成變數未定義的錯誤。另一個易錯點是將英文狀態下的逗號,分號;括弧()雙引號””輸入出入成中文狀態下的逗號,分號;括弧(),雙引號「」造成非法字元錯誤。

2、C語言初學者易犯語法錯誤:使用未定義的變數、標示符(變數、常量、數組、函數等)不區分大小寫、漏掉「;」、「{」與「}」、「(」與「)」不匹、控制語句(選擇、分支、循環)的格式不正確、調用庫函數卻沒有包含相應的頭文件、調用未C聲明的自定義函數、調用函數時實參與形參不匹配、數組的邊界超界等。

3、修改C語言語法錯誤時要注意以下兩點:

(1)、由於C語言語法比較自由、靈活,因此錯誤信息定位不是特別精確。例如,當提示第10行發生錯誤時,如果在第10行沒有發現錯誤,從第10行開始往前查找錯誤並修改之。

(2)、一條語句錯誤可能會產生若干條錯誤信息只要修改了這條錯誤,其他錯誤會隨之消失。特別提示:一般情況下,第一條錯誤信息最能反映錯誤的位置和類型,所以調試程序時務必根據第一條錯誤信息進行修改,修改後,立即運行程序,如果還有很多錯誤,要一個一個地修改,即,每修改一處錯誤要運行一次程序。

第二步、照葫蘆畫瓢

在第一步輸入的C程序的基礎上進行試驗性的修改,運行一下程序看一看程序結果發生了什麼變化,分析結果變化的原因,加深新學知識點的理解。事實上這和第一步時同步進行的,實現「輸入」加深知識的記憶,「修改」加深對知識的理解。記憶和理解是相輔相成的,相互促進。

例如:將最簡單的Hello World!程序

#include “stdio.h”

int main()

{

printf(“Hello World!\n”);

return 0;

}

中的

printf(“Hello World!\n”);

中的Hello World!改成你的姓名,運行一下程序,看有什麼變化?

再如求1+2+3…+100的和的程序

#include stdio.h

main()

{

int i,sum=0;

for(i=1;i=100;i++)

{

sum=sum+i;

}

printf(“sum=%d\n”,sum);

}

第1次將for(i=1;i=100;i++)中的100改成50,運行一下程序,看有什麼變化?

第2次將for(i=1;i=100;i++)中的i++改成i=i+2,運行一下程序,看有什麼變化?

找出程序結果變化的原因,就加深了對C語句的理解。

第三步、不看教材看是否能將前兩步的程序進行正確地輸入並運行。

在這一步要求不看教材,即使程序不能運行,看能否將其改正,使其能正確運行。目的是對前兩步的記憶、理解進一步強化。

第四步、增強程序的調試能力

在教材中每章都有C語言初學者易犯的錯誤,按照易出錯的類型,將教材中的正確的程序改成錯誤的程序,運行一下程序,看出現的錯誤信息提示,並記下錯誤信息,再將程序改成正確的,運行一下程序。這樣反覆修改,就能夠學習C語言程序發生錯誤的原因和修改錯誤的能力。

注意:每次只改錯一個地方,目的是顯示發生該錯誤的真正原因,避免一次改動多個地方,搞清發生錯誤的真正原因,切記!!!!

注意:上機調試程序時要帶一個記錄本,記下英文錯誤提示信息和解決該錯誤問題的方法,積累程序調試經驗,避免在編程犯同樣的錯誤,切記!!!!。

例如,將Hello World程序中語句

printf(“Hello World!\n”);

中的;改成中文的分號;

運行一下程序,看有什麼結果?

調試程序是一種實踐性很強的事,光紙上談兵是是沒用的,就像游泳運動員只聽教練講解示範,而不親自下水練習,是永遠學不會游泳的。

即使在優秀的程序員編寫程序也會犯錯誤的,可能事最低級的語法錯誤,但他能快速發現錯誤並改正錯誤,而我們C語言初學者面對錯誤提示,不知道發生了什麼錯誤,如何改正,這就事差別。

第五步、研究典型的C語言程序,提高程序設計能力

C語言初學者遇到最多的困惑是:上課也能聽懂,書上的例題也能看明白,可是到自己動手做編程時,卻不知道如何下手。發生這種現象的原因是:所謂的看懂聽明白,只是很膚淺的語法知識,而沒有深刻地理解C語言的語句的執行過程(或流程)。

計算機是按照人的指令(編寫的程序)去執行的,如果不知道這些C語句在計算機中是如何執行的,你怎麼回靈活運用這些知識去解決實際問題呢?

解決問題的方法是要先理解C語言各種語句的流程(即計算機是如何執行這些語句的過程),然後研讀現成C語言經典程序,看懂別人事如何解決問題的,以提高自己的程序設計能力。

第六步、研究課程設計源成序,提高C語言的綜合應用能力.

c語言中的易錯點

具體語句太多了,就不一一指明,我就說一下整體的吧。

看看大括弧有沒有成對出現,這就是所謂的成對編程。

還有就是少分號,有些語句是不需要分號的 比如for if記住幾個特例就行,其他大部分都得補足分號。

最容易出錯的還有指針,建議從一些簡單指針題入手,掌握好規律就可以了。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/256703.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-15 12:42
下一篇 2024-12-15 12:42

相關推薦

  • AES加密解密演算法的C語言實現

    AES(Advanced Encryption Standard)是一種對稱加密演算法,可用於對數據進行加密和解密。在本篇文章中,我們將介紹C語言中如何實現AES演算法,並對實現過程進…

    編程 2025-04-29
  • 學習Python對學習C語言有幫助嗎?

    Python和C語言是兩種非常受歡迎的編程語言,在程序開發中都扮演著非常重要的角色。那麼,學習Python對學習C語言有幫助嗎?答案是肯定的。在本文中,我們將從多個角度探討Pyth…

    編程 2025-04-29
  • Python被稱為膠水語言

    Python作為一種跨平台的解釋性高級語言,最大的特點是被稱為”膠水語言”。 一、簡單易學 Python的語法簡單易學,更加人性化,這使得它成為了初學者的入…

    編程 2025-04-29
  • OpenJudge答案1.6的C語言實現

    本文將從多個方面詳細闡述OpenJudge答案1.6在C語言中的實現方法,幫助初學者更好地學習和理解。 一、需求概述 OpenJudge答案1.6的要求是,輸入兩個整數a和b,輸出…

    編程 2025-04-29
  • Python按位運算符和C語言

    本文將從多個方面詳細闡述Python按位運算符和C語言的相關內容,並給出相應的代碼示例。 一、概述 Python是一種動態的、面向對象的編程語言,其按位運算符是用於按位操作的運算符…

    編程 2025-04-29
  • Python語言由荷蘭人為中心的全能編程開發工程師

    Python語言是一種高級語言,很多編程開發工程師都喜歡使用Python語言進行開發。Python語言的創始人是荷蘭人Guido van Rossum,他在1989年聖誕節期間開始…

    編程 2025-04-28
  • Python語言設計基礎第2版PDF

    Python語言設計基礎第2版PDF是一本介紹Python編程語言的經典教材。本篇文章將從多個方面對該教材進行詳細的闡述和介紹。 一、基礎知識 本教材中介紹了Python編程語言的…

    編程 2025-04-28
  • Python語言實現人名最多數統計

    本文將從幾個方面詳細介紹Python語言實現人名最多數統計的方法和應用。 一、Python實現人名最多數統計的基礎 1、首先,我們需要了解Python語言的一些基礎知識,如列表、字…

    編程 2025-04-28
  • Python作為中心語言,在編程中取代C語言的優勢和挑戰

    Python一直以其簡單易懂的語法和高效的編碼環境而著名。然而,它最近的發展趨勢表明Python的使用範圍已經從腳本語言擴展到了從Web應用到機器學習等廣泛的開發領域。與此同時,C…

    編程 2025-04-28
  • Python基礎語言

    Python作為一種高級編程語言擁有簡潔優雅的語法。在本文中,我們將從多個方面探究Python基礎語言的特點以及使用技巧。 一、數據類型 Python基礎數據類型包括整數、浮點數、…

    編程 2025-04-28

發表回復

登錄後才能評論