當前位置:首頁 » 編程語言 » c語言書寫程序注意什麼
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言書寫程序注意什麼

發布時間: 2022-12-09 09:15:18

⑴ 總結一下新手學c語言要注意的地方!!

(這幾點是不管新手老手都必須具備的)
1、興趣吧(這是最重要的)
2、持之以恆,不畏困難
3、教材選擇(為了少走彎路!)

(這幾點主要針對新手)
4、不要對集成IDE產生依賴心理,盡可能從手寫開始,在IDE上調試時,注意記錄錯誤,再在自己的草稿上修改程序,再調試。

5、養成良好的書寫程序習慣,盡可能讓程序結構清晰:
<1>一行寫一句,{}等除了在if、for語句後面,其餘時候應該各佔一行;
<2>運算符與數字、變數間空一格,如:1+1 在IDE中不如寫成1 + 1清晰;
<3>不要寫那種只會在考試出題時遇到的語句,那樣會使程序結構極度混亂,不利於調試;
<4>要有一些整體意識,即使有些時候滿足運算順序法則,還是用括弧突出整體,例如 if (a + b > 3)是可以的,但為了使程序結構清晰,不如寫成 if ((a + b) 〉3);
<5>()的個數在C中常常會帶來麻煩,因為在編寫復雜代碼時,常會有多重括弧,這里應該特別注意。

6、獨立思考,最好參考編程平台的幫助資料,少一些依賴;

7、養成收集錯誤代碼(記好相關筆記)的習慣,慢慢學會對付編譯錯誤。

以上就是我個人的學習心得。。。
希望對你有所幫助。

IDE->編程集成環境,說白了,編程平台.

教材:
如果英文好,可以學習《標准C程序設計》(Programming in ANSI C)和《C++完全參考手冊》(C++ The Complete referrence)
這兩本書十分淺顯易懂,前提是英文還可以。
如果英文不是太好,那麼可以學習上面兩本書的中文版,或者《C++ Primier》的中文版,當然,網上對譚浩強的《C程序設計》的呼聲也很高。

⑵ 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

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語言的書寫規則主要有哪些呢

從書寫清晰,便於閱讀,理解,維護的角度出發,在書寫程序時
應遵循以下規則:
1.一個說明或一個語句佔一行。
2.用{}
括起來的部分,通常表示了程序的某一層次結構。{}一般與該結構語句的第一個字母對齊,並單獨佔一行。
3.低一層次的語句或說明可比高一層次的語句或說明縮進若干格後書寫。以便看起來更加清晰,增加程序的可讀性。在編程時應力求遵循這些規則,以養成良好的編程風格。
有空格的地方就可以換行!
if(
a
==
b
&&
e
==
c
){}

if(
a
==
b
&&
e
==
c
)
{
}
是完全一樣的

⑷ 書寫c語言程序的時需要注意什麼

任何一個語言都必須注意語法,這是第一大前提;你在寫程序之前你必須要在腦海中形成一個明確的思路,這樣程序寫起來很清晰;當一個程序出錯時你必須要有足夠的耐心去尋找bug,一旦找到解決起來都是小問題。(暫時想到這些,比較籠統,總之多練習吧!)

⑸ C語言的書寫規則主要有哪些呢

1.
1.1符號命名規則
1.1.1符號名包括模塊名、常量名、標號名、子程序名等。這些名字應該能反映它所代表的實際東西,具有一定的意義,使其能夠見名知義,有助於對程序功能的理解。命名採用匈牙利命名法。規則如下:
(1)所有宏定義、枚舉常數和const變數,用大寫字母命名。在復合詞里用下劃線隔開每個詞。
(2)復合詞中每個單詞的第一個字母大寫。除了規則5.1.1.1以外,避免使用下劃線。
(3)類、類型定義和枚舉型名的第一個字母大寫。
(4)函數名是復合詞的,第一個詞採用全部小寫,隨後每個單詞採用第一個字母大寫,其它字母小寫方式;如果是單個詞的,採用全部小寫方式。
(5)循環變數可採用i, j, k等,不受上述規則限制。
(6) 類的成員變數應採用m_開頭。
(7) 全局變數詞頭為g_ 。
(8) 臨時變數詞頭為tmp_ 。
(9) 對結構體內的變數命名, 遵循變數的具體含義命名原則
(10)用小寫字母的前綴表示變數的類型,前綴的下一個字母用大寫。
表 1
詞頭 類型 詞頭 類型
ch char l long
i integer u unsigned
b boolean p pointer
f float lp long pointer
d double s string
st structure sz ASCII string
by byte n short int
H handle x,y 分別為x,y坐標
dw DWORD fn function

