本書共分10章, 內容包括C語言的基本結構、數據類型及其運算符和表達式、C程序的3種控制結構、數組、函數、指針、結構體和文件。第10章通過一款智能充電機的編程實例, 介紹了C語言在單片機編程中的具體應用。
C語言是國內外廣泛使用的計算機程序設計語言,是高等院校理工科相關專業重要的專業基礎課程。C語言功能豐富、使用靈活方便,程序執行效率高,可移植性好,既可以用來編寫系統程序,又可以用來編寫應用程序,因而越來越受到人們的歡迎。
本書是根據教育部《關于進一步加強高等學校計算機基礎教學的意見》的教學基本要求和高等院校計算機基礎教學改革的需要,結合作者多年講授C語言程序設計課程的教學經驗編寫而成。
本書的教學目標是培養學生的邏輯思維能力和程序設計能力,因此在內容編排上力求重點突出、難點分散,在語言描述上注重概念清晰、通俗易懂,并通過大量的例題分析將理論知識與實踐相結合,以期逐步提高學生編寫程序的能力。
本書是在第1版的基礎上將有些內容進行了整合。從原來的12章改成10章,內容安排如下。
第1章主要介紹C程序的基本結構、C程序的基本要素以及C程序的集成開發環境。
第2章主要介紹運算符和表達式、C語言的基本語句、輸入與輸出函數以及算法的概念。
第3章主要介紹關系運算符、邏輯運算符以及選擇結構控制語句。
第4章主要介紹循環控制語句、循環的嵌套。
第5章主要介紹一維數組、二維數組和字符串。
第6章主要介紹結構化與模塊化程序設計思想、函數的定義與調用、變量的作用域和存儲類別。
第7章主要介紹指針的概念、指針變量的定義以及指針與數組、指針與函數的關系。
第8章主要介紹結構體、鏈表、共用體的定義及應用。
第9章主要介紹數據文件的基本操作函數和使用規則。
第10章通過一款智能充電機的編程實例,介紹C語言在單片機編程中的具體應用。
由于C語言程序設計是一門理論性、實踐性均較強的課程,為了幫助學生掌握有關的基本概念和程序設計方法,每章后面均精心設計了難易適當、題型豐富的習題供學生課后練習。每章的實驗題均包含選擇題、填空題和編程題,可以使學生在反復實踐中提高設計程序和調試程序的能力。本書有對應的課程網站和微信訂閱號,可以觀看部分教學視頻、算法動畫、學習中會遇到的常見問題解答和計算機二級考試的相關資料。
本書由上海電機學院的吉順如主編,計春雷主審。第2版編寫分工:第1章由吉順如、任遠編寫;第2、5、9章及附錄由吉順如編寫;第3章由陶恂編寫;第4章由張艷編寫;第6章由任遠編寫;第7、8章由王中華、吉順如編寫;第10章由曾祥緒編寫。全書由吉順如統稿。
在本書的編寫過程中得到許多教師的幫助,在此表示誠摯的謝意。由于編者水平有限,書中不足之處在所難免,懇請讀者批評指正。
編者
2017年3月
第1章C語言程序設計概述1
1.1C程序簡介1
1.2C程序的結構與書寫格式3
1.3C語言的特點4
1.4C程序的開發過程5
1.5C程序的基本要素6
1.5.1標識符6
1.5.2數據類型、常量和變量7
1.6C程序的集成開發環境11
1.6.1DevC++11
1.6.2Visual Studio 201517
1.7習題27
1.8實驗1熟悉C程序編程環境28
第2章順序結構程序設計31
2.1運算符和表達式31
2.1.1算術運算符和算術表達式31
2.1.2賦值運算符和賦值表達式32
2.1.3逗號運算符和逗號表達式33
2.1.4強制類型轉換運算符34
2.1.5sizeof運算符34
2.1.6不同數據類型的數據間的混合運算35
2.1.7自增、自減運算符36
2.1.8位運算符36
2.2C語言的基本語句37
2.3輸入與輸出函數38
2.3.1格式輸入/輸出函數38
2.3.2字符輸入/輸出函數43
2.4算法簡介44
2.4.1算法的概念44目錄2.4.2算法的特性45
2.4.3算法的表示46
2.5應用舉例48
2.6習題51
2.7實驗2順序結構程序設計53
第3章選擇結構程序設計57
3.1關系運算符和邏輯運算符57
3.1.1關系運算符57
3.1.2邏輯運算符58
3.2選擇結構控制語句59
3.2.1if語句59
3.2.2條件運算符62
3.2.3switch語句63
3.3應用舉例65
3.4習題71
3.5實驗3選擇結構程序設計75
第4章循環結構程序設計79
4.1循環結構控制語句79
4.1.1while循環語句79
4.1.2do...while循環語句80
4.1.3for循環語句82
4.1.4break語句和continue語句83
4.2循環的嵌套85
4.3應用舉例86
4.4習題90
4.5實驗4循環結構程序設計95
第5章數組99
5.1一維數組99
5.1.1一維數組的定義和引用99
5.1.2一維數組的初始化100
5.1.3一維數組的應用舉例101
5.2二維數組104
5.2.1二維數組的定義和引用104
5.2.2二維數組的初始化105
5.2.3二維數組的應用舉例106
5.3字符串109
5.3.1字符串與字符數組109
5.3.2字符串處理函數111
5.4應用舉例115
5.5習題124
5.6實驗5數組程序設計128
第6章函數132
6.1結構化與模塊化程序設計思想132
6.2函數的定義與調用134
6.2.1函數的定義134
6.2.2函數的聲明135
6.2.3函數的調用136
6.2.4函數的參數和返回值138
6.2.5數組名作函數參數139
6.3遞歸函數141
6.4變量的作用域和存儲類別144
6.4.1變量的作用域144
6.4.2變量的存儲類別146
6.5函數與帶參數的宏148
6.6應用舉例149
6.7習題154
6.8實驗6函數程序設計157
第7章指針163
7.1指針概述163
7.1.1指針的概念163
7.1.2指針變量的定義165
7.1.3指針變量的引用165
7.2指針與數組169
7.2.1通過指針引用數組元素170
7.2.2指針與數組名174
7.3指針與字符串176
7.4指針與函數178
7.4.1指針作為函數參數178
7.4.2返回指針值的函數182
7.4.3指向函數的指針184
7.5多級指針186
7.5.1指向指針的指針187
7.5.2指針數組188
7.5.3指向多維數組行的指針193
7.6應用舉例196
7.7指針小結198
7.8習題199
7.9實驗7指針程序設計204
第8章結構體與共用體208
8.1結構體概述208
8.1.1結構體變量的定義和初始化208
8.1.2結構體成員的引用210
8.2結構體數組212
8.3指向結構體的指針214
8.4結構體與函數218
8.5鏈表219
8.5.1動態內存管理220
8.5.2鏈表概述222
8.5.3鏈表的相關操作223
8.6共用體概述230
8.6.1共用體變量的定義和初始化230
8.6.2共用體變量的引用231
8.7類型定義符typedef233
8.8應用舉例236
8.9習題239
8.10實驗8結構體與鏈表程序設計245
第9章文件250
9.1文件概述250
9.2常用文件操作函數251
9.2.1文件的打開與關閉251
9.2.2文件的讀/寫253
9.2.3文件的定位260
9.2.4文件讀/寫中的檢測262
9.3應用舉例262
9.4習題268
9.5實驗9文件程序設計272
第10章單片機C語言編程實例277
10.1功能要求277
10.2硬件線路277
10.3編程分解279
10.3.1充電控制279
10.3.2時鐘中斷280
10.3.3端口操作281
10.4單片機C語言編程小結282
10.5智能充電機完整源代碼283
附錄295
附錄A常用字符與ASCII代碼對照表295
附錄B編譯預處理指令296
附錄C運算符和結合性301
附錄DC庫函數302
附錄EC程序中常見錯誤分析307
參考文獻315