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