C語言程序設計

盧萍、李開、王多強、甘早斌

  • 出版商: 清華大學
  • 出版日期: 2021-08-01
  • 定價: $420
  • 售價: 8.5$357
  • 語言: 簡體中文
  • 頁數: 374
  • 裝訂: 平裝
  • ISBN: 7302581509
  • ISBN-13: 9787302581505
  • 相關分類: C 程式語言
  • 下單後立即進貨 (約4週~6週)

  • C語言程序設計-preview-1
  • C語言程序設計-preview-2
  • C語言程序設計-preview-3
C語言程序設計-preview-1

商品描述

《C語言程序設計》依據C11標準和用C語言進行程序設計所涉及的知識結構,全面系統地闡述C語言的語法和語義,同時精心提煉一些算法實例進行分析和編程實現,培養學生的程序設計能力。 本書共11章,內容包括概論、C語言的基本元素、標準輸入輸出、程序的語句及流程控制、函數、編譯預處理、數組、指針、結構與聯合、文件、用戶自定義庫,尤其對C語言的重點、難點和特色之處,如位運算、遞歸函數、指針的用法、復雜指針的應用、字段結構、結構指針等進行了詳細介紹。本書概念清楚,敘述翔實,內容新穎實用,實例典型豐富,要點清晰明瞭。既考慮初學者的需求,又突出電腦類專業的教學要求。 本書適合作為高等學校電腦、通信、電子、自動化等相關專業“程序設計”課程的教材,也可作為研究生入學考試C語言與程序設計的參考書,還可供軟件開發工程師和廣大科技人員自學參考。

作者簡介

盧萍,女,副教授,C語言程序設計課程組長。
1988年本科畢業於華中理工大學(現華中科技大學),1993年獲華中理工大學計算機系統結構碩士學位。
主要從事信息存儲理論與技術,大數據處理與分析方面的科學研究工作,參加完成了國家科技攻關項目,國家自然科學重點基金課題,國家“863”計劃等國家重大項目的研究,主持2項GF橫向合作項目,申請國家發明專利多項。
承擔計算機專業本科校級精品課程《C語言程序設計》、省級精品課程《微機接口技術》、《verilog語言》的教學工作,多次獲校教學質量優秀獎,正式出版教材2部,獲校教學成果一等獎1次,獲省教學成果一等獎1次,獲湖北省多媒體課件二等獎1次,獲“國信藍點杯”全國軟件專業人才設計與開發大賽全國總決賽C語言程序設計本科組一等獎優秀指導教師獎2次。

目錄大綱

目錄
第1章概論1
1.1基礎知識1
1.1.1為計算而生1
1.1.2電腦系統概述4
1.1.3程序設計語言5
1.2問題求解和程序設計7
1.2.1問題求解過程7
1.2.2算法和程序8
1.3C語言的發展11
1.3.1C語言的發展過程11
1.3.2C語言的標準化12
1.3.3C語言的特徵13
1.4C語言編程初步14
1.4.1C編程的典型過程14
1.4.2第一個程序: 編程從這里開始15
本章小結21
習題121

第2章C語言的基本元素22
2.1字符集及詞法元素22
2.1.1字符集22
2.1.2詞法元素22
2.2關鍵字和標識符23
2.2.1關鍵字23
2.2.2標識符23
2.3基本數據類型24
2.3.1數據類型概述24
2.3.2char類型25
2.3.3整型類型26
2.3.4浮點類型27
2.3.5C99新增數據類型29
2.4常量與變量31
2.4.1整型常量32
2.4.2浮點型常量33
2.4.3字符常量33
2.4.4字符串常量35
2.4.5符號常量37
2.4.6變量聲明38
2.5運算符和表達式39
2.5.1運算符概述39
2.5.2算術運算41
2.5.3關系運算42
2.5.4邏輯運算43
2.5.5自增和自減運算44
2.5.6賦值運算47
2.5.7條件運算48
2.5.8逗號運算49
2.5.9sizeof運算51
2.6位運算51
2.6.1整數在機內的表示51
2.6.2位邏輯運算52
2.6.3移位運算54
2.6.4位運算的應用55
2.7類型轉換57
2.7.1類型轉換的規則58
2.7.2類型轉換的方法59
2.8枚舉類型60
2.8.1枚舉類型的聲明60
2.8.2用枚舉類型定義符號常量61
2.8.3枚舉變量的定義61
本章小結63
習題263

