本書系統、全面地介紹了C語言程序設計的方法,共分9章。主要介紹了C語言的基本數據處理、基本輸入輸出、程序流程控制、函數、數組、指針、預編譯命令、結構體與共用體及文件管理等內容。
隨著計算機技術的飛速發展,計算機對社會的進步產生了巨大的影響。計算機教育已經是大學教育的重要組成部分,程序設計語言是打開計算機世界大門的鑰匙。因此,眾多高校都將C語言程序設計作為本科生的基礎課程。C語言程序設計方法既是要求學生必須掌握的基礎方法,也是進行計算思維方法的訓練、問題的抽象表示和解決的重要工具。在C語言程序設計的教學過程中,通常是根據語言的語法體系展開教學活動,以語法、程序結構等作為教學的重點。在語言的學習過程中,雖然學習者對C語言的各種語法結構和程序的基本結構都能基本掌握,可對于如何從問題出發,進行抽象分析、設計求解方法等方面涉及不足,從而在實際應用中解決問題時,還是感覺無從下手,力不從心。這就要求程序設計語言的教學不僅要讓學生掌握語言的語法結構和程序結構,還要提高學生的語言應用能力,提高對問題的抽象分析能力和語言的表達能力。對于程序設計語言的學習,不僅需要了解語言的語法細節,還需要不斷深入地學習和理解基本的算法和計算形式,利用基本的算法解決一些身邊的實際問題,從而提高語言的應用能力。在多年的教學實踐中,我們對學生進一步學習的愿望有較為深刻的理解。為了更加有效地開展C語言程序設計的教學工作,不斷提高學生對程序設計的認識、實踐與應用能力,作者在長期的C語言課程教學過程中努力探索、大膽實踐,在注重理論知識教學的同時,不斷強化實驗教學環節,形成了一整套行之有效的教學方法,并確立了具有自身特色的教學思想。
作為長期教學與實踐經驗的總結,作者編寫并出版了《C語言程序設計教程》(后稱《教程》)。從第1版至今,已經走過5個年頭,《教程》得到了眾多師生的支持和厚愛,他們提出了很多寶貴的建議和意見,我們在第1版的基礎上,根據各方的反饋意見和學生進一步學習和實踐的需求,重新改寫部分章節,形成了《C語言程序設計教程(第2版)》。
在第2版中,不僅介紹了C語言的基本語法和程序結構,對C 語言中容易混淆和不易理解的知識點進行深入分析解釋,同時介紹了程序設計的基本方法,總結了程序設計中的常用方法,在重要章節中設計了問題引入與分析環節,引導學習者帶著問題學習C語言的知識點,進而編寫出求解問題的完整程序,突出以問題為中心的講授方式,并以案例驅動的方式,使學生帶著問題去學習。將算法與數據結構緊密聯系在一起,突出程序設計的基本方法。同時,我們更新了部分例題和練習題。在例題的講解中,突出了問題的難易層次,引導學習者遵循著分析問題→設計算法→編寫代碼的步驟,學習程序設計的方法和技巧,突出實踐編程能力。在練習題的設計上,不僅滿足等級考試的需求,而且強化實踐動手的能力。
本書系統、全面地介紹了C語言程序設計的方法,共分9 章。第1章主要介紹C語言的基本數據表示和處理; 第2章的主要內容是C語言中基本輸入、輸出的實現; 第3章在介紹常用的基本算法的基礎上,注重討論程序的控制流程和程序的基本結構; 第4章討論函數; 第5章介紹數組; 在第6章中重點說明指針及指針數據的使用方法; 第7章講述預處理編譯命令,接著在第8章中引入結構體; 第9章中重點介紹文件及其操作等內容。本書內容全面,結構合理,通過實例對C語言的語法要點進行了詳盡的闡述。
本書既可供C 語言初學者學習使用,也可供有一定經驗的軟件開發人員學習參考。
感謝王定成老師、廖靈芝老師和范春年老師為本書的編寫提出了具有指導意義的幫助,感謝我!癈語言程序設計”課程的課程組教師對本書提出了許多富有建設性的意見與建議,并在文本校對等過程中做了大量工作。
另外,教材的出版不僅得到南京信息工程大學教材教務處教材基金的大力支持,而且得到清華大學出版社的大力支持與幫助,在此一并表示感謝!
對于本書的編寫,我們深感責任重大。盡管希望盡己所能,但因作者水平所限,本書中仍有不足之處,懇請廣大同行和讀者批評指正。
編者
2015年8月
CONTENTS
第1章概述
1.1C語言的發展歷史
1.1.1C語言的發展
1.1.2C語言的主要標準
1.2C語言程序的結構
1.3C語言程序的特點
1.4C語言程序的開發方法
1.4.1程序
1.4.2程序設計和程序設計語言
1.4.3程序開發方法
1.5VC++6.0環境下C語言程序上機調試
1.5.1編寫源程序
1.5.2源程序文件編譯
1.5.3目標文件連接
1.5.4程序執行
1.6DevC++環境下C語言程序上機調試
1.6.1DevC++編輯C源程序
1.6.2編譯和運行C程序
本章小結
習題1
第2章數據類型、運算符和表達式
2.1問題引導
2.2常量與變量
2.2.1標識符命名
2.2.2常量
2.2.3變量
2.3整型數據
2.3.1整型常量
2.3.2整型變量
2.4浮點型數據
2.4.1浮點常量
2.4.2浮點變量
2.5字符型數據
2.5.1字符常量
2.5.2字符串常量
2.5.3轉義字符
2.5.4字符變量
2.6運算符和表達式
2.6.1算術運算符
2.6.2自增和自減運算符
2.6.3關系運算符和邏輯運算符
2.6.4位操作符
2.6.5條件運算符
2.6.6逗號操作符
2.6.7賦值運算符
2.6.8復合賦值運算符
2.6.9關于優先級的小結
2.7表達式求值
2.7.1算術表達式
2.7.2賦值表達式
2.7.3關系表達式和邏輯表達式
本章小結
習題2
第3章算法和控制語句
3.1問題引導
3.1.1算法的概念
3.1.2算法的表示
3.1.3算法舉例
3.1.43種基本結構
3.2C語言的標準輸入和輸出
3.2.1格式化輸入輸出
3.2.2其他輸入輸出
3.2.3C語言語句
3.2.4順序結構程序設計
3.3條件語句
3.3.1if語句
3.3.2if…else語句
3.3.3if…else if語句
3.3.4條件語句的嵌套
3.3.5條件語句的應用
3.4多分支語句
3.4.1switch多分支語句
3.4.2多分支語句的嵌套
3.4.3多分支語句應用
3.5循環語句
3.5.1while循環語句
3.5.2do…while循環語句
3.5.3for循環語句
3.5.4循環語句的嵌套
3.6轉移語句
3.6.1goto語句
3.6.2continue和break語句
3.7綜合應用
本章小結
習題3
第4章函數
4.1問題引導
4.2函數概述
4.3函數的聲明和定義
4.3.1函數的類型說明
4.3.2函數的定義
4.4函數的參數和返回值
4.4.1函數的形式參數和實際參數
4.4.2函數的返回值
4.5函數的調用
4.5.1函數調用的一般形式
4.5.2函數調用方式
4.5.3函數的嵌套調用
4.5.4函數的遞歸調用
4.6局部變量和全局變量
4.6.1局部變量
4.6.2全局變量
4.7變量的存儲類型
4.7.1動態存儲與靜態存儲
4.7.2auto變量
4.7.3static變量
4.7.4register變量
4.7.5用extern聲明外部變量
4.8內部函數和外部函數
4.8.1內部函數
4.8.2外部函數
4.9綜合應用
本章小結
習題4
第5章數組
5.1問題引導
5.2一維數組
5.2.1一維數組的定義
5.2.2一維數組元素的引用
5.2.3數組的初始化
5.2.4利用一維數組解決問題
5.2.5向函數傳遞一維數組
5.2.6一維數組應用
5.3二維數組
5.3.1二維數組的聲明
5.3.2二維數組的初始化
5.3.3二維數組應用
5.4字符數組
5.4.1字符數組的定義
5.4.2字符數組元素的引用
5.4.3字符數組元素的初始化
5.4.4字符串的表示
5.4.5字符數組的輸入與輸出
5.4.6字符串處理函數
5.4.7字符數組應用
5.5多維數組
5.5.1多維數組的定義
5.5.2多維數組的初始化
5.6變長數組
5.6.1不指定維長的數據初始化
5.6.2可變長數組及定義
5.7數組應用舉例
本章小結
習題5
第6章指針
6.1指針與指針變量
6.2指針變量的定義與引用
6.2.1指針變量的定義
6.2.2指針變量的引用
6.3指針運算符與指針表達式
6.3.1與指針運算相關的運算符與表達式
6.3.2指針變量作函數的參數
6.3.3返回指針的函數
6.4指針與數組
6.4.1指針與一維數組
6.4.2指針與二維數組
6.4.3數組指針作函數的參數
6.4.4指針與字符數組
6.5指針數組
6.6指針的地址分配
6.7指向指針的指針
6.8指向函數的指針變量
6.9main函數的參數
本章小結
習題6
第7章預編譯命令
7.1概述
7.1.1宏定義
7.1.2無參宏定義
7.1.3帶參宏定義
7.2include命令
7.3條件編譯
本章小結
習題7
第8章結構體與共用體
8.1問題引導
8.2結構體的聲明和結構體變量定義
8.2.1結構體的聲明
8.2.2結構體變量的聲明
8.2.3結構體成員的引用
8.2.4結構體變量的賦值
8.3結構體數組和結構體指針
8.3.1結構體數組的定義和數組元素的引用
8.3.2結構體數組元素的賦值及引用
8.3.3指向結構體變量的指針
8.3.4結構體數組和結構體指針的應用
8.4結構體與函數
8.4.1結構體變量作為函數參數
8.4.2函數的返回值是結構體類型
8.5鏈表及其應用
8.5.1鏈表結點的定義
8.5.2鏈表的建立
8.5.3鏈表的插入
8.5.4鏈表的刪除
8.6共用體
8.6.1共用體的定義
8.6.2共用體變量的引用
8.7枚舉類型和自定義類型
8.7.1枚舉類型的定義和枚舉變量的說明
8.7.2枚舉類型變量的賦值和使用
8.8類型定義符typedef
8.9位段
8.9.1位域的定義和位域變量的說明
8.9.2位域的使用
8.10結構體的綜合應用
本章小結
習題8
第9章文件系統
9.1文件和流的概念
9.1.1文件的定義
9.1.2流的定義
9.1.3文件的模式
9.2文件的使用
9.2.1文件的打開與關閉
9.2.2文件的讀寫操作
9.2.3文件指針的定位
9.2.4出錯的檢測
9.3文件系統應用舉例
本章小結
習題9
附錄A實驗指導
附錄B常用字符與ASCII碼對應表
附錄C運算符優先級和結合性
附錄DC語言關鍵字
附錄EC語言常用函數表
參考文獻