本節書摘來自華章出版社《c語言程式設計與實踐(第2版)》一書中的第2章,第2.1節,作者:淩雲等著,更多章節内容可以通路雲栖社群“華章計算機”公衆号檢視
本章主要介紹c語言的基本文法元素,包括變量與表達式、控制流、數組、函數、基本輸入/輸出等。通過學習本章的内容,讀者可以對c語言有一個整體的認識,并能編寫簡單的小程式。
例2-1中程式的功能是列印出餘弦函數??對應的離散值表,其中x在一個函數周期(0?~360?)内變化,列印結果如圖2-1所示。我們可以據此拟合出餘弦函數曲線。

例2-1 列印餘弦函數的離散值表。
c程式中包含一個或多個函數,它們是c程式的基本子產品。上述這個程式僅包含一個名為main的函數,閱讀該程式,我們将見到c語言中的注釋、聲明、變量、算術表達式、循環以及格式化輸出等基本元素。具體分析如下:
上述程式的第一、二行:
<code>#include <stdio.h></code>
<code>#include <math.h></code>
叫作編譯預處理指令,用于告訴編譯器在本程式中包含标準輸入/輸出庫以及數學函數庫的全部資訊。許多c語言源程式的開始處都包含類似的行。
接下來以“/”開始,以“/”結束的内容稱為注釋。注釋用來對程式有關部分進行必要的說明,可幫助讀者更好地了解程式。此處,它簡單地解釋了該程式的基本功能。包含在“/”與“/”之間的所有内容在編譯時将被編譯器忽略,是以注釋部分并不産生目标代碼,對程式運作不起作用。也就是說,注釋隻是給人看的,而不是讓計算機執行的。注釋可以在程式中自由地使用,可以出現在任何允許出現空格、制表符或換行符的地方。
接下來的這行代碼聲明了一個main函數(又稱為主函數)。在所有c語言的程式中,必須有且隻能有一個main函數,所有c程式總是從main函數開始執行的,而不管main函數在整個程式中的位置如何。int指明了main函數的傳回類型,意味着main函數傳回值的類型是整數。傳回到哪裡呢?傳回給作業系統。函數名後面的圓括号一般包含傳遞給函數的資訊。這個簡單的示例并不需要傳遞任何資訊,是以可以在括号中寫void,也可以為空。
函數要實作的具體功能在由一對花括号構成的函數體中進行描述。
為了實作程式的功能,我們必須定義(或聲明)一些變量來存儲資料,在c語言中,所有變量都必須先定義後使用,定義用于說明變量的屬性,它由一個類型名與若幹個變量名組成,例如,
<code>int x;</code>
<code>double y;</code>
<code>int start, end, step;</code>
其中,類型int表示其後所列變量為整數,與之相對應的,double表示其後所列變量為雙精度浮點數(即可以帶有小數部分的數)。int與double是系統已經定義好的關鍵字。所謂關鍵字,是指系統事先定義好的代表一些特殊含義的名稱。在上述代碼中,變量x、y、start、end、step是由使用者設定的變量名,其中x、start、end、step為整數類型,y為雙精度浮點數類型。
接下來要賦予這些變量具體的數值,在例2-1中,以4個指派語句(也可稱為指派表達式)開始,為變量設定初值。
<code>start = 0;</code>
<code>end = 360;</code>
<code>step = 30;</code>
<code>x = start;</code>
此外,程式中還出現了其他表達式:“x <= end;”為比較表達式;“y = sin(x * 3.1415926 /
180);”為算術表達式;“printf("%3dt%9.6fn"?, x, y);”用于列印整數x和雙精度浮點數y的值,并在兩者之間留一個制表符的空間(t)。
最後一行“return 0;”的作用是在main函數執行結束前将整數0作為函數值,傳回調用函數處,這裡是傳回給調用main函數的作業系統。程式員可以利用操作指令檢查main函數的傳回值,進而判斷main函數是否已正常執行,并據此決定後續的操作。
總體來看,c語言中的表達式事實上就是常量和變量通過各種c語言允許的運算符号進行連接配接。由示例程式可見,c語言的語句必須以“;”結束。