C語言是國內外廣泛使用的計算機編程語言,是高等學校理工科專業(yè)學生必須掌握的一門計算機程序設計語言。本書是一本集知識性和實用性的C語言程序設計教材,全書由9章組成,講述了C語言程序的基本結構、運算符與表達式、常見基本算法、流程控制語句、函數(shù)、數(shù)組、指針、預編譯命令、結構體與共用體、文件的基本操作等,同時還講述了程序設計的基本思想和規(guī)范,并在附錄中提供了上機實驗內容。 本書大部分章節(jié)都是從實際問題導引,在分析問題的過程中逐步引出知識點,形成較為清晰的思路和知識主線,每章的案例內容與實踐緊密結合,力爭達到舉一反三和融會貫通,主要章節(jié)提供了綜合應用案例分析,可以使讀者加深對C語言程序設計知識的理解。本書配有相應的學習指導書、多媒體課件、習題代碼、習題解答以及工程認證的教學大綱,既可作為計算機專業(yè)和其他理工科專業(yè)C語言程序設計課程的教材,也可作為計算機等級考試和自學人員的參考書。
隨著計算機技術的飛速發(fā)展,計算機對社會的進步產生了巨大的影響。計算機教育已經是大學教育的重要組成部分,程序設計語言即為打開計算機世界大門的鑰匙。為此,眾多高校都將C語言程序設計作為本科生的基礎課程。C語言程序設計方法既是要求學生必須掌握的基礎方法,也是進行計算思維方法的訓練、問題的抽象表示和解決的重要工具。在C語言程序設計的教學過程中,教師通常根據(jù)語言的語法體系展開教學活動,以語法、程序結構等作為教學的重點。在C語言的學習過程中,學習者雖然對C語言的各種語法結構和程序基本結構都能基本掌握,但對于如何從問題出發(fā),進行抽象分析、設計求解方法等方面涉及不足,從而在實際應用中解決問題時,還是感覺無從下手,力不從心。這就要求程序設計語言的教學工作重點不僅要求學生掌握語言的語法結構和程序結構,還需要提高學生的語言應用能力,提高對問題的抽象分析能力和語言的表達能力。對于程序設計語言的學習,不僅僅需要了解語言的語法細節(jié),還需要不斷深入地學習和理解基本的算法和計算形式,利用基本的算法解決一些身邊的實際問題,從而提高語言的應用能力。在多年的教學實踐中,我們對學生進一步學習的愿望有較為深刻的理解。為了更加有效地開展C語言程序設計的教學工作,不斷提高學生對程序設計認識、實踐與應用的能力,作者在長期的C語言課程教學過程中,努力探索、大膽實踐,在注重理論知識教學的同時,不斷強化實驗教學環(huán)節(jié),形成了一整套行之有效的教學方法,并確立了具有自身特色的教學思想。
作為長期教學與實踐經驗的總結,筆者于2011年編寫并出版了《C語言程序設計教程》。從第1版至今,已經走過11個年頭,《C語言程序設計教程》也從第1版改版到現(xiàn)在的第3版,在改版的過程中得到了眾多師生的支持和厚愛,并提出了很多寶貴的建議和意見,我們在第2版的基礎上,根據(jù)使用教材的教師反饋意見和學生進一步學習和實踐的需求,重新改寫部分章節(jié),調整了部分例題和習題,形成了第3版。
第3版不僅介紹了C語言的基本語法和程序結構,對C 語言中容易混淆和不易理解的知識點進行深入分析解釋,同時介紹了程序設計的基本方法,總結了程序設計中的常用方法,在重要章節(jié)設計了問題引入與分析環(huán)節(jié),引導學習者帶著問題學習C語言的知識點,進而編寫出求解問題的完整程序,突出以問題為中心的講授方式,并以案例驅動的方式,使學生帶著問題去學習。另外,第3版還講述了Visual Studio 2019 C 、CodeBlocks、DevC 環(huán)境下編輯調試C語言程序的方法。在本版中進一步將算法與數(shù)據(jù)結構緊密聯(lián)系在一起,突出程序設計的基本方法。在例題的講解中,突出了問題的難易層次,引導學習者遵循著分析問題設計算法編寫代碼的步驟,學習程序設計的方法和技巧,突出實踐編程能力。在練習題的設計上,不僅滿足全國計算機等級考試的需求,而且強化實踐動手的能力。
本書系統(tǒng)、全面地介紹了C語言程序設計的方法。共分9 章。第1章主要介紹C語言的發(fā)展歷史和基本程序結構; 第2章主要講述數(shù)據(jù)類型、運算符和表達式; 第3章在介紹常用的基本算法的基礎上,重點討論程序的控制流程和程序的基本結構; 第4章討論函數(shù); 第5章介紹數(shù)組; 第6章重點說明指針及指針數(shù)據(jù)的使用方法; 第7章講述預處編譯命令; 第8章引入結構體與共用體; 第9章重點介紹文件及其操作等內容。本書內容全面,結構合理,通過實例對C語言的語法要點進行了詳盡的闡述。
本書既可供C語言初學者學習使用,也可供具有一定經驗的軟件開發(fā)人員學習參考。
感謝南京信息工程大學C語言課程組的老師,為本書的改版提出了具有指導意義的幫助和許多富有建設性的意見與建議,并在書稿校對等過程中做了大量工作。為此,我們深表謝意。
另外,本書的出版不僅得到南京信息工程大學教務處教材基金的大力支持,而且得到清華大學出版社的支持與幫助,在此一并表示感謝!
對于本書的編寫,我們深感責任重大。盡管希望盡己所能,但因水平所限,書中難免有不足之處,懇請廣大同行和讀者批評指正。
編者
2021年8月
第1章概述
1.1C語言的發(fā)展歷史
1.1.1C語言的發(fā)展
1.1.2C語言的主要標準
1.2C語言程序的結構
1.3C語言程序的特點
1.4C語言程序的開發(fā)方法
1.4.1程序
1.4.2程序設計和程序設計語言
1.4.3程序開發(fā)方法
1.5Visual Studio 2019環(huán)境下C語言程序上機調試
1.5.1編寫源程序
1.5.2源程序文件編譯和運行
1.6DevC 環(huán)境下C語言程序上機調試
1.6.1DevC 編輯C語言源程序
1.6.2編譯和運行C程序
1.7CodeBlocks環(huán)境下C語言程序上機調試
1.7.1CodeBlocks編輯C語言源程序
1.7.2C程序的編譯和運行
本章小結
習題1
第2章數(shù)據(jù)類型、運算符和表達式
2.1問題引導
2.2常量與變量
2.2.1標識符命名
2.2.2常量
2.2.3變量
2.3整型數(shù)據(jù)
2.3.1整型常量
2.3.2整型變量
2.4浮點型數(shù)據(jù)
2.4.1浮點常量
2.4.2浮點變量
目錄
C語言程序設計教程(第3版)
2.5字符型數(shù)據(jù)
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運算符優(yōu)先級的小結
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.4三種基本結構
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循環(huán)語句
3.5.1while 循環(huán)語句
3.5.2do…while 循環(huán)語句
3.5.3for循環(huán)語句
3.5.4循環(huán)語句的嵌套
3.6轉移語句
3.6.1goto 語句
3.6.2continue和break語句
3.7綜合應用
本章小結
習題3
第4章函數(shù)
4.1問題導引
4.2函數(shù)分類
4.3函數(shù)的聲明和定義
4.3.1函數(shù)的類型說明
4.3.2函數(shù)的聲明
4.3.3函數(shù)的定義
4.4函數(shù)的參數(shù)和返回值
4.4.1函數(shù)的形式參數(shù)和實際參數(shù)
4.4.2函數(shù)的返回值
4.5函數(shù)的調用
4.5.1函數(shù)調用的一般形式
4.5.2函數(shù)調用方式
4.5.3函數(shù)的嵌套調用
4.5.4函數(shù)的遞歸調用
4.6局部變量和全局變量
4.6.1局部變量
4.6.2全局變量
4.7變量的存儲類型
4.7.1動態(tài)存儲與靜態(tài)存儲
4.7.2auto變量
4.7.3static變量
4.7.4register變量
4.7.5用extern聲明外部變量
4.8內部函數(shù)和外部函數(shù)
4.8.1內部函數(shù)
4.8.2外部函數(shù)
4.9綜合應用
本章小結
習題4
第5章數(shù)組
5.1問題引導
5.2一維數(shù)組
5.2.1一維數(shù)組的定義
5.2.2一維數(shù)組元素的引用
5.2.3一維數(shù)組的初始化
5.2.4利用一維數(shù)組解決問題
5.2.5一維數(shù)組作為函數(shù)參數(shù)
5.2.6一維數(shù)組應用
5.3二維數(shù)組
5.3.1二維數(shù)組的聲明
5.3.2二維數(shù)組的初始化
5.3.3二維數(shù)組應用
5.4字符數(shù)組
5.4.1字符數(shù)組的定義
5.4.2字符數(shù)組元素的引用
5.4.3字符數(shù)組的初始化
5.4.4字符串的表示
5.4.5字符數(shù)組的輸入與輸出
5.4.6常用的字符串處理函數(shù)
5.4.7字符數(shù)組應用
5.5多維數(shù)組
5.5.1多維數(shù)組的定義
5.5.2多維數(shù)組的初始化
5.6變長數(shù)組
5.6.1不指定維長的數(shù)組初始化
5.6.2可變長數(shù)組及定義
5.7數(shù)組應用舉例
本章小結
習題5
第6章指針
6.1指針與指針變量
6.2指針變量的定義與引用
6.2.1指針變量的定義
6.2.2指針變量的引用
6.3指針運算符與指針表達式
6.3.1與指針運算相關的運算符與表達式
6.3.2指針變量作函數(shù)的參數(shù)
6.3.3返回指針的函數(shù)
6.4指針與數(shù)組
6.4.1指針與一維數(shù)組
6.4.2指針與二維數(shù)組
6.4.3數(shù)組指針作函數(shù)參數(shù)
6.4.4指針與字符串
6.5指針數(shù)組
6.6指針的地址分配
6.7指向指針的指針變量
6.8指向函數(shù)的指針變量
6.9main()函數(shù)的參數(shù)
6.10指針的應用
本章小結
習題6
第7章預處理命令
7.1概述
7.2宏定義
7.2.1無參宏定義
7.2.2帶參宏定義
7.3include命令
7.4條件編譯
本章小結
習題7
第8章結構體與共用體
8.1問題引導
8.2結構體的聲明和結構體變量定義
8.2.1結構體的聲明
8.2.2結構體變量的聲明
8.2.3結構體成員的引用
8.2.4結構體變量的賦值
8.3結構體數(shù)組和結構體指針
8.3.1結構體數(shù)組的定義和數(shù)組元素的引用
8.3.2結構體數(shù)組元素的賦值及引用
8.3.3指向結構體變量的指針
8.3.4結構體數(shù)組和結構體指針的應用
8.4結構體與函數(shù)
8.4.1結構體變量作為函數(shù)參數(shù)
8.4.2結構體數(shù)組和指向結構體的指針變量作為函數(shù)參數(shù)
8.4.3函數(shù)的返回值是結構體類型
8.5鏈表及其應用
8.5.1鏈表結點的定義
8.5.2鏈表的建立
8.5.3鏈表的插入
8.5.4鏈表的刪除
8.6共用體
8.6.1共用體的定義
8.6.2共用體變量的引用
8.6.3共用體的應用
8.7枚舉類型
8.7.1枚舉類型的定義和枚舉變量的說明
8.7.2枚舉類型變量的賦值和使用
8.8類型定義符typedef
8.9位段
8.9.1位域的定義和位域變量的說明
8.9.2位域的使用
8.10結構體的綜合應用
本章小結
習題8
第9章文件系統(tǒng)
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文件系統(tǒng)應用舉例
本章小結
習題9
附錄A實驗項目
附錄B常用字符與ASCII碼對應表
附錄C運算符優(yōu)先級和結合性
附錄DC語言關鍵字
附錄EC語言常用函數(shù)表
參考文獻