新概念C程序設計大學教程-(第4版) 版權信息
- ISBN:9787302481430
- 條形碼:9787302481430 ; 978-7-302-48143-0
- 裝幀:一般膠版紙
- 冊數:暫無
- 重量:暫無
- 所屬分類:>>
新概念C程序設計大學教程-(第4版) 本書特色
本書是一種“以計算思維訓練為核心,以能力培養為目標”的C語言程序設計教材,基于“程序設計 = 算法思維 語言藝術 工程規范”的知識和能力框架,以及“前期以培養解題思路為主,語法知識夠用就行;后期補充必要的語法細節”的教學策略編寫。全書共9單元可分為4個部分。第1部分是針對C程序設計的初級訓練:第1單元介紹C語言程序設計首先應當掌握的一些基本概念和方法;第2、3單元在第1單元的基礎上介紹判斷結構和重復結構;第4單元介紹窮舉、迭代、遞歸和模擬,奠定算法基礎。第2部分是在第1部分的基礎上進行數據類型的擴展:第5單元介紹數組,第6單元介紹3種可定制數據類型——構造體、共用體和枚舉,第7單元介紹指針及其應用。第3部分只有第8單元一個單元,介紹分治、回溯、貪心策略和動態規劃,作為算法設計進階,可以使讀者的程序設計能力提升到較高水平。第4部分即第9單元介紹一些可能用得著的有關內容,包括外部變量、內聯函數、帶參宏定義、契約式編程與防御式編程、文件操作。這樣的結構可以滿足多種不同層次的教和學的需求,并兼顧自學。作者在編寫本書時力求概念準確、難點分散、例題經典、習題豐富、題型全面、注重效果,并以C99作為藍本。本書可以作為高等學校各專業的新一代程序設計課程教材,也可供從事程序設計相關領域的人員自學或參考。
新概念C程序設計大學教程-(第4版) 內容簡介
以C99標準為藍本并兼顧C89標準。? 零起點,實例引導,輕松入門,螺旋式深入、擴展,適合不同層次的教學。? 彰顯“程序設計 = 計算思維 語言藝術 工程規范”的程序設計教育理念。? 按照“算法分析 代碼示例 語法說明 測試設計”的思路組織各知識單元。? 概念力求本質性,示例力求典型性、說明力求啟迪性,結構力求便于梳理性。? 習題類型多、題量大,覆蓋面寬。
新概念C程序設計大學教程-(第4版) 目錄
目??錄
第1單元 C程序起步 1
1.1 一個簡單的計算器程序設計 1
1.1.1
用偽代碼描述的簡單計算器程序算法 1
1.1.2
將偽代碼描述的算法逐步細化為C程序 2
1.1.3
C語言程序的編譯、鏈接與執行 4
1.2 數據類型、標識符與聲明 6
1.2.1
數據類型 6
1.2.2
C語言標識符規則 6
1.2.3
聲明 7
1.3 表達式 8
1.3.1
字面量 8
1.3.2
數據實體 8
1.3.3
含有操作符的表達式及其求值規則 10
1.4 函數 13
1.4.1
用函數組織程序 13
1.4.2
函數定義、函數調用與函數返回 14
1.4.3
函數聲明 16
1.4.4
main(?)函數 16
1.4.5
庫函數與頭文件 17
1.4.6
printf(?)函數的基本用法 17
1.4.7
scanf(?)函數的基本用法 19
1.5 程序錯誤與異常 21
1.5.1
程序中的語法錯誤與編譯錯誤信息 21
1.5.2
程序中的邏輯錯誤及其測試 23
1.5.3
C語言的實現定義行為和未定義行為 24
1.5.4
C程序運行異常與契約失敗 25
1.5.5
設計用戶友好的程序 26
1.6 知識鏈接A:整數類型 26
1.6.1
有符號整數類型與無符號整數類型 26
1.6.2
標準整數類型與擴展整數類型 27
1.6.3
宏與整數類型的極值宏 28
1.6.4
整數常量使用的3種進制 30
1.6.5
整數常量的標識 30
1.7 知識鏈接B:浮點類型 31
1.7.1
浮點類型的值的特性:取值范圍與精度 31
1.7.2
浮點數據的舍入模式 32
1.7.3
浮點類型數據的操作限制 33
1.7.4
浮點類型常量的書寫格式 33
1.7.5
_Complex類型和_Imaginary類型 34
1.8 知識鏈接C:字符類型 34
1.8.1
字符編碼概述 34
1.8.2
char類型的基本特點 35
1.8.3
轉義字符 36
1.8.4
用scanf( )和printf( )輸入與輸出字符 36
1.8.5
用getchar(?)和putchar(?)輸入與輸出字符 37
習題1 38
第2單元 選擇程序設計 44
2.1 可選擇計算類型的計算器程序算法分析 44
2.1.1
粗略算法分析 44
2.1.2
計算函數calculate(?)的算法分析 45
2.1.3
判等操作符與關系操作符 46
2.2
if-else型選擇語句 46
2.2.1
用if-else實現的calculate(?)函數 46
2.2.2
if-else語句的特點 47
2.2.3
if-else if語句 48
2.2.4
瘸腿if-else語句嵌套 49
2.2.5
邏輯操作符與邏輯表達式 50
2.2.6
條件表達式 51
2.2.7
良好的程序書寫風格 52
2.3 選擇結構的測試 53
2.3.1
白箱測試法 53
2.3.2
使用double類型數據的calculate(?)代碼 54
2.3.3
等價分類法 55
2.4
switch型選擇語句 58
2.4.1
基于整數值匹配的選擇語句——switch語句 58
2.4.2
一個字符分類程序 59
2.4.3
用switch語句的calculate(?)函數 61
2.4.4
switch語句與if-else語句的比較 62
2.5 知識鏈接D:變量的作用域與生存期 63
2.5.1
標識符的作用域 63
2.5.2
變量的生存期與存儲分配 66
2.6 知識鏈接E:const限定符 68
2.6.1
用const限定變量 68
2.6.2
用const限定函數參數 70
2.7 知識鏈接F:左值表達式與右值表達式 70
2.7.1
左值表達式和右值表達式的概念與鑒定 70
2.7.2
左值表達式的應用 72
習題2 73
第3單元 循環程序設計 81
3.1 可連續計算的計算器算法分析 81
3.1.1
初步算法 81
3.1.2
算法細化 81
3.1.3
循環結構的C語言實現 82
3.2
while語句 82
3.2.1
while語句的格式與特點 82
3.2.2
采用while語句的可連續型計算器主函數 83
3.2.3
逗號操作符 84
3.3
do-while語句 85
3.3.1
do-while語句的格式與特點 85
3.3.2
采用do-while語句的可連續型計算器主函數 85
3.4
for語句 86
3.4.1
for語句的格式與特點 86
3.4.2
采用for語句的可連續型計算器主函數 86
3.4.3
計數型循環語句 88
3.4.4
復合賦值操作符與自增、自減操作符 92
3.5 循環結構的測試 93
3.5.1
基于路徑覆蓋的循環結構測試 93
3.5.2
邊值分析法與循環結構測試 93
3.5.3
基于因果分析的程序測試 95
3.6
break與continue 97
3.6.1
break與continue語法概要 97
3.6.2
實例:求素數 98
3.7 知識鏈接G:表達式的副作用與序列點 100
3.7.1
表達式的副作用 100
3.7.2
序列點及其對表達式求值順序的影響 101
3.7.3
副作用編程對策 103
3.8 知識鏈接H:算術數據類型轉換 104
3.8.1
算術表達式中的數據類型轉換 104
3.8.2
普通算術轉換中的“提升拉齊”規則 104
3.8.3
傳送轉換中的數據類型轉換 106
3.8.4
數據的顯式類型轉換 107
3.8.5
數據類型轉換風險 108
習題3 112
第4單元 算法基礎 120
4.1 窮舉 120
4.1.1
搬磚問題 121
4.1.2
推斷名次 123
習題4.1 127
4.2 迭代與遞推 131
4.2.1
用二分迭代法求方程在指定區間的根 132
4.2.2
猴子吃桃子問題 135
4.2.3
用輾轉相除法求兩個正整數的*大公因子 137
習題4.2 140
4.3 遞歸 143
4.3.1
階乘的遞歸計算 143
4.3.2
漢諾塔 146
4.3.3
臺階問題 149
習題4.3 150
4.4 模擬 151
4.4.1
產品隨機抽樣 152
4.4.2
用蒙特卡洛法求?的近似值 155
4.4.3
事件步長法——中子擴散問題 156
4.4.4
時間步長法——鹽水池問題 158
習題4.4 162
第5單元 數組 165
5.1 一維數組 165
5.1.1
數組類型的特征 165
5.1.2
數組的定義 166
5.1.3
數組的初始化 167
5.1.4
下標變量 168
5.1.5
變長數組與常量數組 169
5.2 排序與查找 170
5.2.1
直接選擇排序 170
5.2.2
冒泡排序 172
5.2.3
二分查找 175
5.3 二維數組 176
5.3.1
二維數組的概念 176
5.3.2
二維數組的初始化 177
5.3.3
訪問二維數組元素 179
5.4 字符串 180
5.4.1
字符串字面量 180
5.4.2
字符數組與C字符串變量 181
5.4.3
字符串的輸入與輸出 182
5.4.4
字符串操作的庫函數 185
習題5 188
第6單元 可定制數據類型 194
6.1 構造體類型 194
6.1.1
構造體類型的特征與定制 194
6.1.2
用typedef定義類型的別名 195
6.1.3
構造體變量 196
6.1.4
構造體變量的分量及其操作 199
6.1.5
構造體數組 200
6.1.6
復合字面量 203
6.2 共用體類型 204
6.2.1
共用體類型的定制及其變量的定義 204
6.2.2
共用體類型與構造體類型的比較 205
6.2.3
共用體變量的應用舉例 207
6.3 枚舉類型 209
6.3.1
枚舉類型及其定義 209
6.3.2
枚舉變量及其聲明 210
6.3.3
對枚舉變量和枚舉元素的操作 210
6.3.4
用枚舉為類提供整型符號常量名稱 211
習題6 211
第7單元 指針 219
7.1 指針類型與指針變量 219
7.1.1
指針及其聲明 219
7.1.2
同類型指針間的賦值與判等操作 220
7.1.3
指針的遞引用 222
7.1.4
void指針 223
7.1.5
用const限定指針 223
習題7.1 224
7.2 數組與指針 229
7.2.1
數組名具有退化的左值性 229
7.2.2
下標表達式的指針含義 230
7.2.3
指針與字符串 232
7.2.4
二維數組與指針 234
習題7.2 236
7.3 函數與指針 242
7.3.1
指針作為函數參數 242
7.3.2
帶參主函數 249
7.3.3
返回指針值的函數 250
7.3.4
函數類型與指向函數的指針 251
習題7.3 257
7.4 指向構造體的指針與鏈表 261
7.4.1
指向構造體類型變量的指針 261
7.4.2
鏈表及其特點 262
7.4.3
構建鏈表 263
習題7.4 265
7.5 動態存儲分配 268
7.5.1
申請需要的存儲空間 269
7.5.2
釋放一個指針指向的存儲空間 271
7.5.3
修改一個指針指向的存儲空間大小 271
7.5.4
構建動態鏈表 272
7.5.5
帶有彈性數組成員的構造體 276
習題7.5 277
第8單元 算法設計進階* 278
8.1 分治策略 278
8.1.1
快速排序 278
8.1.2
自行車帶人問題 281
習題8.1 284
8.2 回溯策略 286
8.2.1
迷宮問題 287
8.2.2
八皇后問題 290
習題8.2 292
8.3 貪心策略 294
8.3.1
旅行費用問題 294
8.3.2
刪數問題 297
習題8.3 299
8.4 動態規劃 301
8.4.1
動態規劃概述 301
8.4.2
點數值三角形的*優路徑 303
8.4.3
背包問題 305
習題8.4 309
第9單元 語海拾貝 312
9.1 外部變量 312
9.1.1
外部變量及其聲明 312
9.1.2
外部變量的鏈接性 312
9.1.3
外部變量的風險 317
9.2 內聯函數 317
9.2.1
內聯函數的概念 317
9.2.2
內聯函數的定義 318
9.2.3
內聯函數的限制 319
9.3 帶參宏 319
9.3.1
帶參宏的基本定義格式 319
9.3.2
使用帶參宏的注意事項 320
9.3.3
帶參宏與函數的比較 320
9.4
C語言契約式編程與防御式編程 322
9.4.1
斷言 322
9.4.2
庫函數調用錯誤處理 324
9.4.3
程序運行異常處理 326
9.5 數據文件 329
9.5.1
數據文件及其分類 329
9.5.2
FILE類型及其指針 330
9.5.3
數據文件操作的一般過程 332
習題9 337
附錄A C語言運算符的優先級和結合方向 344
附錄B C語言的關鍵字 345
附錄C 格式化輸出函數printf(
)?的格式 346
C.1
printf(?)格式參數的結構 346
C.2
printf(?)格式符 346
C.3 長度修飾符 347
C.4 域寬與精度說明 348
C.5 格式前綴修飾符 348
附錄D 格式化輸入函數scanf(
)?的格式 349
D.1
scanf(?)指針參數 349
D.2
scanf(?)格式參數的結構 349
D.2.1
格式參數字符串的結構 349
D.2.2
基本格式符和長度修正 349
D.2.3
字段寬度 350
D.3
scanf(?)的停止與返回 351
D.4 數值數據的輸入控制 351
D.5 字符型數據的輸入控制 351
D.5.1
在格式字段前添加空格使格式字段可以跳過空白字符 351
D.5.2
用掃描集控制字符數組的讀入 351
附錄E 編譯預處理命令 352
E.1 宏定義 352
E.2 文件包含 352
E.3 條件編譯 352
附錄F C標準庫頭文件 353
附錄G C語言常用的標準庫函數 354
G.1 數學函數 354
G.2 字符函數和字符串函數 355
G.3 輸入與輸出函數 356
G.4 動態內存分配函數 357
G.5 退出程序函數 358
G.6 數值轉換函數 358
G.7 時間和日期函數 358
附錄H C語言編譯出錯信息 360
H.1 致命錯誤 360
H.2 一般錯誤 360
H.3 警告 365
附錄I C99、C89與K&R C 主要內容的比較 368
參考文獻 369
·V·
展開全部
新概念C程序設計大學教程-(第4版) 作者簡介
張基溫 研究和教學領域涉及計算機科學與技術、信息管理、信息經濟學、電子政務與電子商務、新媒體、服務科學,發表論文百余篇,出版著作百余種;先后擔任名古屋大學訪問學者,山西財經大學、江南大學、華東政法大學、福建工程學院、晉城學院、廣西職業技術學院等多所大學的專職、客座或兼職教授,北京大學博雅方略城市發展與信息化研究中心研究員,南京大學出版社總編顧問,太原高新技術區IT研究院實驗室主任,山西省緊缺人才專家委員會副主任等職,中國信息經濟學會常務理事,全國高等院校計算機基礎教育研究會常務理事兼課程建設委員會副主任,中國計算機學會教育專業委員會委員,教育部NIT考試委員會委員,江蘇省計算機基礎教學指導委員會委員,山西省新世紀專家學者協會副會長;為清華大學出版社、電子工業出版社、中國水利水電出版社、南京大學出版社等出版社主編了信息管理與信息系統專業、計算機實驗與實踐、大學生信息素養等多個系列教材。在面向過程程序設計教學領域,從20世紀80年代初就開始進行有關研究和改革,嘗試將軟件工程方法和算法思想引入程序設計,倡導“程序設計 = 計算思維 語言藝術 工程規范”的程序設計教育理念,推行“以思維訓練為核心,程序測試與程序設計并行”、“前期重在邏輯思維和方法訓練、語法夠用就行;后期進行語法細節補充”的程序設計課程教學方法。他主筆并與他人聯合署名的《C語言程序設計教程》是國家級十一五規劃教材,并于2007年被評為國家級精品教材。