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