本書從程序設計的實際能力培養出發,由淺入深、深入淺出,將理論與實踐有機結合,集知識傳播和能力培養為一體。本書內容豐富、注重實踐;突出重點、分散難點;例題廣泛、結合實際。本書的宗旨在于進一步鞏固對基本知識的理解和掌握,提高學生的邏輯分析、抽象思維和程序設計能力,培養學生良好的程序設計風格,進而具備編寫中、大型程序的能力。 本書中的程序在按照模塊化程序設計思想進行編寫的同時,每一個程序都遵循軟件工程方法學的編程風格,即采用縮進格式,程序中附有注釋,以便于對程序的分析、理解和自學。
耿姝,哈爾濱石油學院教授,計算機學院副院長,計算機基礎課程負責人,主要負責C語言程序設計、大學計算機基礎。已發表多篇論文,出版過多部教材。
第1章 C語言程序設計概述11.1 程序與程序設計語言11.1.1 程序11.1.2 計算機語言11.2 程序設計(解決什么問題、如何解決、實現方法)31.3 C語言的發展41.4 C語言的特點51.5 C程序的基本組成71.6 C語言的上機執行過程121.6.1 C程序的開發過程121.6.2 Visual C++6.0開發環境及程序測試與調試131.6.3 Turbo C 2.0開發環境及程序測試與調試171.7 C語言學習方法191.7.1 為什么要學習C語言191.7.2 如何學習C語言201.7.3 C語言學習資源20本章小結20習題121第2章 C語言基礎232.1 C語言的數據類型232.1.1 整型數據類型232.1.2 實型數據類型252.2 常量262.2.1 整型常量262.2.2 字符常量262.2.3 實型常量272.2.4 字符串常量282.2.5 符號常量292.3 變量292.3.1 變量的定義292.3.2 變量賦初值302.4 運算符312.4.1 算術運算符312.4.2 賦值運算符342.4.3 逗號運算符352.4.4 條件運算符362.4.5 求字節長度運算符及其 表達式372.4.6 位運算符382.4.7 類型轉換40本章小結42習題243第3章 順序結構程序設計473.1 算法473.1.1 算法的概念473.1.2 算法的特性473.1.3 算法的優劣483.1.4 算法的描述483.2 C語句概述523.2.1 表達式語句523.2.2 控制語句533.2.3 函數調用語句533.2.4 復合語句533.2.5 空語句533.3 數據的輸入/輸出533.3.1 格式輸出函數printf()543.3.2 格式輸入函數scanf()583.3.3 字符輸出函數putchar()613.3.4 字符串輸出函數puts()623.3.5 字符輸入函數getchar()633.3.6 字符串輸入函數gets()643.4 順序結構程序設計舉例64本章小結67習題367第4章 選擇結構程序設計694.1 為什么需要選擇結構程序設計694.2 關系運算符和關系表達式694.2.1 關系運算符694.2.2 關系表達式704.2.3 關系運算符的優先次序和結合性704.3 邏輯運算符和邏輯表達式724.3.1 邏輯運算符724.3.2 邏輯表達式734.3.3 邏輯運算符的優先次序和結合性754.4 用if語句實現選擇結構764.4.1 if語句的基本形式764.4.2 使用條件運算符改寫if語句804.5 選擇結構的嵌套814.6 用switch語句實現多分支選擇結構834.7 選擇結構程序設計舉例87本章小結90習題490第5章 循環結構程序設計935.1 為什么使用循環結構935.2 用while語句實現循環結構程序設計935.3 用do…while語句實現循環結構程序設計955.4 用for語句實現循環結構程序設計965.5 循環的嵌套985.6 幾種循環的比較1005.7 break和continue語句1005.7.1 break語句1005.7.2 continue語句1015.7.3 break和continue語句的區別1025.8 程序舉例102本章小結106習題5106第6章 數組1086.1 為什么使用數組1086.2 一維數組1086.2.1 一維數組的定義1086.2.2 一維數組的引用1106.2.3 一維數組的初始化1116.2.4 一維數組程序設計舉例1126.3 二維數組1156.3.1 二維數組的定義1156.3.2 二維數組的引用1166.3.3 二維數組的初始化1176.3.4 二維數組程序設計舉例1186.4 字符數組1196.4.1 字符數組的定義1196.4.2 字符數組的初始化1206.4.3 字符數組的引用1206.4.4 字符串和字符串結束標志1216.4.5 字符數組的輸入/輸出1216.4.6 字符串處理函數1226.4.7 字符數組程序設計舉例1266.5 數組的應用程序設計舉例127本章小結128習題6129第7章 函數1317.1 函數概述1317.2 函數定義1327.3 函數調用1337.3.1 函數調用的一般形式1337.3.2 函數調用的方式1337.4 函數引用說明1347.5 函數的參數和返回值1357.5.1 形式參數和實際參數1357.5.2 函數的返回值1367.5.3 指針作為函數參數1377.5.4 主函數與命令行參數1407.6 函數與帶參數的宏的區別1407.7 函數的嵌套調用與遞歸調用1437.7.1 函數的嵌套調用1437.7.2 函數的遞歸調用1437.8 函數指針與返回指針的函數1447.8.1 函數指針1447.8.2 函數指針作函數的參數1457.8.3 返回指針的函數1467.9 變量的作用域1477.9.1 局部變量1477.9.2 全局變量1487.10 變量的存儲類別1487.10.1 局部變量的存儲類別1497.10.2 全局變量的存儲類別1517.11 內部函數和外部函數1537.11.1 內部函數1537.11.2 外部函數1537.12 程序設計舉例154本章小結161習題7161第8章 指針1748.1 計算機中的內存1748.1.1 內存地址1748.1.2 內存中保存的內容1748.1.3 地址就是指針1758.2 指針的定義1758.2.1 指針變量的聲明1758.2.2 指針變量的初始化1758.2.3 指針變量的值1768.2.4 取地址操作符&1768.2.5 指針變量占據一定的內存空間1768.2.6 指向指針的指針1778.3 使用指針1778.3.1 運算符*1778.3.2 指針的類型和指針所指向的類型1788.3.3 同類型指針的賦值1798.3.4 指針的類型和指針所指向的類型不同1798.4 指針的運算1818.4.1 算術運算之“指針+整數”或者“指針?整數”1818.4.2 指針?指針1828.4.3 指針的大小比較1838.5 指針表達式與左值1848.5.1 指針與整型1848.5.2 指針與左值1848.5.3 指針與const1848.6 動態內存分配1858.6.1 動態分配的好處1858.6.2 malloc與free函數1868.7 指針與數組1868.7.1 數組名指針1868.7.2 使用數組名常指針表示數組元素1878.7.3 指向數組元素的指針變量1878.7.4 指向數組的指針變量1888.7.5 指針數組1898.8 指針、結構體和結構體數組1908.8.1 兩種訪問形式1908.8.2 聲明創建一個結構體數組1918.8.3 結構數組的初始化1918.8.4 結構數組的使用1928.8.5 指向結構數組的指針1928.9 函數指針1938.9.1 函數名指針1938.9.2 指向函數的指針1948.9.3 函數指針數組1958.9.4 指向函數指針的指針196本章小結196習題8197第9章 結構體、共用體和枚舉2039.1 結構體類型2039.1.1 建立結構體聲明2039.1.2 結構體變量的定義2049.1.3 結構體變量的引用2059.2 結構體數組2069.3 結構體指針2079.3.1 結構體變量的指針2079.3.2 結構體數組的指針2089.3.3 向函數傳遞結構信息2099.4 鏈表的基本知識2109.4.1 動態分配和釋放空間的函數2109.4.2 建立和輸出鏈表2119.4.3 鏈表的基本操作2129.5 共用體類型2149.6 枚舉類型2169.7 typedef簡介2199.8 程序設計舉例221本章小結224習題9225第10章 文件系統23210.1 概述23210.2 文件類型和指針23210.3 文件的打開與關閉23310.3.1 文件的打開函數(fopen()函數)23310.3.2 文件關閉函數(fclose()函數)23510.4 文件的讀/寫23510.4.1 字符讀/寫函數(fgetc()函數和fputc()函數)23510