C語言是一種應用非常廣泛的結構化高級程序設計語言,既適合于編寫應用軟件,又特別適合于編寫系統軟件。《C語言程序設計教程/21世紀高等學校規劃教材·計算機科學與技術》由12章組成,按照循序漸進的原則,詳細地介紹C語言的基本概念和語法規則,同時在難點的講解上力求準確、完整。在此基礎上,通過精選的典型例題分析,使得讀者能夠盡快掌握利用C語言進行程序設計的技巧和方法,特別是,為了使讀者能夠盡快利用C語言編寫大型實用程序,在書中的最后一章詳細分析了一個圖形編輯程序的設計與實現過程,并給出了完整的源程序。 本書是作者根據多年的教學經驗編寫而成的,在內容編排上盡量體現出易學的特點,在文字敘述上力求條理清晰、文字簡潔,以便讀者閱讀。 本書可作為大專院校計算機專業及其相關專業的教材或教學參考書,也可作為自學用書。
C語言是目前應用最為廣泛的計算機高級程序設計語言之一,它短小精悍、功能齊全,是一種結構化程序設計語言,它能夠運行于多種操作系統環境下,既適合于編寫應用軟件,又適合于編寫系統軟件。
作者多年來一直從事C語言的教學工作,同時也利用C語言來開發大型的實際課題,本書的內容就吸收了作者多年的教學經驗和應用C語言的體會,既注重C語言的理論體系,又特別強調C語言的應用。
本書是在多年教學講義的基礎上,廣泛聽取讀者和同行的建議,并參考最新材料經系統整理而成的。本書的主要特點可歸納如下:
(1) 在內容編排上,按照循序漸進的原則,逐步介紹C語言中的基本概念和理論,在章節內容的安排上,盡可能考慮初學者的接受能力,使整個學習過程按照從簡單到復雜的順序進行。
(2) 指針是C語言中的關鍵內容,也是初學者難以理解的部分。本書花費了大量篇幅由淺入深地介紹了指針的基本概念和應用。除了常用的一級指針之外,還詳細地介紹了二級指針、二維數組與指針、二維數組與函數以及對復雜定義形式的分析等比較深奧的內容,并給出了每種復雜定義形式的具體應用過程。通過對這些內容的學習,能夠使讀者完整而準確地掌握C語言中的精髓內容,從而能夠有效地提高讀者的語言運用能力和程序設計技巧。
(3) 在講授C語言基本理論的基礎上,著重強調了C語言的應用。書中沒有深奧的理論和算法,在例題中出現的每一個算法,都給出了比較詳細的解釋,每一章中都包含“應用舉例”一節,其中的例題涉及本章講解的主要內容,有些例題還具有一定的難度,通過閱讀和分析這些例題,能使讀者對本章講授的內容及其應用有一個全面的了解。
(4) 為使讀者能夠盡快掌握利用C語言編寫大型實用程序的方法,在本書的第12章中,詳細介紹了利用C語言編寫的程序規模較大的圖形編輯程序Panda,在該程序中幾乎包含了C語言的各個方面,其中包括菜單設計、圖形處理(圖形輸入和圖形編輯)以及文件管理等,仔細地閱讀和分析此程序,無疑會在短期內提高利用C語言來編寫大型程序的能力。
(5) 每章的最后都附有大量的習題,其中包括程序分析題和編程題,這些習題對于讀者鞏固已學習的內容大有益處。
(6) 在語言的描述上,盡量使用規范化的術語,同時,在文字敘述上力求條理清晰、簡單明了,以利于讀者閱讀。
作者認為,要學好C語言,除了掌握C語言的基本理論之外,還必須要加強實踐環節。本書中的所有例題都在微機上調試通過,讀者可以邊學習邊上機,剛開始時可以調試本書中的例題,待學習一段時間之后,就可以調試自己編寫的程序了,只有這樣,才能加快學習進度,提高學習效率。
由于作者水平有限,經驗不足,書中一定會有不少缺點和錯誤,敬請有關老師、計算機工作者和廣大讀者批評指正。
作者
2015年9月于大連理工大學
第1章緒言
1.1C語言簡介
1.1.1C語言發展簡史
1.1.2C語言的特點
1.2C語言程序的開發步驟
1.3C語言的程序結構
1.4算法的表示
1.4.1算法的流程圖表示法
1.4.2算法的NS流程圖表示法
1.4.3算法的偽代碼表示法
習題
第2章數據、運算符和表達式
2.1基本概念
2.1.1標識符
2.1.2常量
2.1.3變量
2.1.4關鍵字
2.2基本數據類型
2.2.1整型變量及其常量
2.2.2浮點型變量及其常量
2.2.3字符型變量及其常量
2.2.4長整型、短整型和無符號整型
2.2.5類型定義typedef
2.3算術運算符、賦值運算符及其表達式
2.3.1算術運算符和算術表達式
2.3.2賦值運算符和賦值表達式
2.4關系運算符、邏輯運算符及其表達式
2.4.1關系運算符和關系表達式
2.4.2邏輯運算符和邏輯表達式
2.5變量的初始化
2.6不同類型的數據之間的轉換
2.6.1自動類型轉換
2.6.2強制類型轉換
2.7sizeof運算符
2.8應用舉例
習題
第3章數據的輸入和輸出
3.1數據的輸入
3.1.1字符輸入函數getchar
3.1.2格式輸入函數scanf
3.2數據的輸出
3.2.1字符輸出函數putchar
3.2.2格式輸出函數printf
3.3應用舉例
習題
第4章基本語句
4.1結構化程序設計簡介
4.2語句和復合語句
4.3條件語句
4.3.1if語句
4.3.2條件運算符
4.3.3switch語句
4.3.4應用舉例
4.4循環語句
4.4.1while循環語句
4.4.2dowhile循環語句
4.4.3for循環語句
4.4.4break語句和continue語句
4.4.5goto語句
4.4.6逗號運算符和空操作語句
4.4.7應用舉例
習題
第5章數組
5.1一維數組
5.1.1一維數組的定義和引用
5.1.2一維數組元素的初始化
5.2二維數組
5.2.1二維數組的定義和引用
5.2.2二維數組元素的初始化
5.3字符數組和字符串
5.3.1字符數組
5.3.2字符串
5.4應用舉例
習題
第6章函數
6.1函數的概念
6.2函數的定義和調用
6.2.1函數的定義
6.2.2函數的調用
6.3函數的返回值
6.4函數原型
6.5函數的參數及其傳遞方式
6.5.1非數組作為函數參數
6.5.2數組作為函數參數
6.6函數的嵌套調用和遞歸調用
6.6.1函數的嵌套調用
6.6.2函數的遞歸調用
6.7變量的作用域及其存儲類別
6.7.1局部變量及其存儲類別
6.7.2全局變量及其存儲類別
6.8內部函數和外部函數
6.8.1內部函數
6.8.2外部函數
6.9應用舉例
習題
第7章編譯預處理
7.1宏定義
7.2文件包括
7.3條件編譯
7.4應用舉例
習題
第8章結構和聯合
8.1結構類型變量的定義
8.2結構類型變量的引用
8.3結構變量的初始化
8.4結構和函數
8.4.1結構變量作函數參數
8.4.2函數的返回值是結構類型變量
8.5結構和數組
8.5.1結構中包含數組
8.5.2結構數組
8.6結構的嵌套
8.7聯合
8.8枚舉
8.9應用舉例
習題
第9章位運算
9.1二進制位運算
9.2位段
9.3應用舉例
習題
第10章指針
10.1指針的基本概念
10.2指針變量的定義和引用
10.2.1指針變量的定義
10.2.2指針變量的引用
10.3指針和結構
10.3.1指向結構的指針
10.3.2結構中包含指針
10.3.3鏈表
10.3.4二叉樹
10.4指針和數組
10.4.1指向數組元素的指針及其操作
10.4.2數組名和函數參數
10.4.3字符串和指針
10.4.4指針數組
10.4.5指針與++、--運算符
10.5指針和函數
10.5.1指針變量作為函數的參數
10.5.2函數的返回值是指針
10.5.3指向函數的指針
10.5.4命令行參數
10.6二級指針
10.6.1二級指針的基本概念
10.6.2二級指針與指針數組的關系
10.7二維數組與指針
10.7.1指向二維數組的指針定義
10.7.2利用指針訪問二維數組元素
10.8二維數組與函數
10.8.1函數參數是二維數組
10.8.2函數的返回值是指向二維數組的指針
10.9復雜的定義形式
10.10對typedef的進一步說明
10.11應用舉例
習題
第11章文件
11.1文件的基本概念
11.2文件類型指針和文件號
11.3緩沖文件系統
11.3.1文件打開函數fopen
11.3.2文件關閉函數fclose
11.3.3文件讀函數fgetc,fread,fscanf
11.3.4文件寫函數fputc,fwrite,fprintf
11.3.5文件定位函數rewind,fseek,ftell
11.3.6應用舉例
11.4非緩沖文件系統
11.4.1文件打開函數open和文件創建函數creat
11.4.2文件關閉函數close
11.4.3文件讀函數read
11.4.4文件寫函數write
11.4.5文件定位函數lseek、tell
11.4.6應用舉例
習題
第12章C語言綜合應用
12.1圖形編輯程序Panda
12.2圖形庫函數簡介
12.3Panda的數據組織
12.4Panda的實現
12.4.1Panda的菜單設計
12.4.2Panda的圖形處理
12.4.3Panda的文件操作
12.5Panda源程序清單
習題
附錄A標準ASCII字符集
附錄B運算符的優先級及其結合性
附錄CTurbo C集成開發環境簡介
附錄DC語言的巴科斯范式描述