本書全面介紹了C語言的基本概念、基本語法和基本程序結(jié)構(gòu),注重知識(shí)內(nèi)容的連續(xù)性和漸進(jìn)性;將立德樹人和“課程思政”理念融入本書,挖掘“愛國奉獻(xiàn)”“工匠精神”“科技報(bào)國”等30多個(gè)思政點(diǎn)并錄制為微視頻供讀者學(xué)習(xí);將“計(jì)算思維”的概念引入本書,以“典型題例”或“典型案例”引入問題,以編程應(yīng)用為驅(qū)動(dòng),重點(diǎn)講解程序設(shè)計(jì)的思想和方法,并對(duì)典型題例和案例進(jìn)行剖析。
全書共10章,內(nèi)容編排合理,通俗易懂,注意分散難點(diǎn),使讀者在掌握C語言基本知識(shí)的同時(shí),重點(diǎn)培養(yǎng)工匠精神、家國情懷以及分析問題、解決問題的能力,進(jìn)而提高實(shí)際程序設(shè)計(jì)能力。同時(shí),全書配有設(shè)計(jì)精美、內(nèi)容豐富的“核心知識(shí)點(diǎn)”和“課程思政點(diǎn)”視頻資源,讀者可以直接掃碼觀看。為了讓讀者能夠及時(shí)地檢查自己的學(xué)習(xí)效果,把握自己的學(xué)習(xí)進(jìn)度,每章后面都附有豐富的習(xí)題。
本書既可以作為高等院校各專業(yè)C語言程序設(shè)計(jì)課程的教材,也可供準(zhǔn)備參加計(jì)算機(jī)等級(jí)考試和研究生入學(xué)考試的讀者閱讀參考,同時(shí)也可作為工程技術(shù)人員和計(jì)算機(jī)愛好者的參考資料。
C語言是一種國內(nèi)外普遍使用的面向過程的、抽象化的通用程序設(shè)計(jì)語言,廣泛應(yīng)用于底層開發(fā)。C語言程序設(shè)計(jì)是理工科各專業(yè)學(xué)生計(jì)算機(jī)應(yīng)用能力培養(yǎng)的重要技術(shù)基礎(chǔ)。 C語言既具有低級(jí)語言可直接訪問內(nèi)存地址、能進(jìn)行位操作、程序運(yùn)行效率高的優(yōu)點(diǎn),又具有高級(jí)語言運(yùn)算符和數(shù)據(jù)類型豐富、結(jié)構(gòu)化控制語句功能強(qiáng)、可移植性好的優(yōu)點(diǎn),C語言能夠在內(nèi)存有限的大量硬件設(shè)備(如嵌入式硬件設(shè)備)中運(yùn)行。在TIOBE編程語言排行榜中,C語言多年位居榜單前列,是程序設(shè)計(jì)語言的常青樹。當(dāng)今流行的面向?qū)ο笳Z言C++以及Java就是在C語言的基礎(chǔ)上發(fā)展起來的。通過本書的學(xué)習(xí),讀者可了解程序設(shè)計(jì)語言的基本知識(shí),掌握計(jì)算思維和結(jié)構(gòu)化程序設(shè)計(jì)的基本方法與思路、C語言的基本編程方法和程序設(shè)計(jì)技巧、程序調(diào)試的基本技能,具備獨(dú)立編寫常規(guī)C語言應(yīng)用程序的能力,同時(shí)為設(shè)計(jì)大型應(yīng)用程序和系統(tǒng)程序打下堅(jiān)實(shí)的基礎(chǔ)。
本書注重知識(shí)內(nèi)容的連續(xù)性和漸進(jìn)性,將指針的概念介紹提前到數(shù)組之前,以方便讀者理解指針與數(shù)組的關(guān)系;在“案例分析與實(shí)現(xiàn)”中給出了一些難度較高的程序?qū)嵗,通過綜合實(shí)例說明算法的基本原理、程序設(shè)計(jì)技巧和運(yùn)行結(jié)果分析,讓讀者融會(huì)貫通,開拓思路,使讀者在掌握C語言基本知識(shí)的同時(shí),逐步具備分析問題、解決問題的能力,進(jìn)而提高實(shí)際的程序設(shè)計(jì)能力;增加了“C語言運(yùn)行環(huán)境”一章,對(duì)VC++、Dev-C++、Linux C以及手機(jī)端C語言編程進(jìn)行了介紹,盡量使用通俗易懂的語言,圖文并茂,將抽象的語法知識(shí)直觀地呈現(xiàn)給讀者;全部代碼都在Visual C++ 6.0下編寫調(diào)試。全書配有設(shè)計(jì)精美、內(nèi)容豐富的視頻資源,讀者可以直接掃碼觀看。
本書共10章,第1、2章介紹了C語言的特點(diǎn)和C語言的基本概念,第3章討論了算法的描述和結(jié)構(gòu)化程序設(shè)計(jì)的基本方法以及三種基本程序設(shè)計(jì)結(jié)構(gòu),第4章介紹了指針的概念和指針變量及數(shù)組的相關(guān)知識(shí),第5章介紹了函數(shù)的定義和使用,第6章介紹了結(jié)構(gòu)體、鏈表和共用體,第7章介紹了文件的相關(guān)內(nèi)容,第8章介紹了面向?qū)ο蟪绦蛟O(shè)計(jì)語言C++和C#等,第9章介紹了C語言的常用開發(fā)環(huán)境,第10章給出了詩詞信息管理系統(tǒng)等3個(gè)復(fù)雜工程案例的分析與實(shí)現(xiàn)。
C語言是一門實(shí)踐性很強(qiáng)的課程,對(duì)學(xué)生編程和調(diào)試能力的訓(xùn)練非常重要。在第3章和第9章中專門介紹了C語言的上機(jī)步驟和C程序的調(diào)試技術(shù),并重點(diǎn)介紹了Visual C++ 6.0、Dev-C++、Linux C以及手機(jī)端C語言編程的上機(jī)步驟和環(huán)境,便于讀者在Windows或Linux環(huán)境下編寫C語言程序。
本書講授課時(shí)數(shù)為48~72學(xué)時(shí),其中實(shí)驗(yàn)課占16~24學(xué)時(shí)。學(xué)習(xí)完本書后,建議安排兩周的“C語言課程設(shè)計(jì)”實(shí)訓(xùn),以完成一個(gè)小型應(yīng)用系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)。
本書是作者根據(jù)多年從事C語言教學(xué)的經(jīng)驗(yàn)編寫的,在原書(王曙燕主編、王春梅副主編,《C語言程序設(shè)計(jì)》,西安電子科技大學(xué)出版社,2020)的基礎(chǔ)上,根據(jù)廣大讀者使用過程中提出的要求和意見進(jìn)行了精心的修改,增加了視頻資源和典型題例與典型案例部分。團(tuán)隊(duì)的“C語言程序設(shè)計(jì)”慕課課程已經(jīng)在中國大學(xué)慕課上線7期,讀者也可以加入學(xué)習(xí)。
王曙燕擔(dān)任本書主編,編寫了第1、3章,王春梅擔(dān)任副主編,編寫了第7、10章和附錄,王小銀編寫了第2、5、9章,王燕編寫了第6、8章,孫家澤編寫了第4章。全書由王曙燕和王春梅統(tǒng)稿,舒新峰老師對(duì)本書的編寫提出了很好的建議,在此表示衷心的感謝。
由于編者水平有限,書中難免存在不足之處,懇請(qǐng)讀者批評(píng)指正。編者聯(lián)系方式:wsylxj@126.com。
編 者
2022年1月
第1章 概述 1
1.1 程序設(shè)計(jì)語言 1
1.1.1 計(jì)算機(jī)語言 2
1.1.2 程序設(shè)計(jì)語言的發(fā)展 2
1.2 C程序設(shè)計(jì)語言 3
1.2.1 C語言的發(fā)展歷史 3
1.2.2 C語言的標(biāo)準(zhǔn)與版本 4
1.2.3 C語言的特點(diǎn) 4
1.3 C語言的基本語法成分 5
1.3.1 字符集 5
1.3.2 標(biāo)識(shí)符 5
1.3.3 運(yùn)算符 7
1.4 C語言程序的組成 7
1.4.1 簡(jiǎn)單的C程序介紹 7
1.4.2 C語言程序的結(jié)構(gòu) 9
1.4.3 C程序的書寫 10
1.5 程序設(shè)計(jì)的一般過程 11
1.5.1 問題分析 12
1.5.2 算法設(shè)計(jì) 12
1.5.3 編寫程序 13
1.5.4 調(diào)試與測(cè)試 13
1.5.5 整理文檔 13
習(xí)題1 14
第2章 基本數(shù)據(jù)類型、運(yùn)算符及
?表達(dá)式 15
2.1 C語言基本數(shù)據(jù)類型 15
2.1.1 數(shù)據(jù)類型 15
2.1.2 C語言數(shù)據(jù)類型簡(jiǎn)介 15
2.2 常量 16
2.2.1 整型常量 16
2.2.2 實(shí)型常量 17
2.2.3 符號(hào)常量 17
2.2.4 字符型常量 24
2.3 變量 26
2.3.1 變量名 26
2.3.2 變量類型 26
2.3.3 變量值 30
2.4 運(yùn)算符及表達(dá)式 30
2.4.1 C運(yùn)算符簡(jiǎn)介 30
2.4.2 算術(shù)運(yùn)算符與算術(shù)表達(dá)式 32
2.4.3 賦值運(yùn)算符與賦值表達(dá)式 34
2.4.4 關(guān)系運(yùn)算符與關(guān)系表達(dá)式 36
2.4.5 邏輯運(yùn)算符與邏輯表達(dá)式 37
2.4.6 條件運(yùn)算符與條件表達(dá)式 39
2.4.7 逗號(hào)運(yùn)算符與逗號(hào)表達(dá)式 41
2.4.8 位運(yùn)算符和位段 42
2.4.9 不同類型數(shù)據(jù)間的混合運(yùn)算與
類型轉(zhuǎn)換 47
習(xí)題2 48
第3章 算法與控制流 53
3.1 簡(jiǎn)單的C程序設(shè)計(jì) 53
3.1.1 典型題例 53
3.1.2 算法 54
3.1.3 結(jié)構(gòu)化程序設(shè)計(jì)的方法 57
3.1.4 程序的基本結(jié)構(gòu) 58
3.2 順序結(jié)構(gòu)程序設(shè)計(jì) 61
3.2.1 數(shù)據(jù)的輸入與輸出 62
3.2.2 計(jì)算思維 74
3.2.3 C程序的上機(jī)步驟及基本
調(diào)試技術(shù) 76
3.2.4 題例分析與實(shí)現(xiàn) 78
3.3 選擇結(jié)構(gòu)程序設(shè)計(jì) 81
3.3.1 典型題例 81
3.3.2 二路分支——if語句 82
3.3.3 多路分支——switch語句 94
3.3.4 程序測(cè)試 98
3.3.5 題例分析與實(shí)現(xiàn) 101
3.4 循環(huán)結(jié)構(gòu)程序設(shè)計(jì) 106
3.4.1 典型題例 107
3.4.2 while語句 107
3.4.3 do-while語句 110
3.4.4 for語句 112
3.4.5 goto語句 115
3.4.6 循環(huán)的嵌套 116
3.4.7 循環(huán)結(jié)束語句 119
3.4.8 題例分析與實(shí)現(xiàn) 121
3.4.9 循環(huán)語句小結(jié) 129
習(xí)題3 129
第4章 指針與數(shù)組 134
4.1 典型題例 134
4.2 地址和指針的概念 135
4.2.1 變量的內(nèi)容和變量的地址 135
4.2.2 直接訪問和間接訪問 136
4.2.3 指針的概念 137
4.3 指針變量 137
4.3.1 指針運(yùn)算符 137
4.3.2 指針變量的定義 139
4.3.3 指針變量的引用 141
4.4 一維數(shù)組 142
4.4.1 一維數(shù)組的定義和初始化 142
4.4.2 一維數(shù)組元素的引用 144
4.4.3 一維數(shù)組應(yīng)用舉例 144
4.5 二維數(shù)組 149
4.5.1 二維數(shù)組的定義和初始化 149
4.5.2 二維數(shù)組元素的引用 151
4.5.3 二維數(shù)組應(yīng)用舉例 153
4.6 字符數(shù)組 160
4.6.1 一維字符數(shù)組的定義和引用 160
4.6.2 字符數(shù)組的輸入與輸出 161
4.6.3 字符串處理函數(shù) 163
4.6.4 二維字符數(shù)組 166
4.6.5 字符數(shù)組應(yīng)用舉例 167
4.7 指針與數(shù)組 169
4.7.1 指向數(shù)組元素的指針 169
4.7.2 字符指針、字符數(shù)組和字符串 172
4.7.3 地址越界問題 175
4.7.4 指針數(shù)組 176
4.7.5 多維數(shù)組和指向分?jǐn)?shù)組的指針 177
4.7.6 動(dòng)態(tài)數(shù)組 180
4.8 題例分析與實(shí)現(xiàn) 183
習(xí)題4 188
第5章 函數(shù) 192
5.1 典型題例 192
5.2 概述 193
5.2.1 C程序的基本結(jié)構(gòu) 193
5.2.2 函數(shù)分類 195
5.3 函數(shù)的定義 195
5.4 函數(shù)的調(diào)用與返回值 197
5.4.1 函數(shù)調(diào)用的一般形式 197
5.4.2 函數(shù)調(diào)用的方式 197
5.4.3 函數(shù)的返回值 199
5.5 函數(shù)的參數(shù) 200
5.5.1 形式參數(shù)和實(shí)際參數(shù) 200
5.5.2 函數(shù)參數(shù) 202
5.5.3 引用傳遞 207
5.6 函數(shù)聲明和函數(shù)原型 209
5.7 函數(shù)的嵌套調(diào)用 211
5.8 函數(shù)的遞歸調(diào)用 212
5.9 變量的作用域 217
5.9.1 局部變量 217
5.9.2 全局變量 218
5.10 變量的存儲(chǔ)類型 220
5.10.1 自動(dòng)變量 220
5.10.2 靜態(tài)變量 221
5.10.3 寄存器變量 223
5.10.4 外部變量 224
5.10.5 存儲(chǔ)類型小結(jié) 225
5.11 內(nèi)部函數(shù)和外部函數(shù) 225
5.11.1 內(nèi)部函數(shù) 226
5.11.2 外部函數(shù) 226
5.12 指針與函數(shù) 227
5.12.1 返回指針值的函數(shù) 227
5.12.2 指向函數(shù)的指針變量 228
5.12.3 指向函數(shù)的指針變量作為
函數(shù)參數(shù) 231
5.13 多文件程序的運(yùn)行 232
5.14 題例分析與實(shí)現(xiàn) 233
習(xí)題5 244
第6章 復(fù)雜數(shù)據(jù)類型 250
6.1 結(jié)構(gòu)體 250
6.1.1 案例引入 250
6.1.2 結(jié)構(gòu)體類型定義 251
6.1.3 結(jié)構(gòu)體變量 252
6.1.4 結(jié)構(gòu)體數(shù)組 259
6.1.5 結(jié)構(gòu)體和函數(shù) 263
6.1.6 指針與結(jié)構(gòu)體 266
6.2 鏈表 268
6.2.1 案例引入 269
6.2.2 存儲(chǔ)空間的分配和釋放 269
6.2.3 鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)——鏈表 273
6.2.4 單鏈表 274
6.2.5 循環(huán)鏈表 296
6.2.6 雙向鏈表 297
6.3 共用體 298
6.3.1 共用體類型定義 298
6.3.2 共用體變量 299
6.3.3 共用體應(yīng)用舉例 300
6.4 枚舉類型 302
6.5 typedef語句 305
習(xí)題6 307
第7章 文件 312
7.1 文件概述 312
7.1.1 數(shù)據(jù)流 312
7.1.2 文件 313
7.1.3 文件的操作流程 314
7.1.4 文件和內(nèi)存的交互處理 315
7.2 文件類型的指針 316
7.3 標(biāo)準(zhǔn)輸入/輸出函數(shù) 316
7.3.1 打開文件 317
7.3.2 關(guān)閉文件 319
7.3.3 獲取文件的屬性 319
7.3.4 文件的順序讀寫 321
7.3.5 文件的隨機(jī)讀寫 337
7.3.6 出錯(cuò)檢查 341
7.4 系統(tǒng)輸入/輸出函數(shù) 342
習(xí)題7 343
第8章 C++面向?qū)ο蟪绦蛟O(shè)計(jì) 346
8.1 面向?qū)ο蟪绦蛟O(shè)計(jì) 346
8.1.1 面向?qū)ο蟪绦蛟O(shè)計(jì)產(chǎn)生的背景 346
8.1.2 類(class)和對(duì)象(object) 347
8.1.3 構(gòu)造函數(shù)和析構(gòu)函數(shù) 349
8.1.4 繼承 350
8.1.5 多態(tài)性 350
8.2 C++語言 351
8.2.1 C++語言的特點(diǎn) 352
8.2.2 輸出流(cout)和輸入流(cin) 352
8.2.3 函數(shù)內(nèi)聯(lián)(inline) 355
8.2.4 函數(shù)重載(overloading) 356
8.2.5 引用(reference) 360
8.2.6 C++?語言增加的運(yùn)算符、
數(shù)據(jù)類型、注釋 362
8.2.7 C++?程序的集成開發(fā)環(huán)境 363
8.3 C#語言 367
8.3.1 C#語言簡(jiǎn)介 367
8.3.2 C#語言的特點(diǎn) 367
8.4 基于MFC庫的用戶界面編程基礎(chǔ) 368
習(xí)題8 378
第9章 C語言開發(fā)環(huán)境 381
9.1 Visual C++環(huán)境 381
9.1.1 Visual C++ 6.0集成開發(fā)環(huán)境 381
9.1.2 Visual C++ 6.0的使用 384
9.2 Dev-C++環(huán)境 388
9.3 Linux操作系統(tǒng)下C語言程序的
開發(fā)環(huán)境和開發(fā)過程 391
9.3.1 使用vim編輯器編輯源文件 392
9.3.2 使用gcc編譯器編譯源程序 392
9.3.3 運(yùn)行程序 393
9.4 調(diào)試程序 393
9.4.1 Visual C++環(huán)境中調(diào)試程序 393
9.4.2 Linux環(huán)境中使用gdb調(diào)試程序 397
9.5 手機(jī)端編程環(huán)境 400
9.5.1 Android操作系統(tǒng)下的C編譯器 400
9.5.2 iOS操作系統(tǒng)下的C語言編譯器 403
9.6 編譯錯(cuò)誤信息 406
第10章 復(fù)雜工程案例分析與實(shí)現(xiàn) 412
10.1 學(xué)生信息處理系統(tǒng) 412
10.1.1 需求分析 412
10.1.2 系統(tǒng)設(shè)計(jì) 412
10.1.3 功能設(shè)計(jì) 413
10.1.4 小結(jié) 416
10.2 詩詞信息管理系統(tǒng) 416
10.2.1 需求分析 416
10.2.2 系統(tǒng)設(shè)計(jì) 417
10.2.3 功能設(shè)計(jì) 417
10.2.4 小結(jié) 425
10.3 西郵中餐廳點(diǎn)餐系統(tǒng) 425
10.3.1 需求分析 426
10.3.2 系統(tǒng)設(shè)計(jì) 427
10.3.3 功能設(shè)計(jì) 428
10.3.4 系統(tǒng)實(shí)現(xiàn) 432
10.3.5 小結(jié) 441
附錄 442
附錄1 常用字符與ASCII碼對(duì)照表 442
附錄2 C語言中的關(guān)鍵字表 445
附錄3 C語言中運(yùn)算符的優(yōu)先級(jí)及其
?結(jié)合性一覽表 445
附錄4 C語言的庫函數(shù) 446
附錄5 C語言與匯編語言的混合編程 457
參考文獻(xiàn) 464