官术网_书友最值得收藏!

1.3 分析C語言程序的結(jié)構(gòu)

img

大型的C語言程序就像一輛汽車,由各個零件組成,零件完美組合才能使汽車跑起來,這需要汽車組裝工非常了解汽車各個零件的功能。在編寫C語言程序時,程序員就相當(dāng)于汽車組裝工,需要知道C語言程序的結(jié)構(gòu),每行代碼的作用。

1.3.1 頭文件

萬事從“頭”開始,就像汽車的頭部,包括車燈、車牌及車品牌名等,如圖1.23所示。

img

圖1.23 汽車的頭部

C語言程序也有頭文件,頭文件就像人的大腦,里面記錄了許多天生就存在、不需要記憶的函數(shù)庫。函數(shù)庫就是函數(shù)的倉庫,只要引用某個函數(shù)庫,該函數(shù)庫中的函數(shù)就可以隨便使用。例如,引入stdio.h函數(shù)庫,代碼如下:

img

1.#include

#include是使用頭文件的命令,是頭文件的重要組成部分。“#”表示預(yù)處理命令;“include”是包括、計入的意思,也就是包括后面的函數(shù)庫。“include”后面的函數(shù)庫名稱用英文半角格式的尖括號“〈〉”或英文半角格式的雙引號“""”括起來。例如:

img

這兩種頭文件表示方法都是正確的,二者之間的區(qū)別如下:

●如果使用尖括號,那么系統(tǒng)會到存儲C語言函數(shù)庫的目錄中尋找要包含的頭文件。這是標(biāo)準(zhǔn)方式;

●如果使用雙引號,那么系統(tǒng)會先在用戶當(dāng)前目錄中尋找要包含的頭文件,如果找不到,那么再到存儲C語言函數(shù)庫的目錄中尋找要包含的頭文件。

2.stdio.h

stdio.h是內(nèi)存空間中的函數(shù)庫之一,是C語言中的輸入/輸出函數(shù)庫,包含各種各樣的輸入/輸出函數(shù)(如printf()、gets()、putchar()函數(shù)等),所以在進(jìn)行輸入或輸出操作時都需要使用這個函數(shù)庫。

學(xué)習(xí)筆記

C語言中除了stdio.h函數(shù)庫,還有很多函數(shù)庫,具體函數(shù)庫及其包含的函數(shù)可以參考相關(guān)函數(shù)手冊。

1.3.2 主函數(shù)

構(gòu)成C語言程序的基本單位是函數(shù)。在眾多函數(shù)中,需要從一個函數(shù)打入程序內(nèi)部,這個函數(shù)就是主函數(shù),即main()函數(shù)。main()函數(shù)相當(dāng)于汽車的車門,要駕駛汽車,首先需要從車門進(jìn)入駕駛艙,也就是說,main()函數(shù)是可執(zhí)行程序的入口函數(shù),程序都是從main()函數(shù)開始執(zhí)行的。main()函數(shù)的語法格式如下:

img

main()函數(shù)前面的int表示主函數(shù)的返回類型,也就是需要返回一個整型數(shù)據(jù),而程序的最后是return 0,說明0是函數(shù)的返回值。return 0是返回系統(tǒng)操作,表示程序正常退出。return語句通常寫在程序的最后,表示這個程序結(jié)束了。

主函數(shù)可以不帶參數(shù),也可以帶參數(shù),如果使用帶參數(shù)形式,那么需要有兩個參數(shù),第一個參數(shù)是int型,表示命令行中的字符串?dāng)?shù),按照習(xí)慣(不是必須),將參數(shù)名稱定義成argc(Argument Count);第二個參數(shù)是字符串型,表示一個指向字符串的指針數(shù)組,按照習(xí)慣(不是必須),將參數(shù)名稱定義為argv(Argument Value)。

1.3.3 輸出函數(shù)

輸出是從內(nèi)部到外部的傳遞過程。輸出設(shè)備的種類有很多,如圖1.24所示,這些輸出設(shè)備輸出的東西我們能看得見。

