int max(x,y); / * 求最大值函數 * /

int x,y;

{

int m;

if(x>y)

m = x;

else

m = y;

return(m); / * 向主程序返回最大值結果 * /

此程序由兩個函數組成,除了主函數main()之外,還有一個計算最大值的函數max()。“int max(x,y)”說明函數的返回值類型為int(整型),函數名字為max,函數的參數為x,y。“int x,y;”說明各參數的類型,“return(m)”將求解結果返回給主函數。

該程序的執行是從main()函數開始,當主函數執行到imax=max(a,b)語句時,控製被傳遞給max()函數,當執行return(m)語句時,則結束max()函數,控製又被傳遞給main()函數,並把max()的計算結果帶給main()函數。當主函數執行結束時,整個程序的執行也就結束了。

1.2.3 C語言程序的結構特點

由上麵幾個簡單的C語言程序實例,可以看出C語言程序的結構有如下幾個特點:

1.C語言程序由一個或多個函數組成

其中必須有一個主函數,主函數名為main。其餘函數的名字由程序設計者自定。

程序的執行是從主函數開始,其他函數都是在開始執行main函數以後,通過函數調用或嵌套調用而得以執行的。主函數是整個程序的控製部分。

主函數以外的其他函數可以是係統提供的庫函數,也可以是用戶根據自己的需要而編製的函數。為了便於程序設計,各種C語言的版本都提供了大量的庫函數,供程序設計者引用。

2.函數組成

C語言函數的定義包括函數說明和函數體兩個部分。函數說明指明函數的類型、屬性、函數名、參數和參數說明等,如例1-3中的max函數的說明部分為:

int max(x,y);

int x,y;

函數體是花括號所括的部分,它包括局部變量的說明語句一組執行語句。每個語句都由分號“;”結束。綜上所述,一般函數的結構如下:

數據類型標識符 函數名(形參表)

形參說明:

{

局部變量說明語句;

執行語句;

}

3.外部說明

在函數定義之外還可包含一個說明部分,該說明部分叫外部說明,它可包括預編譯命令(如例1-3中的#include)、外部變量的說明等。

1.3 C語言程序的編譯和執行

當把C語言程序編寫好之後,就可以在機器上運行它了。我們把編寫好的C語言程序叫C源程序。由於C語言是一種高級程序設計語言,它很容易被人們看懂和接受,但是,對於計算機來說,卻不能接受這種語言,它隻能接受機器語言。為此,首先必須把C語言程序翻譯成相應的機器語言程序,這個工作叫編譯。

1.源文件的編輯

為了編譯C源程序,首先要用係統提供的編輯器建立一個C語言程序的源文件。一個C語言源文件是一個編譯單位,它以文本格式存放在計算機的文件係統中(硬盤上)。源文件名自定,文件的擴展名(或後綴名)為“.c”。例如:

myfile.c

file.c

一個大的C語言程序往往可劃分為若幹模塊,每個模塊由不同的人或小組負責編寫。對每個模塊可建立一個源文件。因此,一個大的C語言程序可包含多個源文件。

2.編譯

源文件建立好後,經檢查無誤後就可進行編譯。編譯是由係統提供的編譯器完成,編譯命令隨係統的不同而異,具體操作時可參考相應的係統手冊。例如,對於Turbo C,一般通過Turbo C的編輯環境界麵中的Compile菜單中的Compile命令進行編譯,編譯器在編譯時對源文件進行語法和語義檢查,並給出所發現的錯誤。用戶可根據錯誤情況,使用編輯器進行修改,然後對修改後的源文件再度編譯。用戶也可以在Compile菜單中選Make命令進行編譯,它能直接生成可執行的文件,此時如果係統發現用戶的程序有語法錯誤,就發出錯誤的參考信息,提示用戶進行錯誤代碼的修改,然後用戶再重新進行編譯。

3.連接編輯

在上述步驟中,若用戶選擇Compile命令進行編譯時,編譯所生成的目標文件(*.obj)是相對模塊,還不能直接執行,必須用連接編輯器把它和其他目標文件以及係統所提供的庫函數進行連接裝配,生成可執行文件存於文件係統中。可執行文件的名字可自由指定,擴展名為“.exe”。如圖1-1所示,是C語言程序的操作過程。

4.執行

執行文件生成後,就可執行它了。若執行的結果達到預想的結果,則說明程序編寫正確。否則,就需進一步檢查修改源程序,重複上述步驟,直至得到正確的運行結果為止。

圖1-1 C語言程序的操作過程

1.4 小 結

(1)C語言的保留字是C語言中具有特定含義和用處的標識符。不能用保留字作變量名或函數名等。保留字都用小寫英文字母表示。

(2)預定義標識符是C語言中的另一類特殊標識符,它們被用作庫函數名,預編譯命令等。這類標識符雖不是保留字,也準許程序設計者重新定義作用戶定義標識符,但是,為了增強程序的可讀性,最好還是不要這樣做。

(3)用戶定義標識符是程序設計者根據需要定義的一類標識符,用於標識變量名、函數名、類型名、符號常數名和文件名等。其構成規則是:

?由英文字母和數字組成,但一定字母或下劃線開頭。

?下劃線“_”起字母作用,它還可用於分隔一個長的用戶定義標識符。

?大小寫英文字母含義不同,習慣上是常數名用大寫,變量名用小寫。

?不要用保留字作為用戶定義的標識符,建議也不要用預定義標識符來定義用戶定義標識符。

?用戶定義標識符的有效長度為8個字符。

(4)C語言程序的結構特點如下:

?它由一個或多個函數所組成,其中隻能有一個主函數,其函數名為main。

?函數由說明和函數體兩部分組成,說明部分用來說明函數的類型、名字、參數和參數說明等。函數體是由一對花括號括起來的程序塊,它包括局部變量的說明語句(如果有的話)和一組可執行語句。每個語句末用分號終結。

?在函數之外還包含一個說明部分,它包含外部變量的定義、說明和預編譯程序命令。可在程序的任何位置加注釋。

(5)在編寫C語言程序時,一定要使書寫的程序具有良好的風格,注意使層次清晰,以增強程序的可讀性和可維護性。

習 題

1.C語言的主要特點有哪些?

2.C語言的主要用途是什麼?它和其他高級語言有什麼不同?

3.C語言程序的結構特點有哪些?

4.編寫一個程序,輸出以下信息:

******************************

** Hello,C Program! **

******************************

5.編寫一個程序,輸入a、b、c三個值,輸出其中最大者。