C語(yǔ)言是目前使用最廣的程序設(shè)計(jì)語(yǔ)言之一,學(xué)好C語(yǔ)言程序設(shè)計(jì)對(duì)掌握基本編程方法、培養(yǎng)“計(jì)算思維”方式、提高解決問(wèn)題的能力具有重要意義。C語(yǔ)言程序設(shè)計(jì)是計(jì)算機(jī)專業(yè)學(xué)生的重要基礎(chǔ)課程,也是非計(jì)算機(jī)專業(yè)學(xué)生選修的熱門課程。
《C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)教程》面向高等學(xué)校各專業(yè),內(nèi)容主要涉及C語(yǔ)言編程的基本知識(shí)和結(jié)構(gòu)化編程方法。通過(guò)與問(wèn)題相關(guān)的實(shí)例講解,讓學(xué)習(xí)者掌握C語(yǔ)言的基本運(yùn)算、程序的控制流程、模塊化的設(shè)計(jì)方法、指針以及文件等相關(guān)基礎(chǔ)知識(shí)。本書(shū)注重實(shí)踐環(huán)節(jié),每章按照程序設(shè)計(jì)在線評(píng)測(cè)(OJ)系統(tǒng)的實(shí)戰(zhàn)題目安排訓(xùn)練。挑選典型實(shí)訓(xùn)題目,配合豐富的習(xí)題,精講多練,培養(yǎng)學(xué)習(xí)者程序設(shè)計(jì)實(shí)踐能力。
“程序設(shè)計(jì)基礎(chǔ)”是高等院校計(jì)算機(jī)專業(yè)的基礎(chǔ)課程,C語(yǔ)言是程序設(shè)計(jì)語(yǔ)言的主流語(yǔ)言。C語(yǔ)言功能豐富、表達(dá)能力強(qiáng),使用靈活方便,程序執(zhí)行效率高,它不但具有高級(jí)語(yǔ)言的功能,而且還具備低級(jí)語(yǔ)言的特性。具有完善的模塊程序結(jié)構(gòu),可移植性好,而且可以直接實(shí)現(xiàn)對(duì)系統(tǒng)硬件的控制,具有較強(qiáng)的系統(tǒng)處理能力。因而,目前大部分院校都選擇C語(yǔ)言作為編程入門語(yǔ)言。
本書(shū)根據(jù)教育部計(jì)算機(jī)科學(xué)與技術(shù)教學(xué)指導(dǎo)委員會(huì)發(fā)布的《高等學(xué)校計(jì)算機(jī)科學(xué)與技術(shù)專業(yè)發(fā)展戰(zhàn)略研究報(bào)告暨專業(yè)規(guī)范》及《高等學(xué)校計(jì)算機(jī)科學(xué)與技術(shù)專業(yè)核心課程教學(xué)實(shí)施方案》的教學(xué)基本要求,結(jié)合多年講授C語(yǔ)言程序設(shè)計(jì)課程的教學(xué)經(jīng)驗(yàn)編寫(xiě)而成。參與本書(shū)編寫(xiě)的老師都是從事程序設(shè)計(jì)專業(yè)課或公共課教學(xué)的老師,先后進(jìn)行了10多年的C語(yǔ)言課程的教學(xué)。我們一邊實(shí)施教學(xué),一邊進(jìn)行教改研究,先后獲得省級(jí)精品課程、省級(jí)優(yōu)秀教學(xué)團(tuán)隊(duì)及省級(jí)教學(xué)名師的殊榮。
本書(shū)內(nèi)容豐富,實(shí)用性強(qiáng),采用精講多練的方式,使讀者掌握C語(yǔ)言的基本內(nèi)容及程序設(shè)計(jì)的基本方法和編程技巧,逐步建立程序設(shè)計(jì)的基本思想,為進(jìn)一步學(xué)習(xí)計(jì)算機(jī)相關(guān)專業(yè)打下基礎(chǔ)。本書(shū)具有如下特點(diǎn)。
(1) 結(jié)構(gòu)清晰,知識(shí)完整。本書(shū)內(nèi)容翔實(shí)、系統(tǒng)性強(qiáng),依據(jù)高校教學(xué)大綱組織內(nèi)容,并將實(shí)際經(jīng)驗(yàn)融入基本理論之中。
(2) 學(xué)以致用,注重能力。本書(shū)以“基礎(chǔ)知識(shí)—例題—實(shí)訓(xùn)”為主線,先介紹基礎(chǔ)知識(shí),再講授例題,最后給出實(shí)訓(xùn)題目,以便于讀者掌握該章的重點(diǎn)知識(shí)并提高編程能力。
(3) 示例豐富,實(shí)用性強(qiáng)。本書(shū)示例豐富、步驟明確、講解細(xì)致,突出實(shí)用性。
(4) 注重規(guī)范,學(xué)用結(jié)合。本書(shū)知識(shí)點(diǎn)的學(xué)習(xí)與使用緊密結(jié)合,知識(shí)點(diǎn)基本上采用即學(xué)即用的原則。在用的同時(shí)引導(dǎo)學(xué)生養(yǎng)成良好的編程習(xí)慣,編寫(xiě)風(fēng)格優(yōu)美、可讀性好、易于維護(hù)的程序代碼。
本書(shū)適合作為高校計(jì)算機(jī)專業(yè)的學(xué)生學(xué)習(xí)“程序設(shè)計(jì)基礎(chǔ)”類課程的教材,也可以作為非計(jì)算機(jī)專業(yè)的理工科學(xué)生學(xué)習(xí)“程序設(shè)計(jì)語(yǔ)言”的教材。在進(jìn)行公共課教學(xué)時(shí),可根據(jù)實(shí)際情況對(duì)教材內(nèi)容及上機(jī)實(shí)踐內(nèi)容進(jìn)行適當(dāng)?shù)恼{(diào)整。
全書(shū)共分為10章,詳細(xì)介紹了初學(xué)者使用C語(yǔ)言進(jìn)行程序設(shè)計(jì)所涉及的基本內(nèi)容,每一章均配有例題和習(xí)題。本書(shū)第1、10章由孟繁軍編寫(xiě),第2、3章由張麗萍編寫(xiě),第4、5章由王春暉編寫(xiě),第6章由王利江編寫(xiě),第7章由俞宗佐編寫(xiě),第8章由李慧哲編寫(xiě),第9章由朝力萌編寫(xiě),附錄由劉東升編寫(xiě)。全書(shū)由孟繁軍統(tǒng)稿,劉東升審核。
本書(shū)在編寫(xiě)過(guò)程中得到了許多老師的幫助,在此表示誠(chéng)摯的感謝。在編寫(xiě)過(guò)程中參考了很多文獻(xiàn),在此一并向文獻(xiàn)的作者表示感謝。由于作者水平有限,書(shū)中難免有疏漏和不當(dāng)之處,敬請(qǐng)讀者和專家批評(píng)指正。
編 者
第1章 C程序設(shè)計(jì)概述 1
1.1 程序設(shè)計(jì)語(yǔ)言簡(jiǎn)介 1
1.2 C程序設(shè)計(jì)語(yǔ)言 2
1.2.1 C語(yǔ)言的發(fā)展歷史 2
1.2.2 C語(yǔ)言的特點(diǎn) 3
1.3 一個(gè)簡(jiǎn)單的C程序:輸出一行文字 3
1.4 C程序的運(yùn)行過(guò)程與運(yùn)行環(huán)境 4
1.4.1 C程序的運(yùn)行過(guò)程 4
1.4.2 C程序的常用運(yùn)行環(huán)境簡(jiǎn)介 4
1.5 本章小結(jié) 12
1.6 上機(jī)實(shí)訓(xùn) 12
1.7 習(xí)題 13
第2章 C程序設(shè)計(jì)入門 14
2.1 程序舉例:兩個(gè)數(shù)相加 14
2.2 數(shù)據(jù)的輸入 16
2.3 C語(yǔ)言中的算術(shù)運(yùn)算 19
2.3.1 C語(yǔ)言中算術(shù)運(yùn)算符 19
2.3.2 數(shù)據(jù)類型與運(yùn)算結(jié)果的關(guān)系 19
2.4 數(shù)據(jù)的輸出 20
2.5 程序舉例:計(jì)算圓的面積 21
2.5.1 常量 21
2.5.2 宏定義 22
2.6 源程序的書(shū)寫(xiě)格式 24
2.7 本章小結(jié) 24
2.8 上機(jī)實(shí)訓(xùn) 25
2.8.1 實(shí)訓(xùn)1 a+b的輸入輸出
練習(xí) 25
2.8.2 實(shí)訓(xùn)2 輸出練習(xí) 25
2.9 習(xí)題 26
第3章 C程序數(shù)據(jù)的基本運(yùn)算 28
3.1 數(shù)據(jù)類型 28
3.2 常量 29
3.3 變量 31
3.3.1 類型修飾符 32
3.3.2 變量的定義 33
3.3.3 存儲(chǔ)單元的基本概念 35
3.4 基本運(yùn)算 35
3.4.1 關(guān)系運(yùn)算 35
3.4.2 邏輯運(yùn)算 37
3.4.3 位運(yùn)算 38
3.4.4 賦值運(yùn)算 41
3.4.5 其他運(yùn)算 41
3.4.6 運(yùn)算符的優(yōu)先級(jí)和結(jié)合性 42
3.5 不同類型數(shù)據(jù)之間的轉(zhuǎn)換 44
3.5.1 自動(dòng)類型轉(zhuǎn)換 44
3.5.2 強(qiáng)制類型轉(zhuǎn)換 45
3.6 本章小結(jié) 45
3.7 上機(jī)實(shí)訓(xùn) 46
3.7.1 實(shí)訓(xùn)1 關(guān)于圓的運(yùn)算 46
3.7.2 實(shí)訓(xùn)2 判斷較大數(shù) 47
3.8 習(xí)題 47
第4章 C程序控制結(jié)構(gòu)(1) 49
4.1 算法初步 49
4.2 程序控制結(jié)構(gòu) 50
4.3 算法描述 51
4.3.1 流程圖 51
4.3.2 N-S圖 53
4.3.3 偽碼 53
4.4 if語(yǔ)句 54
4.4.1 單分支選擇結(jié)構(gòu) 54
4.4.2 雙分支選擇結(jié)構(gòu) 56
4.4.3 多分支選擇結(jié)構(gòu) 57
4.5 用switch語(yǔ)句實(shí)現(xiàn)多分支選擇結(jié)構(gòu) 59
4.6 本章小結(jié) 60
4.7 上機(jī)實(shí)訓(xùn) 60
4.7.1 實(shí)訓(xùn)1 判斷某年是否是閏年 60
4.7.2 實(shí)訓(xùn)2 簡(jiǎn)單四則運(yùn)算 61
4.7.3 實(shí)訓(xùn)3 求一元二次方程的根 62
4.8 習(xí)題 64
第5章 C程序控制結(jié)構(gòu)(2) 65
5.1 為什么要使用循環(huán) 65
5.2 三種循環(huán)語(yǔ)句 67
5.2.1 while循環(huán)語(yǔ)句 67
5.2.2 do-while循環(huán)語(yǔ)句 68
5.2.3 for循環(huán)語(yǔ)句 70
5.3 計(jì)數(shù)控制的循環(huán) 72
5.4 標(biāo)記控件的循環(huán) 73
5.5 幾種循環(huán)語(yǔ)句的比較 75
5.6 循環(huán)嵌套 76
5.7 流程轉(zhuǎn)移控制語(yǔ)句 77
5.7.1 goto語(yǔ)句 78
5.7.2 break語(yǔ)句 78
5.7.3 continue語(yǔ)句 80
5.8 結(jié)構(gòu)化程序設(shè)計(jì)的核心思想 80
5.9 “自頂向下、逐步求精”的設(shè)計(jì)方法 81
5.10 本章小結(jié) 84
5.11 上機(jī)實(shí)訓(xùn) 85
5.11.1 實(shí)訓(xùn)1 求斐波那契(Fibonacci) 數(shù)列 85
5.11.2 實(shí)訓(xùn)2 雞兔同籠 86
5.11.3 實(shí)訓(xùn)3 求水仙花數(shù) 88
5.11.4 實(shí)訓(xùn)4 求?的近似值 89
5.12 習(xí)題 90
第6章 數(shù)組 92
6.1 為什么要使用數(shù)組 92
6.2 一維數(shù)組 93
6.2.1 一維數(shù)組定義 93
6.2.2 數(shù)組元素的使用 94
6.2.3 一維數(shù)組的初始化 95
6.3 字符數(shù)組 95
6.3.1 字符數(shù)組的定義 95
6.3.2 字符數(shù)組的使用 96
6.3.3 字符數(shù)組的初始化 96
6.3.4 字符數(shù)組的輸入與輸出 97
6.3.5 字符串輸入輸出函數(shù) 97
6.3.6 字符串函數(shù) 99
6.4 二維數(shù)組 102
6.5 多維數(shù)組 103
6.6 本章小結(jié) 103
6.7 上機(jī)實(shí)訓(xùn) 104
6.7.1 實(shí)訓(xùn)1 絕對(duì)值排序 104
6.7.2 實(shí)訓(xùn)2 兩數(shù)組最短距離 105
6.7.3 實(shí)訓(xùn)3 字符替換 106
6.7.4 實(shí)訓(xùn)4 數(shù)組旋轉(zhuǎn) 107
6.7.5 實(shí)訓(xùn)5 螺旋方陣 109
6.8 習(xí)題 111
第7章 結(jié)構(gòu)體、共用體和枚舉 112
7.1 程序舉例:輸出平均成績(jī)最高的學(xué)生信息 112
7.2 結(jié)構(gòu)體的定義 115
7.2.1 結(jié)構(gòu)體類型的定義 115
7.2.2 結(jié)構(gòu)體變量的定義 116
7.3 結(jié)構(gòu)體變量的初始化 118
7.4 對(duì)結(jié)構(gòu)體成員的訪問(wèn) 119
7.5 結(jié)構(gòu)體數(shù)組 120
7.6 共用體 122
7.6.1 共用體的定義 122
7.6.2 共用體變量的引用 124
7.6.3 共用體變量與結(jié)構(gòu)體變量的主要區(qū)別 125
7.6.4 共用體類型的應(yīng)用 126
7.7 枚舉類型 127
7.8 用typedef定義類型 130
7.9 本章小結(jié) 131
7.10 上機(jī)實(shí)訓(xùn) 132
7.10.1 實(shí)訓(xùn)1 使用結(jié)構(gòu)體和共用體描述客車和貨車 132
7.10.2 實(shí)訓(xùn)2 假設(shè)今天是星期日,判斷若干天后是星期幾 133
7.11 習(xí)題 133
第8章 函數(shù)與程序結(jié)構(gòu) 135
8.1 C語(yǔ)言中的程序模塊 135
8.2 函數(shù)的基本知識(shí) 136
8.2.1 函數(shù)的定義 137
8.2.2 函數(shù)的調(diào)用 137
8.2.3 函數(shù)原型 137
8.2.4 函數(shù)返回值 138
8.2.5 函數(shù)參數(shù) 140
8.3 函數(shù)的遞歸調(diào)用 141
8.4 數(shù)組做參數(shù) 144
8.5 變量的作用域 146
8.5.1 局部變量 147
8.5.2 全局變量 148
8.5.3 動(dòng)態(tài)存儲(chǔ)變量 149
8.5.4 靜態(tài)存儲(chǔ)變量 150
8.6 程序舉例 151
8.7 編譯預(yù)處理 154
8.7.1 宏定義 154
8.7.2 條件編譯 157
8.7.3 數(shù)據(jù)類型再命名 159
8.8 本章小結(jié) 160
8.9 上機(jī)實(shí)訓(xùn) 160
8.9.1 實(shí)訓(xùn)1 簡(jiǎn)單計(jì)算器 160
8.9.2 實(shí)訓(xùn)2 找素?cái)?shù) 162
8.10 習(xí)題 163
第9章 C指針 166
9.1 地址和指針的概念 166
9.2 指針變量 167
9.2.1 指針變量的定義 167
9.2.2 指針變量的引用 168
9.3 指針與數(shù)組 169
9.3.1 指向數(shù)組元素的指針 169
9.3.2 通過(guò)指針引用數(shù)組元素 170
9.3.3 用數(shù)組名作函數(shù)參數(shù) 170
9.3.4 字符串與指針 172
9.3.5 鏈表 173
9.4 指針與函數(shù) 177
9.4.1 指針變量作函數(shù)的參數(shù) 177
9.4.2 指向函數(shù)的指針 179
9.4.3 返回指針值的函數(shù) 180
9.4.4 指向指針的指針 181
9.5 本章小結(jié) 182
9.6 上機(jī)實(shí)訓(xùn) 182
9.6.1 實(shí)訓(xùn)1 在輸入的字符串中查找有無(wú)‘k’字符 182
9.6.2 實(shí)訓(xùn)2 將數(shù)組中的n個(gè)整數(shù)按相反順序存放 183
9.7 習(xí)題 184
第10章 文件 186
10.1 什么是文件 186
10.1.1 文本文件 186
10.1.2 二進(jìn)制文件 187
10.2 文件指針FILE 187
10.3 文件的打開(kāi)與關(guān)閉 188
10.3.1 文件的打開(kāi) 188
10.3.2 文件的關(guān)閉 189
10.4 文本文件的讀寫(xiě)操作 189
10.4.1 按文本方式打開(kāi)文件 189
10.4.2 按文本方式讀文件 190
10.4.3 按文本方式寫(xiě)文件 193
10.5 讀寫(xiě)二進(jìn)制文件 196
10.5.1 按二進(jìn)制方式打開(kāi)文件 197
10.5.2 按二進(jìn)制方式讀寫(xiě)文件 197
10.6 文件的隨機(jī)讀寫(xiě) 199
10.7 文件定位函數(shù) 200
10.8 本章小結(jié) 201
10.9 上機(jī)實(shí)訓(xùn) 202
實(shí)訓(xùn) 模擬實(shí)現(xiàn)操作系統(tǒng)的文件復(fù)制功能 202
10.10 習(xí)題 203
附錄A ASCII碼表 205
附錄B C語(yǔ)言關(guān)鍵字 208
附錄C 部分標(biāo)準(zhǔn)C庫(kù)函數(shù) 209
附錄D 預(yù)處理命令的使用 213
附錄E 程序在線評(píng)測(cè)系統(tǒng)介紹 218
參考文獻(xiàn) 225