img

圖1.24 輸出設(shè)備

C語言程序也是一樣,代碼在計算機內(nèi)部進(jìn)行編譯,但是編譯過程我們看不到,只有將編譯結(jié)果輸出到外部,我們才能看到。C語言程序需要一個媒介輸出,即輸出函數(shù)——putchar()函數(shù)、puts()函數(shù)及printf()函數(shù)。

1.putchar()函數(shù)

putchar()函數(shù)每次只能輸出單個字符,該函數(shù)是stdio.h函數(shù)庫中的函數(shù),它的語法格式如下:

img

其中的參數(shù)ch是要輸出的字符,可以是字符型或整型變量,也可以是常量。例如:

img

學(xué)習(xí)筆記

從這3行代碼中可以看出,單個字符使用的是英文半角格式的單引號“''”。

putchar()函數(shù)的另一種形式是定義字符型變量并賦值,然后輸出該字符。例如,利用putchar()函數(shù)輸出字符拼成“小豬”的表情,具體代碼如下(實例內(nèi)容參考配套資源中的源碼):

img

運行上述程序,運行結(jié)果如圖1.25所示。

img

圖1.25 輸出“小豬”表情

學(xué)習(xí)筆記

char是數(shù)據(jù)類型之一,表示字符型,具體知識將在第二章講解;變量賦值是利用“=”賦值,表示將等號右側(cè)的值賦給等號左側(cè)的變量。

2.puts()函數(shù)

puts()函數(shù)一次可以輸出多個字符,主要用于輸出一個字符串,它也是stdio.h函數(shù)庫中的函數(shù),它的語法格式如下:

img

其中,字符指針變量str是形式參數(shù),主要用于接收要輸出的字符串。例如,使用puts()函數(shù)輸出一個字符串常量,代碼如下:

img

這行代碼可以輸出一個字符串,之后會自動進(jìn)行換行操作。這與printf()函數(shù)(下面講解具體用法)有所不同,在printf()函數(shù)中進(jìn)行換行時,要在字符串中添加轉(zhuǎn)義字符“\n”。puts()函數(shù)會在字符串中判斷“\0”結(jié)束符,在遇到“\0”結(jié)束符后,后面的字符不再輸出,并且自動換行。例如:

img

在加上“\0”結(jié)束符后,puts()函數(shù)輸出的字符串就變成了“Welcome”。

學(xué)習(xí)筆記

●字符串使用的是英文半角格式的雙引號“""”。

●編譯器會在字符串常量的末尾添加結(jié)束符“\0”,因此puts()函數(shù)會在輸出字符串常量后自動進(jìn)行換行操作。

3.printf()函數(shù)

printf()函數(shù)是控制格式輸出函數(shù),它也是stdio.h函數(shù)庫中的函數(shù),它的語法格式如下:

img

1)格式控制。

格式控制是用雙引號括起來的字符串,又稱為轉(zhuǎn)換控制字符串,包括格式字符和普通字符共兩種字符。

●格式字符主要用于進(jìn)行格式說明,作用是將數(shù)據(jù)轉(zhuǎn)換為指定的格式輸出。格式字符是以“%”字符開頭的。

●普通字符是需要原樣輸出的字符,包括雙引號內(nèi)的逗號、空格和換行符。

2)輸出列表。

輸出列表中列出的是要輸出的數(shù)據(jù),可以是變量,也可以是表達(dá)式。

例如:

img

運行以上代碼,輸出結(jié)果為“521 I Love You”。在格式控制的雙引號中的字符是“%d I Love You”,其中的“I Love You”字符串中的字符是普通字符,而“%d”是格式字符,表示輸出后面的iInt表示的數(shù)據(jù)。

printf()函數(shù)常用的格式字符如表1.1所示。

表1.1 printf()函數(shù)常用的格式字符

img

1.3.4 輸入函數(shù)

輸入是從外部到內(nèi)部的傳遞過程。C語言程序使用輸入函數(shù)實現(xiàn)輸入功能。C語言中的輸入函數(shù)有g(shù)etchar()函數(shù)、gets()函數(shù)及scanf()函數(shù)。

