胡明、王紅梅編寫的《程序設計基礎--從問題到程序(第2版高等學校計算機基礎教育規劃教材)》以C 語言為工具,以程序設計過程為主線,結合實際問題,基于計算思維,通過“問題→想法→算法→程序” 的問題求解過程,帶領讀者分析問題、構造算法、設計程序,在潛移默化中掌握程序設計語言的基本知識,掌握程序設計的一般過程和基本方法,提高計算思維能力以及應用程序設計語言解決實際問題的能力。
本書適用于程序設計的初學者,主要面向沒有任何編程知識和編程經歷的讀者。本書遵循初學者的認知規律和知識基礎,科學安排知識單元之間的拓撲關系,概念清晰,實例豐富,深入淺出,是程序設計初學者的理想教材。
第1章 緒論
1.1 程序、程序設計與程序設計語言
1.1.1 程序與程序設計
1.1.2 程序設計語言
1.2 程序的基本構成
1.2.1 程序示例
1.2.2 基本字符集
1.2.3 詞法單位
1.2.4 語法單位
1.2.5 程序
1.3 程序的上機過程
1.3.1 編程環境
1.3.2 程序編輯
1.3.3 程序編譯
1.3.4 程序連接
1.3.5 運行調試
1.4 程序風格
1.4.1 標識符的命名規則
1.4.2 注釋
1.4.3 縮進
1.4.4 行文格式
1.5 問題求解與程序設計
1.5.1 程序設計的一般過程
1.5.2 程序設計的核心——算法
1.5.3 程序設計實例——雞兔同籠問題
習題
第2章 數據的存儲表示
引例2.1 計算圓的面積
2.1 數據的存儲
2.1.1 二進制
2.1.2 內存
2.2 基本數據類型
2.2.1 整型
2.2.2 實型
2.2.3 字符型
2.2.4 邏輯型
2.3 常量
2.3.1 字面常量
2.3.2 符號常量
2.4 變量
2.4.1 變量的概念
2.4.2 變量的定義和初始化
2.4.3 變量的賦值
2.5 程序設計實例
2.5.1 實例1——溫度轉換
2.5.2 實例2——計算本息和
習題
第3章 數據的運算處理
3.1 算術運算
引例3.1 求平均值
3.1.1 算術運算
3.1.2 運算符的優先級和結合性
3.2 邏輯運算
引例3.2 判斷閏年
3.2.1 關系運算
3.2.2 邏輯運算
3.3 賦值運算
3.3.1 賦值運算
3.3.2 自增/自減運算
3.4 其他運算
3.4.1 逗號運算
3.4.2 取長度運算
3.4.3 條件運算
3.5 運算對象的類型轉換
3.5.1 自動轉換
3.5.2 強制轉換
3.6 程序設計實例
3.6.1 實例1——通用產品代碼
3.6.2 實例2——瘋狂賽車
習題
第4章 程序的基本控制結構
4.1 順序結構
引例4.1 整數的逆值
4.1.1 簡單的順序結構
4.1.2 復合語句
4.2 選擇結構
引例4.2 水仙花數
4.2.1 邏輯值控制的選擇結構
4.2.2 算術值控制的選擇結構
4.3 循環結構
引例4.3 歐幾里得算法
4.3.1 當型循環
4.3.2 直到型循環
4.3.3 計數型循環
4.3.4 循環結構的比較
4.3.5 循環結構的嵌套
4.4 其他控制語句
引例4.4 素數判定
4.4.1 break語句
4.4.2 continue語句
4.5 程序設計實例
4.5.1 實例1——將三個整數由小到大輸出
4.5.2 實例2——今年已經過去多久了
4.5.3 實例3——百元買百雞問題
4.5.4 實例4——哥德巴赫猜想
習題
第5章 批量同類型數據的組織——數組
5.1 一維數組
引例5.1 舞林大會
5.1.1 一維數組的定義和初始化
5.1.2 一維數組的操作
5.2 二維數組
引例5.2 哥尼斯堡七橋問題
5.2.1 二維數組的定義和初始化
5.2.2 二維數組的操作
5.3 程序設計實例
5.3.1 實例1——折半查找
5.3.2 實例2——合并有序數組
5.3.3 實例3——對角線元素之和
5.3.4 實例4——幻方問題
習題
第6章 程序的組裝單元——函數
6.1 用戶定義的函數——自定義函數
引例6.1 歐幾里得算法
6.1.1 函數定義
6.1.2 函數調用
6.1.3 函數聲明
6.2 系統定義的函數——庫函數
引例6.2 素數判定
6.2.1 頭文件與文件包含
6.2.2 標準輸入輸出函數
6.2.3 隨機函數
6.2.4 其他常用庫函數
6.3 變量的作用域
引例6.3 雞兔同籠問題
6.3.1 局部變量
6.3.2 全局變量
6.4 變量的生存期
引例6.4 字數統計
6.4.1 自動變量
6.4.2 靜態變量
6.5 程序設計實例
6.5.1 實例1——三角形的面積
6.5.2 實例2——猜數游戲
習題
第7章 變量的間接訪問——指針
7.1 指針
引例7.1 答疑教室
7.1.1 指針的概念
7.1.2 指針變量的定義和初始化
7.1.3 指針變量的操作
7.1.4 指針所指變量的操作
7.2 指針作為函數的參數
引例7.2 雞兔同籠問題
7.2.1 值傳遞方式——函數的輸入
7.2.2 指針傳遞方式——函數的輸出
7.2.3 指針傳遞方式——函數的輸入輸出
7.3 數組作為函數的參數
引例7.3 順序查找
7.3.1 一維數組作為函數的參數
7.3.2 二維數組作為函數的參數
7.4 程序設計實例
7.4.1 實例1——三個整數由小到大輸出
7.4.2 實例2——哥德巴赫猜想
7.4.3 實例3——求一元二次方程的根
7.4.4 實例4——簡單選擇排序
習題
第8章 字符數據的組織——字符串
引例8.1 愷撒加密
8.1 字符串變量的定義和初始化
8.1.1 字符數組
8.1.2 字符串指針
8.2 字符串的操作
8.2.1 輸入輸出操作
8.2.2 賦值操作
8.2.3 字符串的比較
8.2.4 常用字符串庫函數
8.3 程序設計實例
8.3.1 實例1——字數統計
8.3.2 實例2——字符串匹配
習題
第9章 自定義數據類型
9.1 可枚舉數據的組織——枚舉類型
引例9.1 行走機器人
9.1.1 枚舉類型的定義
9.1.2 枚舉變量的定義與初始化
9.1.3 枚舉變量的操作
9.2 不同類型數據的組織——結構體類型
引例9.2 統計入學成績
9.2.1 結構體類型的定義
9.2.2 結構體變量的定義和初始化
9.2.3 結構體變量的操作
9.3 批量不同類型數據的組織——結構體數組
引例9.3 統計入學成績
9.3.1 結構體數組的定義和初始化
9.3.2 結構體數組的操作
9.4 為自定義數據類型定義別名
9.5 程序設計實例
9.5.1 實例1——荷蘭國旗問題
9.5.2 實例2——最近對問題
習題
第10章 再談函數
10.1 函數的嵌套調用
引例 10.1 字符串的循環左移
10.1.1 函數——封裝的小程序
10.1.2 函數的嵌套調用
10.2 函數的遞歸調用
引例 10.2 求
10.2.1 遞歸的定義
10.2.2 函數的遞歸調用
10.3 程序設計實例
10.3.1 實例1——公共子序列
10.3.2 實例2——弦截法求方程的根
10.3.3 實例3——漢諾塔問題
10.3.4 實例4——折半查找
習題
第11章 再談指針
11.1 指針與數組
引例11.1 判斷回文串
11.1.1 用指針訪問一維數組
11.1.2 用指針訪問二維數組
11.1.3 指針數組
11.2 指針與結構體
引例11.2 統計入學成績
11.2.1 指向結構體的指針
11.2.2 結構體指針作為函數參數
11.3 動態存儲分配
引例11.3 發紙牌
11.3.1 申請和釋放存儲空間
11.3.2 動態數組
11.3.3 鏈表
11.4 程序設計實例
11.4.1 實例1——求最大字符串
11.4.2 實例2——進制轉換
習題
第12章 再談輸入輸出
引例12.1 統計入學成績
12.1 文件與文件指針
12.1.1 文本文件和二進制文件
12.1.2 文件緩沖區
12.1.3 文件指針
12.2 文件的當前位置指針
12.2.1 什么是文件的當前位置指針
12.2.2 跟蹤文件的當前位置指針
12.2.3 定位文件的當前位置指針
12.3 文件的打開與關閉
12.3.1 文件的打開
12.3.2 文件的關閉
12.4 文件的讀寫操作
12.4.1 字符方式文件讀寫
12.4.2 字符串方式文件讀寫
12.4.3 格式化方式文件讀寫
12.4.4 二進制方式文件讀寫
12.5 程序設計實例
12.5.1 實例1——文件復制
12.5.2 實例2——注冊與登錄
習題
第13章 再談程序的基本結構
13.1 多文件程序
13.1.1 多文件程序的構成
13.1.2 將源程序文件分解為多個程序文件模塊
13.2 外部變量和外部函數
13.2.1 外部變量
13.2.2 外部函數
13.3 嵌套包含
13.3.1 條件編譯
13.3.2 保護頭文件
13.4 程序設計實例——石頭、剪子、布游戲
習題
第14章 低級程序設計
引例14.1 XOR加密
14.1 數據表示
14.1.1 二進制數與八進制數和十六進制數之間的轉換
14.1.2 位域
14.2 位運算
14.2.1 位邏輯運算
14.2.2 移位運算
14.2.3 補位原則
14.2.4 位運算的應用
14.3 程序設計實例
14.3.1 實例1——快速歐幾里得算法
14.3.2 實例2——過濾特殊字符
習題
第15章 基本的算法設計技術
15.1 蠻力法
15.1.1 設計思想
15.1.2 程序設計實例——起泡排序
15.2 窮舉法
15.2.1 設計思想
15.2.2 程序設計實例——假幣問題
15.3 遞推法
15.3.1 設計思想
15.3.2 程序設計實例——捕魚知多少
15.4 分治法
15.4.1 設計思想
15.4.2 程序設計實例——數字旋轉方陣
15.5 動態規劃法
15.5.1 設計思想
15.5.2 程序設計實例——0/1背包問題
15.6 貪心法
15.6.1 設計思想
15.6.2 程序設計實例——埃及分數
習題
附錄A 標準ASCII碼
附錄B 運算符的優先級和結合性
附錄C 常用庫函數
參考文獻