本書是普通高等教育“十二五”國家級規(guī)劃教材和國家精品課程教材。全書共10章,內(nèi)容包括:程序設(shè)計ABC,數(shù)據(jù)類型、運(yùn)算符與表達(dá)式,鍵盤輸入與屏幕輸出,程序的控制結(jié)構(gòu),函數(shù),數(shù)組,指針,結(jié)構(gòu)體與共用體,文件操作,C程序設(shè)計常見錯誤及解決方案等。本書注重教材的可讀性和可用性,每章開頭有內(nèi)容關(guān)鍵詞和難點提示;每章結(jié)尾安排本章小結(jié),給出了該章常見編程錯誤提示;典型例題一題多解,由淺入深,強(qiáng)化知識點、算法、編程方法與技巧;還將程序測試、程序調(diào)試與排錯、軟件的健壯性和代碼風(fēng)格、結(jié)構(gòu)化與模塊化程序設(shè)計方法等軟件工程知識融入其中;配套教材《C語言大學(xué)實用教程學(xué)習(xí)指導(dǎo)(第4版)》包括習(xí)題解答、上機(jī)實驗指導(dǎo)、案例分析三部分,案例分析中給出了錯誤案例與趣味經(jīng)典實例分析;為任課教師免費(fèi)提供電子課件及全部例題和習(xí)題源代碼。
蘇小紅,哈爾濱工業(yè)大學(xué)計算機(jī)學(xué)院博士生導(dǎo)師,計算機(jī)應(yīng)用技術(shù)專家,研究領(lǐng)域主要是色彩匹配,信息融合,空間計算,人工神經(jīng)網(wǎng)絡(luò),進(jìn)化算法,計算機(jī)圖形學(xué),灰色預(yù)測,彩色圖像處理等。
目 錄
第1章 程序設(shè)計ABC (1)
1.1 計算機(jī)與人 (1)
1.2 計算機(jī)與程序設(shè)計語言 (3)
1.3 程序設(shè)計語言的故事 (5)
1.4 C語言的故事 (7)
1.5 程序設(shè)計語言的工作原理 (11)
1.5.1 運(yùn)行 (11)
1.5.2 內(nèi)存 (12)
1.6 本章小結(jié) (12)
習(xí)題1 (13)
第2章 數(shù)據(jù)類型、運(yùn)算符與表達(dá)式 (14)
2.1 一個簡單的C程序例子 (14)
2.2 C程序常見符號分類 (16)
2.3 數(shù)據(jù)類型 (17)
2.3.1 為什么引入數(shù)據(jù)類型 (17)
2.3.2 從基本數(shù)據(jù)類型到抽象數(shù)據(jù)類型 (18)
2.3.3 類型修飾符 (19)
2.3.4 標(biāo)識符命名 (20)
2.4 常量 (21)
2.4.1 整型常量 (21)
2.4.2 實型常量 (21)
2.4.3 字符常量 (22)
2.4.4 字符串常量 (23)
2.4.5 宏常量 (23)
2.4.6 枚舉常量 (24)
2.5 變量 (25)
2.5.1 變量的定義與初始化 (25)
2.5.2 const類型修飾符 (26)
2.5.3 使用變量時的注意事項 (26)
2.6 常用運(yùn)算符及表達(dá)式 (33)
2.6.1 運(yùn)算符的優(yōu)先級與結(jié)合性 (33)
2.6.2 算術(shù)運(yùn)算符 (33)
2.6.3 關(guān)系運(yùn)算符 (35)
2.6.4 邏輯運(yùn)算符 (36)
2.6.5 賦值運(yùn)算符 (38)
2.6.6 增1和減1運(yùn)算符 (39)
2.6.7 類型強(qiáng)制轉(zhuǎn)換運(yùn)算符 (40)
2.6.8 位運(yùn)算符 (41)
2.6.9 逗號運(yùn)算符 (43)
2.7 賦值和表達(dá)式中的類型轉(zhuǎn)換 (43)
2.8 本章小結(jié) (45)
習(xí)題2 (45)
第3章 鍵盤輸入與屏幕輸出 (47)
3.1 C語句分類 (47)
3.2 表達(dá)式語句 (47)
3.3 復(fù)合語句和空語句 (48)
3.4 基本的輸入/輸出操作 (49)
3.4.1 字符輸入/輸出 (49)
3.4.2 格式輸入/輸出 (51)
*3.4.3 使用函數(shù)Scane()時需要注意的問題 (57)
3.5 本章小結(jié) (64)
習(xí)題3 (65)
第4章 程序的控制結(jié)構(gòu) (68)
4.1 算法及其描述方法 (68)
4.1.1 算法的概念 (68)
4.1.2 算法的描述方法 (69)
4.2 順序結(jié)構(gòu) (71)
4.2.1 順序結(jié)構(gòu)的流程圖表示 (71)
4.2.2 應(yīng)用程序舉例 (72)
4.3 選擇結(jié)構(gòu) (75)
4.3.1 應(yīng)用場合 (75)
4.3.2 選擇結(jié)構(gòu)的流程圖表示 (75)
4.3.3 條件語句 (76)
4.3.4 開關(guān)語句 (84)
4.4 循環(huán)結(jié)構(gòu) (88)
4.4.1 應(yīng)用場合 (88)
4.4.2 循環(huán)結(jié)構(gòu)的流程圖表示 (89)
4.4.3 循環(huán)語句 (89)
4.4.4 單重循環(huán)程序?qū)嵗?(91)
4.4.5 嵌套循環(huán)及其程序?qū)嵗?(104)
4.5 流程轉(zhuǎn)移控制語句 (108)
4.5.1 goto語句 (108)
4.5.2 break與continue語句 (108)
4.5.3 程序?qū)嵗?(110)
*4.6 程序調(diào)試與排錯 (115)
4.6.1 程序中常見的出錯原因 (115)
4.6.2 程序調(diào)試與排錯的基本方法 (117)
4.6.3 使用getchar()需要注意的問題 (118)
*4.7 結(jié)構(gòu)化程序設(shè)計方法簡介 (124)
4.7.1 關(guān)于goto論戰(zhàn) (124)
4.7.2 結(jié)構(gòu)化程序設(shè)計的核心思想 (125)
4.7.3 “自頂向下、逐步求精”的程序設(shè)計方法 (126)
4.8 本章小結(jié) (129)
習(xí)題4 (130)
第5章 函數(shù) (139)
5.1 程序設(shè)計的藝術(shù) (139)
5.2 函數(shù)的定義與使用 (140)
5.2.1 函數(shù)的分類 (140)
5.2.2 函數(shù)的定義 (141)
5.2.3 函數(shù)的調(diào)用、參數(shù)傳遞和返回值 (142)
5.2.4 函數(shù)原型 (143)
5.2.5 主函數(shù)main()的特殊性 (144)
5.3 變量的作用域和存儲類型 (145)
5.3.1 變量的作用域 (145)
5.3.2 全局變量 (147)
5.3.3 變量的存儲類型 (148)
5.4 函數(shù)封裝 (150)
5.5 預(yù)處理指令 (151)
5.5.1 #include (151)
5.5.2 #define和#undef (152)
5.5.3 條件編譯 (153)
5.6 使用assert()查錯 (154)
5.7 模塊和鏈接 (155)
*5.8 模塊化程序設(shè)計方法簡介 (158)
5.8.1 模塊劃分的原則 (158)
5.8.2 應(yīng)用實例――“猜數(shù)”游戲 (159)
*5.9 遞歸 (161)
5.9.1 遞歸問題的提出 (161)
5.9.2 遞歸函數(shù) (162)
5.10 本章小結(jié) (166)
習(xí)題5 (166)
第6章 數(shù)組 (171)
6.1 數(shù)組類型的應(yīng)用場合 (171)
6.2 數(shù)組的定義、引用和初始化 (171)
6.2.1 數(shù)組的定義 (171)
6.2.2 數(shù)組的引用 (173)
6.2.3 數(shù)組的初始化 (174)
6.2.4 程序?qū)嵗?(175)
6.3 向函數(shù)傳遞一維數(shù)組 (181)
6.4 向函數(shù)傳遞二維數(shù)組 (192)
6.5 字符數(shù)組 (196)
6.5.1 字符數(shù)組與字符串的關(guān)系 (196)
6.5.2 字符數(shù)組的輸入/輸出 (198)
6.5.3 字符串處理函數(shù) (199)
6.5.4 應(yīng)用實例 (200)
6.6 本章小結(jié) (202)
習(xí)題6 (203)
第7章 指針 (209)
7.1 指針概述 (209)
7.1.1 指針的概念 (209)
7.1.2 為什么引入指針的概念 (211)
7.1.3 指針變量作函數(shù)參數(shù) (213)
7.1.4 字符指針作為函數(shù)參數(shù) (222)
7.2 指針和數(shù)組間的關(guān)系 (226)
7.2.1 一維數(shù)組的地址和指針 (227)
7.2.2 二維數(shù)組的地址和指針 (234)
7.3 指針數(shù)組 (239)
*7.4 函數(shù)指針 (243)
*7.5 帶參數(shù)的main()函數(shù) (249)
*7.6 動態(tài)數(shù)組的實現(xiàn) (250)
7.6.1 C程序的內(nèi)存映像 (250)
7.6.2 動態(tài)內(nèi)存分配函數(shù) (251)
7.6.3 一維動態(tài)數(shù)組的實現(xiàn) (253)
7.6.4 二維動態(tài)數(shù)組的實現(xiàn) (254)
*7.7 使用const修飾指針變量 (256)
*7.8 代碼風(fēng)格 (257)
7.8.1 程序版式 (257)
7.8.2 命名規(guī)則 (260)
7.8.3 函數(shù)設(shè)計 (260)
7.8.4 防御性程序設(shè)計 (261)
7.9 本章小結(jié) (262)
習(xí)題7 (263)
第8章 結(jié)構(gòu)體與共用體 (269)
8.1 結(jié)構(gòu)體的應(yīng)用場合 (269)
8.2 結(jié)構(gòu)體類型與結(jié)構(gòu)體變量 (271)
8.2.1 結(jié)構(gòu)體類型的聲明 (271)
8.2.2 用typedef定義結(jié)構(gòu)體類型 (271)
8.2.3 結(jié)構(gòu)體變量的定義 (272)
8.2.4 指向結(jié)構(gòu)體變量的指針 (274)
8.2.5 結(jié)構(gòu)體變量的引用和初始化 (275)
8.3 結(jié)構(gòu)體數(shù)組 (277)
8.3.1 結(jié)構(gòu)體數(shù)組的定義 (277)
8.3.2 結(jié)構(gòu)體數(shù)組程序?qū)嵗?(278)
8.3.3 指向結(jié)構(gòu)體數(shù)組的指針 (281)
8.4 向函數(shù)傳遞結(jié)構(gòu)體 (282)
*8.5 動態(tài)數(shù)據(jù)結(jié)構(gòu) (284)
8.5.1 問題的提出 (284)
8.5.2 鏈表的定義 (285)
8.5.3 鏈表的特點及操作原理 (286)
8.5.4 鏈表的建立 (287)
8.5.5 鏈表的刪除操作 (289)
8.5.6 鏈表的插入操作 (290)
8.6 共用體 (293)
8.7 本章小結(jié) (295)
習(xí)題8 (295)
第9章 文件操作 (299)
9.1 計算機(jī)中的流 (299)
9.2 文件 (300)
9.2.1 存儲設(shè)備的使用 (300)
9.2.2 目錄 (300)
9.2.3 文件格式 (301)
9.3 基本文件操作 (302)
9.3.1 基本文件操作函數(shù) (302)
9.3.2 錯誤處理 (305)
9.3.3 程序示例 (306)
9.3.4 基本文件操作的意義 (311)
9.4 高級文件操作 (312)
9.4.1 文件的打開與關(guān)閉 (312)
9.4.2 文件的讀/寫 (312)
9.4.3 程序?qū)嵗?(314)
9.4.4 標(biāo)準(zhǔn)輸入與標(biāo)準(zhǔn)輸出 (315)
9.5 本章小結(jié) (316)
習(xí)題9 (317)
第10章 C程序設(shè)計常見錯誤及解決方案 (318)
附錄A 常用基本概念、名詞、語句、運(yùn)算符、數(shù)據(jù)類型和算法索引表 (331)
附錄B C關(guān)鍵字 (337)
附錄C Visual C++下各數(shù)據(jù)類型所占字節(jié)數(shù)和取值范圍 (338)
附錄D C運(yùn)算符的優(yōu)先級與結(jié)合性 (339)
附錄E ASCII碼的字符編碼 (340)
附錄F ASCII碼和ASCII擴(kuò)展碼字符表 (341)
附錄G 常用的ANSI C標(biāo)準(zhǔn)庫函數(shù) (342)
參考文獻(xiàn) (348)