第3章格式化輸入與輸出66
3.1字符輸入與輸出66
3.1.1字符輸入函數getchar66
3.1.2字符輸出函數putchar67
3.2格式化輸入與輸出69
3.2.1格式輸出函數printf69
3.2.2格式輸入函數scanf73
本章小結79
習題379

第4章程序的語句及流程控制82
4.1語句分類82
4.2表達式語句82
4.3復合語句83
4.4條件語句85
4.4.1if語句85
4.4.2switch語句88
4.5循環語句91
4.5.1while語句91
4.5.2dowhile語句96
4.5.3for語句100
4.5.4循環語句小結104
4.6轉移語句104
4.6.1break語句104
4.6.2continue語句106
4.6.3return語句107
4.6.4goto語句和標號語句107
4.7程序設計實例110
4.7.1嵌套循環110
4.7.2枚舉114
4.7.3篩法116
4.7.4遞推117
本章小結118
習題4118

第5章函數120
5.1模塊化程序設計120
5.1.1函數與模塊化編程120
5.1.2蒙特卡洛模擬: 猜數程序122
5.1.3C程序的一般結構125
5.2自定義函數125
5.2.1函數定義125
5.2.2函數原型128
5.2.3函數調用130
5.3變量的存儲類型132
5.3.1作用域與生存期132
5.3.2自動變量133
5.3.3外部變量134
5.3.4靜態變量137
5.3.5寄存器變量140
5.4遞歸140
5.4.1遞歸概述140
5.4.2遞歸算法分析142
5.4.3遞歸函數設計143
5.4.4經典問題的遞歸程序設計144
5.4.5分治法與快速排序147
5.5多文件的C程序148
5.5.1函數的存儲類型149
5.5.2多文件編程149
5.6參數數目可變的函數151
5.7C11增加的屬性152
5.7.1函數修飾符_Noreturn152
5.7.2存儲類型_Thread_local153
本章小結154
習題5154

第6章編譯預處理157
6.1文件包含157
6.2宏定義158
6.2.1無參宏定義158
6.2.2帶參數的宏定義159
6.2.3取消宏定義162
6.3條件編譯162
6.3.1#if指令162
6.3.2#ifdef指令164
6.3.3#ifndef指令165
6.3.4defined運算符166
6.4斷言166
6.4.1宏assert166
6.4.2靜態斷言167
6.5宏的高級用法167
6.5.1宏操作符#和##168
6.5.2可變參數宏168
6.5.3通用類型宏169
6.5.4預定義宏170
本章小結171
習題6171

第7章數組173
7.1數組概述173
7.2一維數組173
7.2.1一維數組的聲明173
7.2.2一維數組元素的引用和下標175
7.2.3一維數組的運算176
7.2.4一維數組的邏輯結構和存儲結構176
7.2.5初始化數組178
7.2.6用const、extern、static聲明數組182
7.2.7一維數組作為函數的形參182
7.3二維數組185
7.3.1二維數組的定義186
7.3.2二維數組元素的引用和數組運算186
7.3.3二維數組的邏輯結構和存儲結構187
7.3.4二維數組的初始化188
7.3.5二維數組作為函數的形參190
7.4n維數組191
7.4.1n維數組的定義191
7.4.2n維數組的使用192
7.4.3n維數組元素的引用和使用192
7.4.4n維數組的存儲結構193
7.4.5n維數組的初始化194
7.4.6n維數組作為函數的參數195
7.5字符數組和字符串196
7.5.1字符數組196
7.5.2字符串196
7.5.3字符數組的初始化197
7.5.4字符數組的使用197
7.5.5字符串處理函數200
7.5.6二維字符數組和字符串數組208
7.6基於數組的應用210
7.6.1冒泡排序211
7.6.2二分查找212
7.6.3矩陣乘運算215
本章小結216
習題7217