表 2
詞頭 變數名 詞頭 變數名
task task sig signal
sb binary semaphores wd watchdog
sm mutual exclusion tm timer
sc counting semaphores msg message
pipe pipe

例:
#define ARRAY_SIZE 24 /*規則5.1.1.1*/

int g_iFlag;
class MyClass /*規則5.1.1.3*/
{
};

void someFunc( ) /*規則5.1.1.2和5.1.1.4*/
{

int nArray[ARRAY_SIZE];
unsigned char uchByte;
char szName[ ];
char *pszName = szName;
}

(11)有些詞頭(如p和u)可以和其它詞頭組合。

例:WDOG_ID wdId;
WDOG_ID g_wdId; /*全局watchdog Id,故以g_開頭*/

1.1.2名字的長度一般不要過長或過短。過長的名字會增加工作量,使程序邏輯流程變得模糊;過短的名字無法表達符號的實際意義。約定長度范圍:3-31;

1.2數據和函數說明
1.2.1數據說明次序應當規范化,使數據屬性容易查找,也有利於測試、排錯和維護。說明的先後次序應固定,應按邏輯功能排序,邏輯功能塊內建議採用下列順序:整型說明、實型說明、字元說明、邏輯量說明。
1.2.2如果設計了一個復雜的數據結構,應當通過注釋對其變數的含義、用途進行說明。
1.2.3在函數的聲明中使用異常聲明。
如:void f() throw(toobig, toosmall, divzero);
在聲明一個函數時,將它所拋出的異常列出,便於函數的使用者了解可能會發生哪些異常。

1.3 程序注釋
1.3.1程序注釋是程序員與日後的程序讀者之間通信的重要手段之一,注釋分為文件注釋、函數注釋和功能注釋。
1.3.2正規程序的注釋應注意:
——注釋行的數量佔到整個源程序的1/3到1/2。
1.3.3文件注釋位於整個源程序的最開始部分,注釋後空兩行開始程序正文。它包括:
——程序標題。
——目的、功能說明。
——文件作者、最後修改日期等說明。
例:
./********************************************************************
(空一行)
標題: Demo.c
功能: 測試VxWorks的各種系統調用.
說明:
該程序測試各種VxWorks的系統調用函數。包括任務(taks)的創建、掛起及任務間通過信號燈實現同步,通過消息隊列 進行通訊。
程序創建了兩個任務:一個高優先順序的任務和一個低優先順序的任務。兩個任務間通過一個二進制的信號燈進行同步,通過消息隊列進行通訊。
當前版本: x.x
修改信息: 2000.06.05 John, Initial Version
2000.07.05 Tom, Bug xxxx fixed
**************************************************************/
(空2行,開始程序正文)

1.3.4 函數注釋通常置於每函數或過程的開頭部分,它應當給出函數或過程的整體說明對於理解程序本身具有引導作用。一般包括如下條目:
——模塊標題。
——有關本模塊功能和目的的說明。
——調用格式
——介面說明:包括輸入、輸出、返回值、異常。
——演算法。如果模塊中採用了一些復雜的演算法。
例:
file://(/注釋開頭應和上一函數空兩行)
(注釋開頭與上一函數最後一行間隔兩行)
/********************************************************************
標題:assignmentComplete
功能:BSC=>MSC消息生成函數,生成assignment_complete指配完成消息(BSMAP消息) .
格式:
int assignmentComplete(int iCellId, int iServiceChannnelNum, char *pszMSGData) throw(exception1, exception2)
輸入:
int iCellId: MS所在的小區識別
iCellId取值:0x00-——0xff

int iServiceChannnelNum:MS所佔的業務信道號碼
輸出:
char * pszMSGData:指配完成消息數據
返回值: 0x00正常
異常:exception1異常情況1, exception2異常情況2
********************************************************************/
( 注釋後直接開始程序正文,不空行。)
1.3.5功能性注釋嵌在源程序體中,用於描述其後的語句或程序段做什麼工作,也就是解釋下面要做什麼,或是執行了下面的語句會怎麼樣。而不要解釋下面怎麼做,因為解釋怎麼做常常與程序本身是重復的。
例:
/*把 amount 加到 total中*/
total = amount + total;
這樣的注釋僅僅是重復了下面的程序,對於理解它的工作並沒有什麼作用。而下面的注釋,有助於讀者理解。
/*將每月的銷售額amount加到年銷售額total中*/
total = amount + total;
1.4 函數編寫應盡可能短小精悍,一般不超過兩屏,以便於調試和理解。

