C語言程序設(shè)計(jì)(第二版)

簡介
本書特色
前言
章節(jié)列表
精彩閱讀
下載資源
相關(guān)圖書
本書遵照C語言標(biāo)準(zhǔn),結(jié)合作者多年的教學(xué)和科研實(shí)踐的經(jīng)驗(yàn)和體會(huì),全面系統(tǒng)、深入淺出地闡述了C語言的基本概念、語法和語義,以及用C語言進(jìn)行程序設(shè)計(jì)的基本方法和技巧。
本次再版以Visual C++ 6.0環(huán)境為基礎(chǔ)進(jìn)行修訂,主要內(nèi)容包括數(shù)據(jù)類型和表達(dá)式、流程控制、算法分析、函數(shù)與程序結(jié)構(gòu)等。內(nèi)容更豐富,敘述更詳細(xì),描述更加準(zhǔn)確。每章末都配有習(xí)題可供不同層次的讀者練習(xí)。
本書十分注重知識的應(yīng)用,重點(diǎn)章節(jié)都給出了應(yīng)用舉例。本書的一個(gè)亮點(diǎn)是給出了學(xué)生成績管理系統(tǒng)、大獎(jiǎng)賽評分系統(tǒng)和萬年歷的程序,雖然所給出程序代碼不一定最優(yōu)化,但可以引導(dǎo)讀者分析,給讀者以啟發(fā),是學(xué)習(xí)編程人員一本很好的工具書。
本書是一本準(zhǔn)確而又較全面反映標(biāo)準(zhǔn)C語言的教材,還配有《C語言程序設(shè)計(jì)上機(jī)指導(dǎo)與習(xí)題集解答》(第二版)一書。既可供高等院校計(jì)算機(jī)和非計(jì)算機(jī)專業(yè)本、專科或培訓(xùn)班教學(xué)使用,也是廣大科技工作者和編程愛好者的一本很好的參考書。
本書提供電子教案,讀者可以從中國水利水電出版社網(wǎng)站以及萬水書苑下載,網(wǎng)址為:http://www.waterpub.com.cn/softdown/或http://www.hzxbc.cn。
再版的教材是第1版教材在2010年被教育部高等學(xué)校計(jì)算機(jī)類專業(yè)教學(xué)指導(dǎo)委員會(huì)評為優(yōu)秀教材之后,根據(jù)大多數(shù)教師和讀者的要求,結(jié)合廣大讀者的寶貴意見,把握“突出應(yīng)用特性”的特點(diǎn)修訂而成的。
本教材摒棄C語言課程只以講述語法為主的落后觀念,力求教學(xué)中把C語言從應(yīng)試課程轉(zhuǎn)變?yōu)橐环N實(shí)踐工具,主要目的不再局限于使學(xué)生單純地了解和掌握C語言的基本語法規(guī)范,而是要致力于培養(yǎng)學(xué)生運(yùn)用C語言解決實(shí)際問題的編程能力,以C語言為工具,介紹程序設(shè)計(jì)的基本思想和方法,重視在新形勢下的新方法、新規(guī)則和新思想的傳授,把程序設(shè)計(jì)領(lǐng)域最新、最有價(jià)值的思想和方法滲透到古老的C語言中,給C語言一個(gè)煥然一新的姿態(tài),并讓學(xué)生從多角度、以多方式去了解和掌握C語言以及程序設(shè)計(jì)的精髓,著重培養(yǎng)學(xué)生無論以后在學(xué)習(xí)、工作中使用什么語言編程,都能靈活應(yīng)用這些思想和方法的能力。同時(shí),讓學(xué)生在學(xué)習(xí)程序設(shè)計(jì)的過程中,養(yǎng)成良好的編程風(fēng)格,不再感到枯燥乏味,而是其樂融融,把學(xué)習(xí)程序設(shè)計(jì)變成一件快樂的事情。
本教材具有以下特點(diǎn):
(1)語法講解更注意通俗易懂,知識的體系結(jié)構(gòu)更符合認(rèn)知規(guī)律。在涉及語法的講解過程中,除了給出語法知識的講解外,每個(gè)知識點(diǎn)都給出了例題和案例,突出應(yīng)用特性,把程序設(shè)計(jì)中最基本、最新、最有價(jià)值的思想和方法滲透到經(jīng)典的C語言中,其目的就是使讀者在學(xué)習(xí)C語言之后,今后無論使用什么語言編程,都能使用這些方法和思想。
(2)力求暴露程序設(shè)計(jì)的思維過程,用最簡明的語言、選用最經(jīng)典的實(shí)例,采用類比的方法來挖掘程序設(shè)計(jì)的精髓,給讀者帶來全新的學(xué)習(xí)體驗(yàn),領(lǐng)悟C語言之妙。
(3)本書的實(shí)例選用科學(xué),并按照不同的學(xué)習(xí)功能進(jìn)行分類設(shè)置。
一類是簡單明了的演示性例題,重點(diǎn)說明C語言的語法知識,實(shí)現(xiàn)基本概念、基本語法的即時(shí)應(yīng)用;另一類為培養(yǎng)程序設(shè)計(jì)能力的設(shè)計(jì)性例題,全書共設(shè)置了50個(gè)應(yīng)用舉例,并給出了學(xué)生成績管理系統(tǒng)、大獎(jiǎng)賽評分系統(tǒng)和萬年歷的完整程序,通過問題分析與算法設(shè)計(jì)、程序?qū)崿F(xiàn)、程序討論和說明等內(nèi)容重點(diǎn)介紹程序設(shè)計(jì)方法,突出算法設(shè)計(jì)和程序編寫調(diào)試的教學(xué),以提高程序設(shè)計(jì)的能力訓(xùn)練。
還有的一類就是把常用的一些算法,比如列舉算法,試探算法、密碼問題、排序問題等等都通過一些經(jīng)典的選例給予了介紹,讓學(xué)生很輕松的接受這些知識。
(4)知識點(diǎn)全面,語言精練,圖文并茂
我們精心設(shè)計(jì)了各部分的案例,因此盡管沒有系統(tǒng)的理論論述,卻能保證知識點(diǎn)的覆蓋全面。本書的程序設(shè)計(jì)舉例在相關(guān)章節(jié)保持了連續(xù)性,前后銜接,逐步擴(kuò)展,既便于教師講解,又便于學(xué)生學(xué)習(xí)理解。全書組織結(jié)構(gòu)清晰,突出程序設(shè)計(jì),重視方法教學(xué),理論聯(lián)系實(shí)際,深入淺出,循序漸進(jìn),邏輯嚴(yán)密,語言流暢,通俗易懂,便于教、便于學(xué)。
書中配有大量的圖解,形象直觀的做比較、表達(dá)關(guān)系、描述原理等,使得全書的風(fēng)格生動(dòng)活潑,又簡明清晰,對讀者具有很強(qiáng)的親和力。
(5)本書的配套教材《C語言程序設(shè)計(jì)上機(jī)指導(dǎo)和習(xí)題解答》是一本相當(dāng)不錯(cuò)的學(xué)習(xí)手冊,對于主教材中的每個(gè)習(xí)題不僅給出了答案,而且給出了為什么是這個(gè)答案的理由;精選了實(shí)驗(yàn)內(nèi)容;增加了計(jì)算機(jī)等級考試中的相關(guān)內(nèi)容,精選了等級考試中的考題和上機(jī)題例,選編了一些例題和習(xí)題,每個(gè)例題和習(xí)題都給出了詳細(xì)的解答,盡管不是最佳方法,但給讀者學(xué)習(xí)C語言一定會(huì)有不小的幫助。
(6)配套資源齊全
《C語言程序設(shè)計(jì)》是湖北省本科層次的精品課程,本教材享有豐富的配套資源,《C語言程序設(shè)計(jì)》精品課程的網(wǎng)站(http://61.184.198.219/cyy/)提供有全套實(shí)訓(xùn)資源、電子教案、教學(xué)視頻、難點(diǎn)解析、經(jīng)典案例、學(xué)生作品等。本書配有電子教案、試題庫以及《C語言程序設(shè)計(jì)上機(jī)指導(dǎo)及習(xí)題解答》教材。與本教材相關(guān)的課件能在中國水利水電出版社網(wǎng)站(http://www.waterpub.com.cn/softdown/.)下載
第二版前言
本書出版以來,經(jīng)過多年的使用,得到了廣大教師和讀者的肯定,特別是2010年被教育部高等學(xué)校高職高專計(jì)算機(jī)類專業(yè)教學(xué)指導(dǎo)委員會(huì)評為優(yōu)秀教材,根據(jù)大多數(shù)教師和讀者的要求,結(jié)合廣大讀者的寶貴意見,在第一版的基礎(chǔ)上進(jìn)行了如下幾個(gè)方面的改進(jìn):
(1)將上機(jī)環(huán)境改為Visual C++ 6.0,基本數(shù)據(jù)類型等內(nèi)容作相應(yīng)的修改和調(diào)整。
(2)語法講解更注意通俗易懂,知識的體系結(jié)構(gòu)更符合認(rèn)知規(guī)律。在涉及語法的講解過程中,除了給出語法知識的講解外,每個(gè)知識點(diǎn)都給出了例題和案例,突出應(yīng)用特性,把程序設(shè)計(jì)中最基本、最新、最有價(jià)值的思想和方法滲透到經(jīng)典的C語言中,其目的就是使讀者在學(xué)習(xí)C語言之后,今后無論使用什么語言編程,都能使用這些方法和思想。
(3)力求暴露程序設(shè)計(jì)的思維過程,用最簡明的語言、最經(jīng)典的實(shí)例,采用類比的方法來挖掘程序設(shè)計(jì)的精髓,給讀者帶來全新的學(xué)習(xí)體驗(yàn),領(lǐng)悟C語言之妙。
(4)適當(dāng)增加了一些例題和習(xí)題。
(5)本書的配套教材《C語言程序設(shè)計(jì)上機(jī)指導(dǎo)與習(xí)題解答》(第二版)作了全面的改版,編譯環(huán)境只介紹了Visual C++ 6.0,增加了計(jì)算機(jī)等級考試中的相關(guān)內(nèi)容和上機(jī)題例,選編了一些例題和習(xí)題,每個(gè)例題和習(xí)題都給出了詳細(xì)的解答,盡管不是最佳方法,但給讀者學(xué)習(xí)C語言一定會(huì)有不小的幫助。
總之,通過這次修訂,本書內(nèi)容更加豐富,敘述更加詳細(xì),描述更加準(zhǔn)確,更加有利于讀者的學(xué)習(xí)。
本次修訂由任正云、李素若、賴玲擔(dān)任主編,琚輝、胡玉榮、張牧、肖衡擔(dān)任副主編,全書的第1、2、3、4、5、6章由任正云編寫,第7章由琚輝編寫,第8、9、10章由賴玲編寫,胡玉榮參與了第4、6章的修訂,李素若參與了第8章的修訂,張牧參與了第9章的修訂,肖衡參與了第10章的修訂,全書由任正云統(tǒng)稿,賴玲和琚輝負(fù)責(zé)全書的校對,所有的程序由王婭紛、王曉雨、嚴(yán)永松、琚輝和陳萬華負(fù)責(zé)調(diào)試,在編寫過程中得到了主審田原教授和相關(guān)專家的指導(dǎo),在此一并表示衷心的感謝。
由于作者水平有限,書中難免還會(huì)存在不足之處,再次懇請廣大讀者批評指正。
編 者
2011年12月
第一版前言
第1章 C語言程序設(shè)計(jì)基礎(chǔ) 1
1.1 程序設(shè)計(jì)及程序設(shè)計(jì)語言 1
1.1.1 程序設(shè)計(jì)語言的發(fā)展 1
1.1.2 C語言的發(fā)展過程 2
1.2 C語言的特點(diǎn) 3
1.3 C程序結(jié)構(gòu) 4
1.3.1 簡單的C程序介紹 4
1.3.2 C程序結(jié)構(gòu) 6
1.4 源程序的編輯、編譯、連接與運(yùn)行 7
習(xí)題 8
第2章 C語言的數(shù)據(jù)類型與基本操作 10
2.1 常量與變量 10
2.1.1 常量 10
2.1.2 變量 13
2.2 標(biāo)識符和關(guān)鍵字 15
2.3 整型數(shù)在計(jì)算機(jī)中的存儲(chǔ)方式 16
2.4 有符號的數(shù)據(jù)類型和無符號的數(shù)據(jù)類型 18
2.5 運(yùn)算符和表達(dá)式 19
2.5.1 賦值運(yùn)算符和賦值表達(dá)式 21
2.5.2 算術(shù)運(yùn)算符和算術(shù)表達(dá)式 22
2.5.3 長度測試運(yùn)算符sizeof 23
2.5.4 關(guān)系運(yùn)算符和關(guān)系表達(dá)式 24
2.5.5 邏輯運(yùn)算符與邏輯表達(dá)式 25
2.5.6 條件運(yùn)算符與條件運(yùn)算表達(dá)式 27
2.5.7 逗號運(yùn)算符與逗號表達(dá)式 29
2.5.8 位運(yùn)算 29
2.6 不同類型數(shù)據(jù)間的轉(zhuǎn)換 32
習(xí)題 34
第3章 順序結(jié)構(gòu)程序設(shè)計(jì) 40
3.1 算法 40
3.1.1 算法的組成要素 40
3.1.2 算法的表示方法 41
3.1.3 自頂向下、逐步細(xì)化的設(shè)計(jì)過程 44
3.2 C語句概述 46
3.2.1 控制語句 46
3.2.2 表達(dá)式語句 46
3.2.3 復(fù)合語句 47
3.3 數(shù)據(jù)的輸入和輸出 48
3.3.1 數(shù)據(jù)的輸出函數(shù) 48
3.3.2 scanf函數(shù) 53
3.4 getchar函數(shù)與putchar函數(shù) 57
3.4.1 字符輸出函數(shù)putchar() 57
3.4.2 字符輸入函數(shù)getchar() 57
習(xí)題 58
第4章 選擇結(jié)構(gòu)程序設(shè)計(jì) 63
4.1 if語句 63
4.1.1 if語句的形式 63
4.1.2 if語句的嵌套 67
4.2 switch語句 69
4.3 程序舉例 71
習(xí)題 75
第5章 循環(huán)結(jié)構(gòu)程序設(shè)計(jì) 79
5.1 while語句 79
5.2 do-while語句 84
5.3 for語句 86
5.4 三種循環(huán)語句的比較 90
5.5 循環(huán)的嵌套 90
5.6 break語句和continue語句 95
5.6.1 break語句 95
5.6.2 continue語句 96
5.7 綜合實(shí)例 96
5.7.1 列舉算法 96
5.7.2 試探算法 98
5.7.3 密碼問題 99
習(xí)題 100
第6章 函數(shù) 106
6.1 函數(shù)概述 106
6.1.1 模塊化程序設(shè)計(jì)方法 106
6.1.2 函數(shù)的概念 106
6.2 函數(shù)的定義與聲明 108
6.2.1 函數(shù)定義 109
6.2.2 函數(shù)的參數(shù)和返回值 110
6.2.3 函數(shù)的聲明 110
6.3 函數(shù)的調(diào)用 111
6.3.1 調(diào)用函數(shù)的一般形式 111
6.3.2 調(diào)用函數(shù)時(shí)數(shù)據(jù)的傳遞 111
6.3.3 函數(shù)的嵌套調(diào)用 113
6.3.4 函數(shù)的遞歸調(diào)用 114
6.4 局部變量和全局變量 117
6.4.1 局部變量 117
6.4.2 全局變量 118
6.5 變量的存儲(chǔ)屬性 121
6.5.1 自動(dòng)變量(auto) 122
6.5.2 寄存器變量(register) 124
6.5.3 靜態(tài)變量(static) 124
6.5.4 外部變量 125
6.6 編譯預(yù)處理 126
6.6.1 宏定義 127
6.6.2 文件包含 132
6.6.3 條件編譯 133
6.7 應(yīng)用舉例 135
習(xí)題 142
第7章 數(shù)組 150
7.1 一維數(shù)組 150
7.1.1 一維數(shù)組的定義 150
7.1.2 一維數(shù)組的初始化 151
7.1.3 一維數(shù)組元素的引用 151
7.1.4 一維數(shù)組的使用 151
7.2 二維數(shù)組和多維數(shù)組 156
7.2.1 二維數(shù)組和多維數(shù)組的概念及其
定義 156
7.2.2 二維數(shù)組的初始化 158
7.2.3 二維數(shù)組和多維數(shù)組的引用 159
7.2.4 二維數(shù)組的經(jīng)典實(shí)例 160
7.3 字符數(shù)組 163
7.3.1 字符數(shù)組的定義 163
7.3.2 字符數(shù)組的輸入輸出 164
7.3.3 常用字符串函數(shù) 165
7.3.4 字符數(shù)組的使用 167
7.4 數(shù)組應(yīng)用實(shí)例 168
7.4.1 排序 168
7.4.2 二分查找 172
習(xí)題 173
第8章 指針 178
8.1 地址和指針的概念 178
8.2 指向變量的指針變量 179
8.2.1 指向變量的指針變量的定義 179
8.2.2 指針運(yùn)算符 179
8.2.3 指針變量的初始化 181
8.2.4 指針變量的運(yùn)算 181
8.2.5 指針變量作為函數(shù)參數(shù) 183
8.2.6 程序?qū)嵗?184
8.3 指針與數(shù)組 186
8.3.1 一維數(shù)組和指針 186
8.3.2 二維數(shù)組和指針 190
8.3.3 程序?qū)嵗?192
8.4 字符串的指針和指向字符串的指針
變量 193
8.4.1 字符串的指針 193
8.4.2 字符串作為函數(shù)參數(shù) 195
8.5 指針數(shù)組 196
8.6 指向指針的指針 197
8.6.1 指向指針的指針的概念 197
8.6.2 指向指針的指針的應(yīng)用 198
8.7 函數(shù)的指針 200
8.7.1 函數(shù)的指針和指向函數(shù)的指針
變量 200
8.7.2 函數(shù)的指針作為函數(shù)參數(shù) 202
8.7.3 函數(shù)指針的應(yīng)用 202
8.8 返回指針的函數(shù) 204
8.9 main()函數(shù)的返回值和參數(shù) 206
8.9.1 main()函數(shù)的返回值 206
8.9.2 main()函數(shù)的參數(shù) 206
習(xí)題 207
第9章 結(jié)構(gòu)體和共用體 211
9.1 概述 211
9.2 結(jié)構(gòu)體與結(jié)構(gòu)體類型變量 211
9.2.1 結(jié)構(gòu)體類型的定義 211
9.2.2 結(jié)構(gòu)體類型變量的定義 212
9.2.3 結(jié)構(gòu)體變量的引用 214
9.2.4 結(jié)構(gòu)體變量的初始化 215
9.3 結(jié)構(gòu)體數(shù)組 216
9.4 指向結(jié)構(gòu)體類型數(shù)據(jù)的指針 219
9.4.1 指向結(jié)構(gòu)體變量的指針 219
9.4.2 指向結(jié)構(gòu)體數(shù)組的指針 220
9.4.3 結(jié)構(gòu)體指針變量作為函數(shù)的參數(shù) 221
9.4.4 結(jié)構(gòu)體與函數(shù)的類型 223
9.5 動(dòng)態(tài)存儲(chǔ)分配與鏈表 225
9.5.1 鏈表的概念 225
9.5.2 動(dòng)態(tài)存儲(chǔ)分配 226
9.5.3 建立和輸出鏈表 227
9.5.4 鏈表的基本操作 228
9.6 共用體 235
9.6.1 共用體的概念和定義 235
9.6.2 共用體變量的引用 237
9.7 枚舉類型 239
9.7.1 枚舉的定義與說明 239
9.7.2 枚舉類型變量的賦值與引用 240
9.8 用Typedef定義類型 241
9.9 應(yīng)用實(shí)例——學(xué)生成績管理系統(tǒng) 242
習(xí)題 252
第10章 文件 256
10.1 文件的概念 256
10.1.1 文件的類型 256
10.1.2 C語言對文件的處理方法 257
10.1.3 文件的訪問方式 257
10.2 格式化數(shù)據(jù)文件操作 258
10.2.1 打開文件函數(shù)fopen() 258
10.2.2 關(guān)閉文件函數(shù)fclose() 260
10.2.3 從文件中格式化輸入數(shù)據(jù)fscanf() 260
10.2.4 向文件中格式化輸出函數(shù)fprintf() 260
10.2.5 文件建立 261
10.2.6 文件訪問 262
10.2.7 文件修改 262
10.3 字符數(shù)據(jù)文件操作 264
10.3.1 從指定文件中讀取一個(gè)字符 264
10.3.2 putc()函數(shù)——指向文件輸出一個(gè)
字符 265
10.3.3 fgets()函數(shù)——從文件中讀一個(gè)
字符串 265
10.3.4 fputs()函數(shù)——向指定文件輸出
一個(gè)字符串 265
10.3.5 feof ()函數(shù)——文件操作是否到
文件尾的檢測函數(shù) 266
10.4 fread()與fwrite()函數(shù) 267
10.5 文件位置定位與錯(cuò)誤處理函數(shù) 268
10.5.1 rewind()函數(shù)——將文件讀寫指
針定位于文件頭 268
10.5.2 fseek()函數(shù)——重新定位文件位
置指針 269
10.5.3 ftell()函數(shù)——測試當(dāng)前讀寫指針
位置 269
10.5.4 ferror()函數(shù)——檢測文件流操作
中的錯(cuò)誤 269
10.5.5 clearerr()函數(shù)——清除出錯(cuò)標(biāo)志 269
10.6 應(yīng)用實(shí)例——大獎(jiǎng)賽評分系統(tǒng) 269
習(xí)題 274
附錄A ASCII字符編碼一覽表 278
附錄B C語言庫函數(shù) 279
參考文獻(xiàn) 285
- Java面向?qū)ο蟪绦蛟O(shè)計(jì) [主編 姜春磊 陳虹潔]
- C語言程序設(shè)計(jì)實(shí)驗(yàn)指導(dǎo)與實(shí)訓(xùn)(第二版) [主編 倪燃]
- 程序思維與C語言實(shí)現(xiàn) [張祎 王俊海 呂波]
- Python程序設(shè)計(jì)及實(shí)踐教程 [肖朝暉]
- C語言程序設(shè)計(jì) [魏琴 劉祖珉 趙仕波 肖陽春]
- C語言程序設(shè)計(jì)實(shí)驗(yàn)教程 [張小剛 司春景]
- 電氣控制與PLC程序設(shè)計(jì)(第二版) [胡冠山]
- Java Web項(xiàng)目化設(shè)計(jì)實(shí)踐教程 [邱云 曾陳萍]
- C語言程序設(shè)計(jì)(第三版) [主編 丁紅 王立新 蔡開立]
- Python數(shù)據(jù)分析 [主編 馮志輝 趙磊 李放]
- Python程序設(shè)計(jì)與應(yīng)用(第二版) [主編 張廣淵]
- C程序設(shè)計(jì)實(shí)踐教程 [劉衛(wèi)國]
- C程序設(shè)計(jì)(慕課版) [劉衛(wèi)國]
- 程序設(shè)計(jì)基礎(chǔ)實(shí)踐教程(C/C++語言版) [張桂芬 葛麗娜]
- C++案例項(xiàng)目精講 [主編 楊國興]
- SwiftUI完全開發(fā) [李智威 著]
- MySQL數(shù)據(jù)庫項(xiàng)目式教程 [陳亞峰]
- C語言程序設(shè)計(jì)習(xí)題與實(shí)驗(yàn)指導(dǎo)(第二版) [主編 甄增榮 張賓]
- C語言程序設(shè)計(jì)(第二版) [主編 甄增榮 田云霞]
- Unity3D虛擬現(xiàn)實(shí)應(yīng)用開發(fā)實(shí)踐 [主 編 劉龍]
- Python程序設(shè)計(jì) [主編 姜春磊 陳虹潔]
- C語言程序設(shè)計(jì)實(shí)踐教程(活頁式) [主編 鄭茵 陳巍 滕泓虬]
- 面向?qū)ο蟪绦蛟O(shè)計(jì) [主編 張勇 張平華 趙小龍]
- Python程序設(shè)計(jì)基礎(chǔ)及實(shí)戰(zhàn) [主編 劉健]
- C語言程序設(shè)計(jì) [姜雪]
- Python程序設(shè)計(jì)實(shí)踐教程 [王鶴琴 蔡正保]
- C++程序設(shè)計(jì)實(shí)踐教程(第三版) [主編 劉衛(wèi)國 曹岳輝]
- C++程序設(shè)計(jì)(第三版) [主編 曹岳輝 劉衛(wèi)國]
- C語言程序設(shè)計(jì)項(xiàng)目化教程(活頁式) [主編 張利華 潘曉利]
- 機(jī)器人流程自動(dòng)化(RPA)實(shí)戰(zhàn)——基于UiPath [主編 金鑫]