“程序設(shè)計基礎(chǔ)”是高等院校計算機專業(yè)的基礎(chǔ)課程,C語言是程序設(shè)計語言的主流語言。C語言功能豐富、表達能力強,使用靈活方便,程序執(zhí)行效率高,它不但具有高級語言的功能,而且還具備低級語言的特性。具有完善的模塊程序結(jié)構(gòu),可移植性好,而且可以直接實現(xiàn)對系統(tǒng)硬件的控制,具有較強的系統(tǒng)處理能力。因而,目前大部分院校都選擇C語言作為編程入門語言。
本書根據(jù)教育部計算機科學(xué)與技術(shù)教學(xué)指導(dǎo)委員會發(fā)布的《高等學(xué)校計算機科學(xué)與技術(shù)專業(yè)發(fā)展戰(zhàn)略研究報告暨專業(yè)規(guī)范》及《高等學(xué)校計算機科學(xué)與技術(shù)專業(yè)核心課程教學(xué)實施方案》的教學(xué)基本要求,結(jié)合多年講授C語言程序設(shè)計課程的教學(xué)經(jīng)驗編寫而成。參與本書編寫的老師都是從事程序設(shè)計專業(yè)課或公共課教學(xué)的老師,先后進行了10多年的C語言課程的教學(xué)。我們一邊實施教學(xué),一邊進行教改研究,先后獲得省級精品課程、省級優(yōu)秀教學(xué)團隊及省級教學(xué)名師的殊榮。
本書內(nèi)容豐富,實用性強,采用精講多練的方式,使讀者掌握C語言的基本內(nèi)容及程序設(shè)計的基本方法和編程技巧,逐步建立程序設(shè)計的基本思想,為進一步學(xué)習(xí)計算機相關(guān)專業(yè)打下基礎(chǔ)。本書具有如下特點。
(1) 結(jié)構(gòu)清晰,知識完整。本書內(nèi)容翔實、系統(tǒng)性強,依據(jù)高校教學(xué)大綱組織內(nèi)容,并將實際經(jīng)驗融入基本理論之中。
(2) 學(xué)以致用,注重能力。本書以“基礎(chǔ)知識—例題—實訓(xùn)”為主線,先介紹基礎(chǔ)知識,再講授例題,最后給出實訓(xùn)題目,以便于讀者掌握該章的重點知識并提高編程能力。
(4) 注重規(guī)范,學(xué)用結(jié)合。本書知識點的學(xué)習(xí)與使用緊密結(jié)合,知識點基本上采用即學(xué)即用的原則。在用的同時引導(dǎo)學(xué)生養(yǎng)成良好的編程習(xí)慣,編寫風(fēng)格優(yōu)美、可讀性好、易于維護的程序代碼。
本書適合作為高校計算機專業(yè)的學(xué)生學(xué)習(xí)“程序設(shè)計基礎(chǔ)”類課程的教材,也可以作為非計算機專業(yè)的理工科學(xué)生學(xué)習(xí)“程序設(shè)計語言”的教材。在進行公共課教學(xué)時,可根據(jù)實際情況對教材內(nèi)容及上機實踐內(nèi)容進行適當(dāng)?shù)恼{(diào)整。
全書共分為10章,詳細介紹了初學(xué)者使用C語言進行程序設(shè)計所涉及的基本內(nèi)容,每一章均配有例題和習(xí)題。本書第1、10章由孟繁軍編寫,第2、3章由張麗萍編寫,第4、5章由王春暉編寫,第6章由王利江編寫,第7章由俞宗佐編寫,第8章由李慧哲編寫,第9章由朝力萌編寫,附錄由劉東升編寫。全書由孟繁軍統(tǒng)稿,劉東升審核。
本書在編寫過程中得到了許多老師的幫助,在此表示誠摯的感謝。在編寫過程中參考了很多文獻,在此一并向文獻的作者表示感謝。由于作者水平有限,書中難免有疏漏和不當(dāng)之處,敬請讀者和專家批評指正。
目 錄
第1章 C程序設(shè)計概述 1
1.1 程序設(shè)計語言簡介 1
1.2 C程序設(shè)計語言 2
1.2.1 C語言的發(fā)展歷史 2
1.2.2 C語言的特點 3
1.3 一個簡單的C程序:輸出一行文字 3
1.4 C程序的運行過程與運行環(huán)境 4
1.4.1 C程序的運行過程 4
1.4.2 C程序的常用運行環(huán)境簡介 4
1.5 本章小結(jié) 12
1.6 上機實訓(xùn) 12
1.7 習(xí)題 13
第2章 C程序設(shè)計入門 14
2.1 程序舉例:兩個數(shù)相加 14
2.2 數(shù)據(jù)的輸入 16
2.3 C語言中的算術(shù)運算 19
2.3.1 C語言中算術(shù)運算符 19
2.3.2 數(shù)據(jù)類型與運算結(jié)果的關(guān)系 19
2.4 數(shù)據(jù)的輸出 20
2.5 程序舉例:計算圓的面積 21
2.5.1 常量 21
2.5.2 宏定義 22
2.6 源程序的書寫格式 24
2.7 本章小結(jié) 24
2.8 上機實訓(xùn) 25
2.8.1 實訓(xùn)1 a+b的輸入輸出
練習(xí) 25
2.8.2 實訓(xùn)2 輸出練習(xí) 25
2.9 習(xí)題 26
第3章 C程序數(shù)據(jù)的基本運算 28
3.1 數(shù)據(jù)類型 28
3.2 常量 29
3.3 變量 31
3.3.1 類型修飾符 32
3.3.2 變量的定義 33
3.3.3 存儲單元的基本概念 35
3.4 基本運算 35
3.4.1 關(guān)系運算 35
3.4.2 邏輯運算 37
3.4.3 位運算 38
3.4.4 賦值運算 41
3.4.5 其他運算 41
3.4.6 運算符的優(yōu)先級和結(jié)合性 42
3.5 不同類型數(shù)據(jù)之間的轉(zhuǎn)換 44
3.5.1 自動類型轉(zhuǎn)換 44
3.5.2 強制類型轉(zhuǎn)換 45
3.6 本章小結(jié) 45
3.7 上機實訓(xùn) 46
3.7.1 實訓(xùn)1 關(guān)于圓的運算 46
3.7.2 實訓(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語句 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語句實現(xiàn)多分支選擇結(jié)構(gòu) 59
4.6 本章小結(jié) 60
4.7 上機實訓(xùn) 60
4.7.1 實訓(xùn)1 判斷某年是否是閏年 60
4.7.2 實訓(xùn)2 簡單四則運算 61
4.7.3 實訓(xùn)3 求一元二次方程的根 62
4.8 習(xí)題 64
第5章 C程序控制結(jié)構(gòu)(2) 65
5.1 為什么要使用循環(huán) 65
5.2 三種循環(huán)語句 67
5.2.1 while循環(huán)語句 67
5.2.2 do-while循環(huán)語句 68
5.2.3 for循環(huán)語句 70
5.3 計數(shù)控制的循環(huán) 72
5.4 標(biāo)記控件的循環(huán) 73
5.5 幾種循環(huán)語句的比較 75
5.6 循環(huán)嵌套 76
5.7 流程轉(zhuǎn)移控制語句 77
5.7.1 goto語句 78
5.7.2 break語句 78
5.7.3 continue語句 80
5.8 結(jié)構(gòu)化程序設(shè)計的核心思想 80
5.9 “自頂向下、逐步求精”的設(shè)計方法 81
5.10 本章小結(jié) 84
5.11 上機實訓(xùn) 85
5.11.1 實訓(xùn)1 求斐波那契(Fibonacci) 數(shù)列 85
5.11.2 實訓(xùn)2 雞兔同籠 86
5.11.3 實訓(xùn)3 求水仙花數(shù) 88
5.11.4 實訓(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 上機實訓(xùn) 104
6.7.1 實訓(xùn)1 絕對值排序 104
6.7.2 實訓(xùn)2 兩數(shù)組最短距離 105
6.7.3 實訓(xùn)3 字符替換 106
6.7.4 實訓(xùn)4 數(shù)組旋轉(zhuǎn) 107
6.7.5 實訓(xùn)5 螺旋方陣 109
6.8 習(xí)題 111
第7章 結(jié)構(gòu)體、共用體和枚舉 112
7.1 程序舉例:輸出平均成績最高的學(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 對結(jié)構(gòu)體成員的訪問 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 上機實訓(xùn) 132
7.10.1 實訓(xùn)1 使用結(jié)構(gòu)體和共用體描述客車和貨車 132
7.10.2 實訓(xùn)2 假設(shè)今天是星期日,判斷若干天后是星期幾 133
7.11 習(xí)題 133
第8章 函數(shù)與程序結(jié)構(gòu) 135
8.1 C語言中的程序模塊 135
8.2 函數(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 動態(tài)存儲變量 149
8.5.4 靜態(tài)存儲變量 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 上機實訓(xùn) 160
8.9.1 實訓(xùn)1 簡單計算器 160
8.9.2 實訓(xùn)2 找素數(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 通過指針引用數(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 上機實訓(xùn) 182
9.6.1 實訓(xùn)1 在輸入的字符串中查找有無‘k’字符 182
9.6.2 實訓(xùn)2 將數(shù)組中的n個整數(shù)按相反順序存放 183
9.7 習(xí)題 184
第10章 文件 186
10.1 什么是文件 186
10.1.1 文本文件 186
10.1.2 二進制文件 187
10.2 文件指針FILE 187
10.3 文件的打開與關(guān)閉 188
10.3.1 文件的打開 188
10.3.2 文件的關(guān)閉 189
10.4 文本文件的讀寫操作 189
10.4.1 按文本方式打開文件 189
10.4.2 按文本方式讀文件 190
10.4.3 按文本方式寫文件 193
10.5 讀寫二進制文件 196
10.5.1 按二進制方式打開文件 197
10.5.2 按二進制方式讀寫文件 197
10.6 文件的隨機讀寫 199
10.7 文件定位函數(shù) 200
10.8 本章小結(jié) 201
10.9 上機實訓(xùn) 202
實訓(xùn) 模擬實現(xiàn)操作系統(tǒng)的文件復(fù)制功能 202
10.10 習(xí)題 203
附錄A ASCII碼表 205
附錄B C語言關(guān)鍵字 208
附錄C 部分標(biāo)準(zhǔn)C庫函數(shù) 209
附錄D 預(yù)處理命令的使用 213
附錄E 程序在線評測系統(tǒng)介紹 218
參考文獻 225