1.5語句結構
為保證語句結構的清晰和程序的可讀性,在編寫軟體程序時應注意以下幾個方面的問題:
——在一行內只寫一條語句,並採用空格、空行和移行保證清楚的視覺效果。
——每一個嵌套的函數塊,使用一個TAB縮進(可以設定為4個空格),大括弧必須放在條件語句的下一行,單獨成一行,便於匹對:
如,有一段程序如下:
for(i=1;i<n-1;i++){ t=1; for(j=i+1;j<n;j++){
if(a[j]<a[t] ) t=j; if(t!=i ){work=a[t];a[t]=a[I];a[I]=work;}}}
應寫為
for( i=1; i<n-1; i++)
{
t=1;
for(j = i+1; j<n; j++)
{
if(a[i]<a[j])
t=j;
if(t!=1)
{ .5.

Q/ECC/BJ 010—2001
work=a[t];
a[t]=a[i];
a[i]=work;
}
}
}

——文件之中不得存在無規則的空行,比如說連續十個空行。
一般來講函數與函數之間的空行為2-3行;
在函數體內部,在邏輯上獨立的兩個函數塊可適當空行,一般為1-2行。
——程序編寫首先應考慮清晰性,不要刻意追求技巧性而使得程序難以理解。
——每行長度盡量避免超過屏幕寬度,應不超過80個字元。
——除非對效率有特殊要求,編寫程序要作到清晰第一,效率第二。
——盡可能使用函數庫。
——盡量用公共過程或子程序去代替重復的功能代碼段。要注意,這個代碼應具有一個獨立的功能,不要只因代碼形式一樣便將其抽出組成一個公共過程或子程序。
——使用括弧清晰地表達算術表達式和邏輯表達式的運算順序。如將 x=a*b/c*d 寫成 x=(a*b/c)*d可避免閱讀者誤解為x=(a*b)/(c*d)。
——避免不必要的轉移。
——避免採用過於復雜的條件測試。
——避免過多的循環嵌套和條件嵌套。
——建議不要使用 *=,^=, /=等運算符。
——一個函數不要超過200行。一個文件應避免超過2000行。
——盡量避免使用go to語句。
——避免採用多賦值語句,如x = y = z ;
——不鼓勵採用?:操作符,如z = (a>b)?a:b;
——不要使用空的if else 語句。如
if(cMychar >= 『A』)
if(cMychar <= 『Z』)
printf(「This is a letter \n」);
else
printf(「This is not a letter \n」);
else到底是否定哪個if容易引起誤解。可通過加{}避免誤解。
——盡量減少使用「否定」條件的條件語句。如:
把 if( !( (cMychar<』0』) || (cMychar>』9』) ) )
改為if( (cMychar>=』0』) && (cMychar<=』9』)

⑹ 初學c語言應該要注意一些什麼

祥子
[學者] 編程語言其實是一個很初級的工具,但是你又必須熟練的掌握它,學懂一門編程語言就好像學會了寫字,但是會寫字的人不見得會寫文章,而會寫文章又不見的寫得好。可是如果你不會寫字,那就一定寫不出文章來。

首先,在學習C語言之前,應該學好計算機基礎。裡面的很多概念對於C程序員都是非常重要的。如果你在著手學習C之前,或者已經開始學習C,但是碰到了很多問題,應該再把計算機基礎的書拿來好好看看。

如果你有足夠的耐心,十足的毅力,應該再學習C語言之前學學匯編,這會讓你對許多比較細膩的概念有清醒的認識,如果你不是那麼有耐心(恕我直言,大部分人可能沒有)。那麼可以在看完一遍C語言的教材後再看,但是一定要看一遍,相信我一定會受益匪淺。

看到有些人發問的帖子,很明顯的沒有仔細的思考過問題,或者沒有認真地查閱過書籍,因為其中的語法和邏輯錯誤實在是不能理解。想來如果你的語文作業上面滿篇都是錯字,老師一定不會放過你。為什麼不先打好基礎呢?有些人抱怨說因為教材不好,老師水平不行等等。但是我本人就是在TC2下學習C語言的,那時候除了譚浩強的書,也幾乎找不到什麼別的書。我不打算就譚浩強的書發表什麼意見,那也實在稱不上是一本好書,但是如果這本是能學好,全部看好,都記住,也應該有相當的水平了。建議不管看什麼書,先認真地看懂,不要貪速度,應該力求深入的理解。

如果你能夠比較熟練的解決一本教材上的所有習題,那麼就應該轉入對演算法的學習,盡管此時你的C語言還稱不上精通,有許多細節問題還不了解,許多問題還沒有碰到,但是這些問題會在後面的工作和學習中得到解決的。

新手學習C語言,有很多誤區,以一個學過C語言的人,給新手一些建議。
拋磚引玉,請前輩指出問題,發表意見,新手請注意後面的回復。
第一:一些概念。
C語言是一門程序設計語言,有一些標准,比較重要的是ANSI C(好像是C89)和C99。
數據結構包括邏輯結構和物理結構。邏輯結構是數據元素集合和定義在集合上的關系。物理結構是邏輯結構在計算機中的實現。
LCC、VC、TC、GCC都是C語言編譯器,一般包括集成開發環境,編譯器和鏈接器及輔助工具
我們書寫的是C源程序,源程序通過編譯器編譯為中間文件,中間文件經鏈接器鏈接生成可執行文件。不同操作系統可執行文件不同。中間文件也有幾個標准,微軟使用的和Linux下通用的有差異。
第二:學習什麼。
個人認為程序設計學習的重點放在數據結構的學習上,但是這種學習要有一個平台,比如C語言。
學習C語言首先要掌握基本語法,常量、變數、類型、及順序結構、分支結構和循環結構的意義及用法。進一步學習構造類型如指針、結構、函數的意義和用法。
C語言提供一些標准函數以減輕程序設計工作量,這些函數我們自己也可以實現。即使不依靠函數庫,只有編譯器,理論上就足夠了。事實上,提供的標准函數效率都很高,使用很頻繁,沒有自己實現的必要,所以掌握常用函數是非常必要的,但是要注意函數的適用范圍。
繼續學習因人而異,應該可以獨立選擇了。
第三:如何學習。
強調多實踐,C語言的學習要經常上機,多寫程序才能逐步提高。
推薦書籍:C Programming Languge。有中譯本,但最好看英文版。
通讀,並將所有習題獨立思考,給出解答,尤其是編程實踐題,最好逐一上機完成。

C語言其實並不難,如果認真掌握了C Programming Language,C語言的基礎就可以了,繼續學習就更加容易。建議不要找捷徑,通過考試除外,真正的水平提高是建立在編程實踐積累基礎上的,必須一個一個程序的完成才能提高。

談及C語言,我想凡是學過它的朋友都有這樣一種感覺,那就是「讓我歡喜讓我憂。」歡喜的是,C語言功能非常強大、應用廣泛,一旦掌握了後,你就可以理直氣壯地對他人說「我是電腦高手!」,而且以後若是再自學其他語言就顯得輕而易舉了。憂慮的是,C語言猶如「少林武功」 一般博大精深,太難學了。其實就筆者認為C語言並非是「difficult(困難)」的,只要你能理清思路,掌握它的精髓,那麼自學C語言是一件非常容易且又其樂無窮的事。今天本人就與大家一起談談如何學習C語言或者說學習C語言應從哪幾方面著手。

了解一些基本知識

一.C語言的背景

就個人感觸,無論學習哪門語言首先應該了解一下自己所學語言的背景,也可以說它的發展史。

C語言屬於高級程序語言的一種,它的前身是「ALGOL」。其創始人是布朗·W·卡尼漢和丹尼斯·M·利奇。C語言問世時是帶有很大的局限性,因為它只能用於UNIX系統上。然而隨著科學技術的進步,計算機工業的發展,C語言逐漸脫離UNIX。1987年美國標准化協會制定了C語言的國際標准,簡稱 「ANSI C」,從此以後它便成為一種廣泛使用的程序語言。C語言的優點很多,主要的有如下四點:

1.兼備高級語言與低級語言的優點,屬於一種中間語言。

2.它是一種結構化程序設計語言,非常適合結構化程序設計。

3.有較豐富的數據類型、運算符以及函數供以選用。

4.直接與內存打交道,使修改、編輯其他程序與文檔變得輕松,簡單。

二.二大語系二種不同的學習方法

筆者學習過很多程序語言,例如:C,C++(C語言的擴展),QBASIC,VB(BASIC的可視化),JAVASCRIPT,JSCRIPT ,VBSCRIPT,JAVA,ASP,FOXPRO,PERL等等,就本人實踐所得,其實高級程序語言分為兩大語系。一路是以C為主的程序語言,例如: JAVASCRIPT,JAVA等,這類語言在函數的調用,程序語句的書寫,循環的控制都極為相似。另一路是以BASIC為首的程序語言,例如: FOXPRO,VBSCRIPT等,此類語言同樣具有相似的函數調用,程序語句書寫以及循環控制,但與C語系是不同的。因此若是您以前是從QBASIC起家的,那麼在學習C語言前最好是先洗洗腦,千萬不要把學習BASIC的方法以及思路用在C身上。

講到這里,我想大家對C語言一定有了感性認識吧!下面讓我們再升華一下,全方位親密接觸它。學習C語言必須從以下四點入手,也就是說,只要你能掌握這四點的內容,那麼基本上就大功告成了。

親密接觸C語言

一.輸入輸出

C語言的輸入輸出是非常嚴格的,或許在其他程序語言中我們可以不關心這個問題,但在C語言中,我們必須要徹底了解它。由於篇幅有限,因此筆者不能詳談,有興趣的朋友可以參考由著名程序語言教授譚浩強先生主編,由清華大學出版社出版的《C程序設計第二版》。不過這里筆者還是有幾點要談一下。

1.二維浮點數數組的輸入

二維浮點數數組的輸入(即:通過鍵盤給二維浮點數數組賦值)在很多專業書中都沒有詳細講過這個問題。在給二維浮點數數組賦值時一定要先聲明一個變數,接著把數值賦予這個變數,最後把變數數值賦予二維浮點數數組賦值。實例如下:

# include "stdio.h"
main()
{
float a[2][3],x ;
int i,j;
for(i=0;i<2;i++)
for(j=0;j<3;j++)
{scanf("%f",&x); <br>a[i][j]=x;}
}
不能寫成:

# include "stdio.h"
main()
{
float a[2][3] ;
int i,j;
for(i=0;i<2;i++)
for(j=0;j<3;j++)
scanf("%f",&a[i][j]);
}

同樣道理,在結構性浮點數組變數中也一定要按照這種格式輸入。實例如下:

# include "stdio.h"
struct student
{float b[3]; <br>int x; <br>}a[2];
main()
{
float x ;
int i,j;
for(i=0;i<2;i++)
for(j=0;j<3;j++)
{scanf("%f",&x); <br>a[i].b[j]=x;}
}

2.注意輸出格式中「%」後的字元

C語言的輸出說復雜不復雜,因為常用的都很簡單。可說不復雜也未必,記得曾在一次等級考前輔導我們C語言的教授講道:「如果C語言要考得很難的話,根本不用考什麼指針,只要專考輸出格式,我想百分之九十九的學生都不及格。」當時我們無不認同。從這則事例中可以看出C語言的輸出格式之復雜程度。因此大家在學習它時千萬要學會辨別輸出格式中「%」後的字元,每個字元都有其意義,也都有其作用。

二.優先順序

說道優先順序,有很多朋友都不是很了解或說很模糊。為此筆者想先通過一個例子讓各位有個概念。什麼叫優先順序?比方說,我們在公交車終點站排座隊時總會遇到70歲以上的老人不需要排隊就能上車的情景,這就是優先順序的涵義。C程序在運行時也象排隊坐車一樣,首先照顧那些優先順序高的運算符,若是優先順序相同,那麼就象遇到兩位(或兩位以上)70歲以上的老人那樣,讓他們依次上車。但是C語言中的優先順序的運算並不是千篇一律的,只能說是在大多數情況下,有些運算符的優先順序有其自己的特點,因此這點大家要注意。例如條件表達式:條件?結果1:結果2,這種表達式很多朋友都知道,它的作用與IF…ELSE…條件判斷語句很雷同,它運算時的優先順序就不是按照C語言的規則來完成的。所以說對於優先順序各位編程愛好者一定靈活掌握,不要死記硬背。

三.指針

就個人認為,C語言中的指針是最有特色的,當然也是最難學的。指針說穿了,其實是變數的一種表現形式,只不過這種變數記載的不是數值而是地址。就象一個人可以用姓名來表示自己,也可以用身份證號碼來表示自己一樣。筆者涉足編程已經有三年多了,在這期間曾經收到過很多網友的電子郵件詢問學習指針的方法。就本人感觸,學習指針最好是先學些計算機硬體工作的原理,例如:直接定址,間接定址等,只有了解了這些內容以後,你再學指針就比較容易理會,畢竟C語言是一門介於機器語言與高級語言中間的語言,沒有一些硬體工作知識是很難領悟它的真諦的。然而事事並非絕對,如果你沒有這些知識也不要緊,只要清楚知道以下筆者總結的二點再加上多練習便可:

1.指針是地址變數:它的值有兩種:其一是地址,其二是內容。不同的表達方式可以取不同的值,這有點象一個家庭地址在不同的場合標識的人物也不同。例如:父母親在他們的單位所登記的家庭地址就代表他們自己,而你在學校中登記的同樣的家庭地址就代表你自己。

2.指針是可以運算的,它的運演算法則與變數是一致的。

另外,在編寫一個程序時,除非萬不得已,一般不要使用指針變數。因為指針是比較復雜的,用不好就「當機」。所以筆者建議各位對於指針只要能看懂就行,當然如果你是准備參加考試的就另當別論了。

四.函數

雖說很多程序語言都有函數這一內容,但筆者覺得C語言的函數是最有魅力的。如果你能完全掌握C語言的函數,那麼學習C++就不成問題了(C++是一門建立在C語言上,但又不同於C語言的高級程序語言,它增添了很多函數。)。學習函數的方法是比較簡單的,只有兩個字「牢記」,即:牢記函數的功能,牢記函數的用途以及如何輸入輸出。有些朋友認為,程序語言中的函數沒有多大用處,其實這並不正確,函數從本質上講是一段通用程序,用它可以幫助我們節約很多編程的時間,一個聰明的編程者在編寫程序前往往總是先找自己所編寫的程序中有多少是可以用函數來代替的。筆者曾經作過一個比較字元串的實驗,用C語言中的 strcmp()函數只要一句話,而自己編寫的話30句話都擺不平,可想而知函數是多麼實用呀!

寫到這里筆者該告一段落了,下面送一個本人自己用C 語言編寫的注冊表比較程序給諸位。此段程序的注釋請看「/*…*/」後的文字,程序運行時(在DOS模式下)輸入的方式如下:compare xx1.reg xxx2.reg xxx3.txt,注意欄位與欄位之間是有空格的。(compare是程序名)

程序代碼:

# include "stdio.h" /*定義頭文件或說包含文件*/

main(argc,argv) /*定義帶參數的主函數*/

int argc; /*定義參數類型*/
char *argv[]; /*定義第二參數類型*/
{ FILE *fp1,*fp2,*fp3; /*定義文件指針*/
char a,b; /*定義字元變數*/
if((fp1=fopen(argv[1],"r"))==NULL)
/*打開第一的注冊表備份文件,如果不存在則跳出程序並顯示「The file don`t open!」*/
{ printf("The file don`t open!");
exit(0); }
if((fp2=fopen(argv[2],"r"))==NULL) /*打開第二的注冊表備份文件,如果不存在則跳出程序並顯示「The file don`t open!」*/
{ printf("The file don`t open!");
exit(0);}
if((fp3=fopen(argv[3],"w"))==NULL) /*建立新的文本文件,用於存放比較結果。*/
{printf("The file don`t open!"); <br>exit(0);}
rewind(fp1); /*規定文件指針fp1指向第一個注冊表文件頭部*/
rewind(fp2); /*規定文件指針fp2指向第二個注冊表文件頭部*/
while(!feof(fp1)||!feof(fp2)) /*開始比較*/
{ a=fgetc(fp1); /*讀取第一個注冊表文件內容並賦予給字元變數a*/
b=fgetc(fp2); /*讀取第二個注冊表文件內容並賦予給字元變數b*/
if(a!=b) fputc(b,fp3);
/*字元變數a與b不相同的話,那麼把不同之處寫入新建的文本文件中*/
if(feof(fp1)) fputc(b,fp3);
/*如果第一個注冊表文件已經讀完,第二個文件還有未讀取部分,那麼把第二個文件的剩餘部分全部寫入新建文件中*/
if(feof(fp2)) fputc(a,fp3);} /*如果第二個注冊表文件已經讀完,第一個文件還有未讀取部分,那麼把第一個文件的剩餘部分全部寫入新建文件中*/
fclose(fp1); /*關閉第一個注冊表文件*/
fclose(fp2); /*關閉第二個注冊表文件*/
fclose(fp3); /*關閉新建文件*/
}

對於高深莫測的C語言來說,寥寥3千字並不能說清楚的什麼問題。但只要您看了此文後,我想對於您學習此語言一定有很大的幫助,同時也能了知曉如何用最短的時間學會C語言以及掌握C語言的精髓所在。另外,此文中所涉及的知識點都是筆者通過實踐得出的,因此若是其他專業書籍沒有講到過的問題可以參考本文。最後祝大家學習C語言順利!

⑺ 用C語言編單片機的程序要注意什麼啊

注意每句結尾加「;」
注意區分大小寫
注意添加頭文件
注意盡量不要使用goto語句
注意UNSIGN
INT是四個位元組的整型
注意定義變數乘除法計算不要溢出
最後,祝C語言編程愉快~
##愛硬體,愛匯編##

⑻ 請問用C語言編寫程序的格式是什麼

如:

1.#include

引入頭文件(主要引入函數庫,如stdio.h;數學函數」)

2. int main(void ) {

主函數必須是小寫的(程序唯一入口,前面的int、void等都可省略,但「括弧」不能。大括弧內包含的內容為程序主體」

Int num = 10

3.printf(「會好的」);

Printf(「我今年%d歲了\n」,num);
「\n:表示換行;%d表示在這里帶入定義的函數num =
10,所以後面必須跟『num』這個標識符」

}

首先,在程序中注意一些小問題。

1.程序要在英文輸入法的界面輸入,不然程序會報警。

2.程序的格式要有一定的層次關系。

3.在定義函數(標識符)時注意不要選擇了關鍵字。最好在「=」兩邊都空一格。

4.在定義函數時注意數據類型的取值范圍。如:

整型
[signed]int
-2147483648~+2147483648
無符號整型
unsigned[int]
0~4294967295
短整型 short
[int] -32768~32768
無符號短整型
unsigned
short[int]
0~65535
長整型 Long
int
-2147483648~+2147483648
無符號長整型 unsigned
[int]
0~4294967295
字元型[signed]
char
-128~+127
無符號字元型 unsigned
char
0~255
單精度
float
3.4 x 10^(-38)~ 3.4 x
10^(+38)
雙精度
double
1.7 x 10^(-308)~ 1.7 x
10^(+308)
長雙精度 long
double 1.7
x 10^(-308)~ 1.7 x
10(+308)

⑼ 學習C語言應注意哪些方面其重點和難點是哪些

第一個難點 C語言的數據類型 關於C語言數據類型,不難理解但難於運用。這就要求同學們在學習的時候記住常用的一些數據類型的特徵(第一次作業第2題內容)。 第二個難點 C語言的運算符和運算順序 1.C語言的運算功能十分豐富,運算種類遠多於其它程序設計語言。大家在學習的時候不僅要注意某些運算符的運演算法則,還要注意運算規則(注意事項)。 2.當多種不同運算組成一個運算表達式,即一個運算式中出現多種運算符時,運算的優先順序和結合規則顯得十分重要。 第三個難點 C語言的三種簡單程序結構 其實,C語言的前二個程序結構不是難點,三種結構里難點應在於循環的嵌套用法。 (1)關於順序結構 這種結構的程序比較簡單,就是按照語句的排列順序依次執行的機制。順序結構的執行順序是自上而下,依次執行,因此編寫程序也必須遵守這一規定,否則你的程序執行結果就不對。 語句也是多分支選擇語句,又稱為多路開關語句,到底執行哪一塊,取決於開關設置,也就是表達式的值與常量表達式相匹配的那一路,它不同if—else 語句,它的所有分支都是並列的,程序執行時,由第一分支開始查找,如果相匹配,執行其後的塊,接著執行第2分支,第3分支……的塊,直到遇到break語句;如果不匹配,查找下一個分支是否匹配。 (3)關於循環結構: 循環結構可以減少源程序重復書寫的工作量,用來描述重復執行某段演算法的問題,這是程序設計中最能發揮計算機特長的程序結構,C語言中提供四種循環,即goto循環、while循環、do –while循環和for循環。 四種循環可以用來處理同一問題,一般情況下它們可以互相代替換,但一般不提昌用goto循環,所以下面我們重點講解另外的三種循環。 常用的三種循環結構學習的重點在於弄清它們相同與不同之處,以便在不同場合下使用,大家好好看一下書中三種循環的格式和執行順序,如何替換使用,如把while循環的例題,用for語句重新編寫一個程序,這樣能更好地理解它們的作用。 注意:在while和do—while循環體內和for 循環中的第3語句中,應包含趨於結束的語句(如i++,i--),否則就可能成了一個死循環,這也是初學者的一個常見錯誤。 下面我們來討論下這三種循環的異同之處: 用while和do—while循環時,循環變數的初始化的操作應在循環體之前,而for循環是在語句1中進行的;while 循環和for循環都是先判斷表達式,後執行循環體,而do—while循環是先執行循環體後判斷表達式,也就是說do—while的循環體最少被執行一次,而while 循環和for就不一定了。這三種循環都可以用break語句跳出循環,用continue語句結束本次循環,而goto語句與if構成的循環,不能用break和 continue語句進行控制。 這三種結構並不是彼此孤立的,在循環中可能出現分支、順序結構,分支中也可能出現循環、順序結構而把循環、分支看成一個語句,它又是構成順序結構的一個元素,因此這三種結構相互結合,就能實現各種演算法,設計出解題程序,但若是很大的題目,這樣編出的程序往往很長,重復結構多,並且可閱讀性差,因此我們常將C程序設計成模塊化結構。

⑽ 說出幾條編寫規范C語言需要注意的問題,有助於自己或別人以後讀懂你編的程序

1. 基本要求
1.1 程序結構清析,簡單易懂,單個函數的程序行數不得超過100行。
1.2 打算干什麼,要簡單,直接了當,代碼精簡,避免垃圾程序。
1.3 盡量使用標准庫函數和公共函數。
1.4 不要隨意定義全局變數,盡量使用局部變數。
1.5 使用括弧以避免二義性。
2.可讀性要求
2.1 可讀性第一,效率第二。
2.2 保持注釋與代碼完全一致。
2.3 每個源程序文件,都有文件頭說明,說明規格見規范。
2.4 每個函數,都有函數頭說明,說明規格見規范。
2.5 主要變數(結構、聯合、類或對象)定義或引用時,注釋能反映其含義。
2.7 常量定義(DEFINE)有相應說明。
2.8 處理過程的每個階段都有相關注釋說明。
2.9 在典型演算法前都有注釋。
2.10 利用縮進來顯示程序的邏輯結構,縮進量一致並以Tab鍵為單位,定義Tab為 6個位元組。
2.11 循環、分支層次不要超過五層。
2.12 注釋可以與語句在同一行,也可以在上行。
2.13 空行和空白字元也是一種特殊注釋。
2.14 一目瞭然的語句不加註釋。
2.15 注釋的作用范圍可以為:定義、引用、條件分支以及一段代碼。
2.16 注釋行數(不包括程序頭和函數頭說明部份)應占總行數的 1/5 到 1/3 。
3. 結構化要求
3.1 禁止出現兩條等價的支路。
3.2 禁止GOTO語句。
3.3 用 IF 語句來強調只執行兩組語句中的一組。禁止 ELSE GOTO 和 ELSE RETURN。
3.4 用 CASE 實現多路分支。
3.5 避免從循環引出多個出口。
3.6 函數只有一個出口。
3.7 不使用條件賦值語句。
3.8 避免不必要的分支。
3.9 不要輕易用條件分支去替換邏輯表達式。
4. 正確性與容錯性要求
4.1 程序首先是正確,其次是優美
4.2 無法證明你的程序沒有錯誤,因此在編寫完一段程序後,應先回頭檢查。
4.3 改一個錯誤時可能產生新的錯誤,因此在修改前首先考慮對其它程序的影響。
4.4 所有變數在調用前必須被初始化。
4.5 對所有的用戶輸入,必須進行合法性檢查。
4.6 不要比較浮點數的相等,如: 10.0 * 0.1 == 1.0 , 不可靠
4.7 程序與環境或狀態發生關系時,必須主動去處理發生的意外事件,如文件能否
邏輯鎖定、列印機是否聯機等。
4.8 單元測試也是編程的一部份,提交聯調測試的程序必須通過單元測試。
5. 可重用性要求
5.1 重復使用的完成相對獨立功能的演算法或代碼應抽象為公共控制項或類。
5.2 公共控制項或類應考慮OO思想,減少外界聯系,考慮獨立性或封裝性。
5.3 公共控制項或類應建立使用模板。