第8章指針220
8.1指針的概念220
8.1.1變量的地址和指針變量220
8.1.2指針變量的聲明222
8.1.3指針的賦值和移動操作223
8.1.4懸掛指針和NULL指針225
8.2指針參數226
8.2.1傳值調用和傳址調用226
8.2.2返回多個值的函數227
8.3指針和一維數組228
8.3.1一維數組元素的指針表示228
8.3.2一維數組參數的指針表示232
8.3.3高精度計算: 超長整數加法235
8.4指針與字符串237
8.4.1字符串的指針表示237
8.4.2字符串作函數參數238
8.5指針數組240
8.5.1指針數組的概念240
8.5.2用指針數組表示字符串數組241
8.5.3指向指針的指針246
8.6main函數的參數249
8.6.1命令行參數249
8.6.2帶參main函數的定義249
8.6.3命令行參數的傳遞251
8.7指針函數252
8.7.1指針函數的聲明252
8.7.2指針函數返回值的分析252
8.7.3指針函數的定義及應用253
8.8指向函數的指針256
8.8.1函數指針變量的聲明256
8.8.2函數指針的應用257
8.9指針與多維數組258
8.9.1指向數組元素的指針259
8.9.2指向數組的指針259
8.9.3二維數組參數的指針表示262
8.9.4多維數組的指針表示265
8.10用typedef定義類型名266
8.10.1typedef的用法267
8.10.2typedef與#define的區別268
8.11復雜聲明268
8.11.1函數指針數組269
8.11.2指向函數的指針函數270
8.11.3函數指針數組的指針271
8.12restrict和_Atomic類型限定符273
8.12.1restrict限定的指針273
8.12.2_Atomic類型限定符273
本章小結274
習題8274

第9章結構與聯合278
9.1結構概述278
9.2結構的聲明和引用279
9.2.1結構類型的聲明279
9.2.2結構變量的定義280
9.2.3結構變量的初始化280
9.2.4點運算符281
9.2.5嵌套的結構281
9.2.6結構的大小282
9.3結構數組285
9.3.1結構數組的定義285
9.3.2結構數組的初始化286
9.3.3結構數組作函數參數286
9.4指向結構的指針288
9.4.1結構指針的聲明288
9.4.2箭頭運算符289
9.4.3結構數組的指針表示289
9.4.4柔性數組成員295
9.5結構與函數296
9.5.1結構或結構指針作函數參數296
9.5.2結構或結構指針作函數返回值297
9.5.3復合文字作實參299
9.6聯合300
9.7字段結構303
9.8結構指針的應用306
9.8.1靜態和動態數據結構306
9.8.2單鏈表的結構307
9.8.3單鏈表的建立和輸出308
9.8.4單鏈表的基本操作313
9.8.5單鏈表排序319
9.8.6十字交叉鏈表322
9.8.7雙向鏈表325
本章小結326
習題9326

第10章文件329
10.1文件概述329
10.1.1數據流329
10.1.2文件的概念329
10.1.3文件類型330
10.1.4文件指針332
10.1.5文件操作的基本步驟333
10.2文件的打開與關閉333
10.2.1打開文件函數fopen333
10.2.2關閉文件函數fclose335
10.2.3應用舉例336
10.3文件的順序讀寫336
10.3.1字符讀寫操作337
10.3.2字符串讀寫操作338
10.3.3格式化讀寫340
10.3.4數據塊讀寫342
10.4文件的隨機讀寫345
10.4.1文件指針的復位346
10.4.2文件指針的隨機移動346
10.4.3文件指針當前位置的獲取346
10.5文件的狀態及異常檢測350
10.5.1文件結束判斷函數350
10.5.2文件讀寫錯誤信息判斷函數350
10.5.3文件讀寫錯誤信息清除函數35010.6文件的重定向352
10.7C11標準新增文件操作語法353
10.7.1打開文件時的獨占模式354
10.7.2用gets_s函數替代gets函數354
10.7.3文件操作中參數使用restrict修飾的說明355
10.7.4關於邊界檢查函數接口355
本章小結355
習題10356

第11章用戶自定義庫358
11.1用戶自定義庫概述358
11.2allocation庫的設計358
11.3allocation庫的接口定義360
11.4allocation庫函數的實現361
11.5allocation庫的生成和使用363
11.5.1生成allocation庫文件363
11.5.2allocation庫的使用364
本章小結365
習題11365

附錄AASCII字符編碼表366
附錄B常用標準庫函數368
參考文獻374