1.getchar()函數(shù)

getchar()函數(shù)每次只能從終端(輸入設(shè)備)輸入一個字符,該函數(shù)是stdio.h函數(shù)庫中的函數(shù),它的語法格式如下:

img

getchar()函數(shù)沒有參數(shù),該函數(shù)的值就是從輸入設(shè)備得到的字符。例如,從輸入設(shè)備得到一個字符,將其賦給字符變量cChar,代碼如下:

img

學(xué)習(xí)筆記

getchar()函數(shù)每次只能接收一個字符。getchar()函數(shù)得到的字符可以賦給一個字符變量或整型變量,也可以不賦給任何變量,還可以作為表達(dá)式的一部分。例如,“putchar(getchar());”表示將getchar()函數(shù)作為putchar()函數(shù)的參數(shù),getchar()函數(shù)從輸入設(shè)備得到字符,然后putchar()函數(shù)將字符輸出。

例如,使用getchar()函數(shù)輸入一個小寫字母,輸出對應(yīng)的大寫字母,具體代碼如下(實例內(nèi)容參考配套資源中的源碼):

img
img

運行上述程序,運行結(jié)果如圖1.26所示。

img

圖1.26 將輸入的小寫字母轉(zhuǎn)換為大寫字母

學(xué)習(xí)筆記

小寫字母的ASCII碼值比大寫字母的ASCII碼值大32。例如,小寫字母a的ASCII碼值是95,將數(shù)值95減去32得到數(shù)值65,ASCII碼值65對應(yīng)的是大寫字母A。

2.gets()函數(shù)

gets()函數(shù)主要用于獲取用戶從終端(輸入設(shè)備)輸入的一個字符串,它也是stdio.h函數(shù)庫中的函數(shù),它的語法格式如下:

img

其中,字符指針變量str是形式參數(shù),主要用于存儲讀取的字符串。在讀取字符串的過程中,當(dāng)出現(xiàn)新的一行時停止讀取。新的一行的換行字符會轉(zhuǎn)換為字符串中的結(jié)束符“\0”。

例如,前面已經(jīng)定義了字符數(shù)組變量cString,使用gets()函數(shù)獲取輸入字符數(shù)組的方式如下:

img

3.scanf()函數(shù)

scanf()函數(shù)主要用于按照指定的格式接收用戶從終端(輸入設(shè)備)輸入的數(shù)據(jù),并且將輸入的數(shù)據(jù)存儲于指定的變量中,它也是stdio.h函數(shù)庫中的函數(shù),它的語法格式如下:

img

scanf()函數(shù)的格式控制與printf()函數(shù)的格式控制相同。地址列表中的地址是接收數(shù)據(jù)變量的地址。例如,得到一個整型數(shù)據(jù),具體代碼如下:

img

在這一行代碼中,“&”符號表示取iInt變量的地址。在變量前加“&”符號,表示取該變量的地址。

學(xué)習(xí)筆記

scanf()函數(shù)在讀取數(shù)據(jù)時不檢查邊界,因此Microsoft公司的Visual Studio開發(fā)工具提供了scanf_s()函數(shù),它的功能與scanf()函數(shù)相同,Visual Studio開發(fā)工具認(rèn)為scanf_s()函數(shù)更安全。

主站蜘蛛池模板: 新田县| 莲花县| 宁安市| 山东省| 珠海市| 南阳市| 南皮县| 五台县| 澜沧| 阿拉善盟| 高阳县| 高雄县| 公安县| 朝阳县| 三河市| 剑川县| 澄迈县| 霍山县| 洛隆县| 徐汇区| 尤溪县| 民和| 修武县| 巴林左旗| 扶风县| 丽水市| 广南县| 无为县| 大埔县| 革吉县| 玛纳斯县| 泰和县| 呈贡县| 怀来县| 桓台县| 子长县| 巴里| 永登县| 花莲市| 锡林浩特市| 澄城县|