《從問(wèn)題到程序:程序設(shè)計(jì)與C語(yǔ)言引論》以c作為工具語(yǔ)言,討論了基本程序設(shè)計(jì)的各方面內(nèi)容,詳細(xì)解釋了與c語(yǔ)言和程序設(shè)計(jì)有關(guān)的問(wèn)題。在新版中,特別加強(qiáng)了針對(duì)近年日益受到業(yè)界和學(xué)術(shù)界廣泛重視的問(wèn)題的討論,并通過(guò)詳細(xì)地分析和討論大量符合c99標(biāo)準(zhǔn)的實(shí)例,給出了分析和分解問(wèn)題、找出解決問(wèn)題的主要步驟、確定函數(shù)抽象、找出循環(huán)、選擇語(yǔ)言結(jié)構(gòu)直至最后做出所需程序的完整過(guò)程。
《從問(wèn)題到程序:程序設(shè)計(jì)與C語(yǔ)言引論》適合作為高等院校計(jì)算機(jī)及相關(guān)專(zhuān)業(yè)第一門(mén)程序設(shè)計(jì)課程的教材,也可供其他學(xué)習(xí)c程序設(shè)計(jì)的讀者自學(xué)使用。
前言
本書(shū)中的編程實(shí)例和模式
第1章 程序設(shè)計(jì)和c語(yǔ)言
1.1 程序和程序語(yǔ)言
1.2 c語(yǔ)言簡(jiǎn)介
1.3 一個(gè)簡(jiǎn)單的c程序
1.4 程序開(kāi)發(fā)過(guò)程
1.5 問(wèn)題與程序設(shè)計(jì)
本章討論的重要概念
練習(xí)
第2章 數(shù)據(jù)與簡(jiǎn)單計(jì)算程序
2.1 基本字符、標(biāo)識(shí)符和關(guān)鍵字
2.2 數(shù)據(jù)、類(lèi)型和簡(jiǎn)單程序
2.2.1 幾個(gè)常用類(lèi)型
2.2.2 函數(shù)printf和簡(jiǎn)單 文本輸出程序
2.3 運(yùn)算符、表達(dá)式和計(jì)算
2.3.1 算術(shù)運(yùn)算符和算術(shù)表達(dá)式
2.3.2 表達(dá)式的求值
2.3.3 計(jì)算和類(lèi)型
2.4 數(shù)學(xué)函數(shù)和簡(jiǎn)單計(jì)算程序
2.4.1 函數(shù)、函數(shù)調(diào)用
2.4.2 數(shù)學(xué)函數(shù)及其使用
2.4.3 函數(shù)調(diào)用中的類(lèi)型轉(zhuǎn)換
語(yǔ)言細(xì)節(jié)和問(wèn)題
c語(yǔ)言的字符集
基本數(shù)據(jù)類(lèi)型的一些問(wèn)題
數(shù)據(jù)形式的轉(zhuǎn)換和輸出
運(yùn)算對(duì)象的求值順序
幾個(gè)常用程序模式
本章討論的重要概念
練習(xí)
第3章 變量、函數(shù)和流程控制
3.1 復(fù)合結(jié)構(gòu)和順序程序
3.2 變量的概念和使用
3.2.1 變量的定義
3.2.2 變量的使用
3.2.3 注釋和簡(jiǎn)單順序程序
3.3 定義函數(shù)(初步)
3.3.1 函數(shù)定義
3.3.2 函數(shù)與程序
3.3.3 函數(shù)與類(lèi)型
3.3.4 自定義輸出函數(shù)
3.4 關(guān)系表達(dá)式、條件表達(dá)式、邏輯表達(dá)式
3.4.1 關(guān)系表達(dá)式和條件表達(dá)式
3.4.2 邏輯表達(dá)式
3.5 語(yǔ)句與控制結(jié)構(gòu)
3.5.1 條件語(yǔ)句:if語(yǔ)句
3.5.2 循環(huán)語(yǔ)句:while語(yǔ)句
3.5.3 循環(huán)語(yǔ)句:for語(yǔ)句
3.6 若干c語(yǔ)言結(jié)構(gòu)
3.6.1 增量和減量運(yùn)算符(++、--)
3.6.2 逗號(hào)運(yùn)算符
3.6.3 實(shí)現(xiàn)二元運(yùn)算符操作的賦值運(yùn)算符
3.6.4 空語(yǔ)句
3.6.5 定義枚舉常量
3.7 輸入和輸出
3.7.1 格式輸入函數(shù)scanf
3.7.2 字符輸入和輸出函?
語(yǔ)言細(xì)節(jié)和問(wèn)題
變量的意義和實(shí)現(xiàn)
賦值操作的一些問(wèn)題
條件表達(dá)式和條件語(yǔ)句
表達(dá)式和求值
輸入和緩沖
幾個(gè)常用程序模式
本章討論的重要概念
練習(xí)
第4章 基本編程技術(shù)
4.1 循環(huán)程序設(shè)計(jì)
4.1.1 基本循環(huán)方式
4.1.2 求一系列完全平方數(shù)
4.1.3 判斷素?cái)?shù)(謂詞函數(shù))
4.1.4 艱難旅程(浮點(diǎn)誤差)
4.1.5 求立方根(迭代和逼近)
4.1.6 求sin函數(shù)值(通項(xiàng)計(jì)算)
4.1.7 從循環(huán)中退出
4.2 輸入循環(huán)
4.2.1 輸入循環(huán)的基本技術(shù)
4.2.2 字符輸入
4.2.3 檢查輸入
4.2.4 一個(gè)簡(jiǎn)單計(jì)算器
4.3 循環(huán)與遞歸
4.3.1 階乘和乘冪(循環(huán),遞歸)
4.3.2 fibonacci序列(計(jì)算與時(shí)間)
4.3.3 為計(jì)算過(guò)程計(jì)時(shí)
4.3.4 fibonacci序列的迭代計(jì)算(程序正確性與循環(huán)不變式)
4.3.5 最大公約數(shù)
4.3.6 河內(nèi)塔(梵塔)問(wèn)題
4.4 程序調(diào)試和排錯(cuò)
4.4.1 測(cè)試
4.4.2 白箱測(cè)試
4.4.3 黑箱測(cè)試
4.4.4 排除程序里的錯(cuò)誤
語(yǔ)言細(xì)節(jié)和問(wèn)題
程序的逐步求精和控制結(jié)構(gòu)嵌套
循環(huán)中的幾種變量
與輸入輸出有關(guān)的幾個(gè)問(wèn)題
輸入與安全性
幾個(gè)常用程序模式
本章討論的重要概念
練習(xí)
第5章 c程序結(jié)構(gòu)
5.1 數(shù)值類(lèi)型
5.1.1 字符類(lèi)型
5.1.2 整數(shù)類(lèi)型
5.1.3 基本數(shù)?類(lèi)型的選擇
5.2 幾種控制語(yǔ)句
5.2.1 do-while循環(huán)結(jié)構(gòu)
5.2.2 流程控制語(yǔ)句
5.2.3 開(kāi)關(guān)語(yǔ)句
5.3 一些標(biāo)準(zhǔn)庫(kù)函數(shù)
5.3.1 字符分類(lèi)函數(shù)
5.3.2 隨機(jī)數(shù)生成函數(shù)
5.4 程序的函數(shù)分解
5.4.1 函數(shù)分解
5.4.2 對(duì)函數(shù)的兩種觀點(diǎn)
5.4.3 函數(shù)定義與調(diào)用之間的配合
5.4.4 函數(shù)原型
5.4.5 求函數(shù)的根
5.4.6 一個(gè)簡(jiǎn)單猜數(shù)游戲
5.5 c程序結(jié)構(gòu)與變量
5.5.1 外部定義的變量
5.5.2 作用域、存在期和變量類(lèi)
5.5.3 變量的其他問(wèn)題
5.6 預(yù)處理
5.6.1 文件包含命令
5.6.2 宏定義與宏替換
5.6.3 條件編譯命令
5.6.4 定義常量
5.6.5 單詞計(jì)數(shù)問(wèn)題
5.7 字位運(yùn)算符
本章討論的重要概念
練習(xí)
第6章 順序數(shù)據(jù)組織:數(shù)組
6.1 數(shù)組的定義和使用
6.1.1 數(shù)組變量的定義和聲明
6.1.2 數(shù)組的使用
6.1.3 數(shù)組?初始化
6.1.4 數(shù)組程序?qū)嵗?br />6.1.5 定義數(shù)組的問(wèn)題
6.2 以數(shù)組為參數(shù)的函數(shù)
6.2.1 一個(gè)例子
6.2.2 修改實(shí)參數(shù)組的元素
6.3 二維和多維數(shù)組
6.3.1 多維數(shù)組的初始化
6.3.2 多維數(shù)組的使用
6.3.3 多維數(shù)組作為函數(shù)的參數(shù)
6.4 字符數(shù)組與字符串
6.4.1 字符數(shù)組
6.4.2 字符串
6.4.3 程序?qū)嵗?br />6.4.4 標(biāo)準(zhǔn)庫(kù)字符串處理函數(shù)
6.4.5 輸出文本里的最長(zhǎng)行
6.5 編程實(shí)例
6.5.1 成績(jī)直方圖
6.5.2 一個(gè)通用的帶檢查的整數(shù)輸入函數(shù)
6.5.3 “計(jì)算”數(shù)組變量的大小
6.5.4 數(shù)組的劃分
6.5.5 數(shù)組的排序
6.5.6 統(tǒng)計(jì)c程序里的關(guān)鍵字
語(yǔ)言細(xì)節(jié)和問(wèn)題
數(shù)組的存儲(chǔ)實(shí)現(xiàn)
越界訪問(wèn)的可能后果
多維數(shù)組的實(shí)現(xiàn)
函數(shù)參數(shù)與sizeof運(yùn)算符
字符串的字典序
幾個(gè)常用程序模式
本章討論的重要概念
練習(xí)
第7章 指針的應(yīng)用
7.1 指針的定義和使用
7.1.1 指針的定義
7.1.2 指針操作
7.1.3 指針作為函數(shù)參數(shù)
7.1.4 有關(guān)指針的幾個(gè)問(wèn)題
7.2 指針與數(shù)組
7.2.1 指向數(shù)組元素的指針
7.2.2 基于指針運(yùn)算的數(shù)組程序設(shè)計(jì)
7.2.3 數(shù)組參數(shù)與指針
7.2.4 指針與數(shù)組操作的程序?qū)嵗?br />7.2.5 字符指針與字符數(shù)組
7.2.6 多維數(shù)組作為參數(shù)的通用函數(shù)
7.3 指針數(shù)組
7.3.1 字符指針數(shù)組
7.3.2 指針數(shù)組與二維數(shù)組
7.3.3 命令行參數(shù)及其處理
7.4 動(dòng)態(tài)存儲(chǔ)管理
7.4.1 c語(yǔ)言的動(dòng)態(tài)存儲(chǔ)管理機(jī)制
7.4.2 兩個(gè)程序?qū)嵗?br />7.4.3 函數(shù)、指針和動(dòng)態(tài)存儲(chǔ)
7.4.4 定義類(lèi)型
7.5 指向函數(shù)的指針
7.5.1 函數(shù)指針的定義和使用
7.5.2 函數(shù)指針作為函數(shù)的參數(shù)
語(yǔ)言細(xì)節(jié)和問(wèn)題
指針運(yùn)算原理
指針轉(zhuǎn)換
使用動(dòng)態(tài)存儲(chǔ)管理的要點(diǎn)和細(xì)節(jié)
動(dòng)態(tài)調(diào)整策略
過(guò)時(shí)的函數(shù)指針形式
復(fù)雜類(lèi)型描述與解讀
幾個(gè)常用程序模式
本章討論的重要概念
練習(xí)
第8章 文件和輸入輸出程序設(shè)計(jì)
8.1 文件的概念
8.1.1 流和文件指針
8.1.2 緩沖式輸入輸出
8.2 文件的使用
8.2.1 文件的打開(kāi)和關(guān)閉
8.2.2 輸入輸出函數(shù)
8.2.3 程序?qū)嵗?br />8.2.4 標(biāo)準(zhǔn)錯(cuò)誤流
8.2.5 直接輸入輸出函數(shù)
8.3 標(biāo)準(zhǔn)流輸入輸出與格式控制
8.3.1 行式輸入?輸出
8.3.2 輸入格式控制
8.3.3 輸出格式控制
8.3.4 以字符串作為格式化輸入輸出對(duì)象
8.4 程序?qū)嵗?br />8.4.1 求文件中數(shù)據(jù)的平均值
8.4.2 一個(gè)背單詞程序
8.4.3 資金賬目系統(tǒng)
幾個(gè)常用程序模式
本章討論的重要概念
練習(xí)
第9章 結(jié)構(gòu)和復(fù)雜數(shù)據(jù)組織
9.1 結(jié)構(gòu)
9.1.1 結(jié)構(gòu)聲明與變量定義
9.1.2 結(jié)構(gòu)變量的初始化和使用
9.1.3 結(jié)構(gòu)、數(shù)組與指針
9.2 枚舉
9.3 結(jié)構(gòu)與函數(shù)
9.3.1 處理結(jié)構(gòu)的函數(shù)
9.3.2 程序?qū)嵗?br />9.4 編程實(shí)例
9.4.1 數(shù)據(jù)組的排序
9.4.2 復(fù)數(shù)的表示和處理
9.5 鏈接結(jié)構(gòu)(自引用結(jié)構(gòu))
9.5.1 鏈接結(jié)構(gòu)
9.5.2 自引用結(jié)構(gòu)的定義
9.5.3 程序?qū)崿F(xiàn)
9.5.4 數(shù)據(jù)與查找
語(yǔ)言細(xì)節(jié)和問(wèn)題
結(jié)構(gòu)的實(shí)現(xiàn)
聯(lián)合
字段
本章討論的重要概念
練習(xí)
第10章 程序開(kāi)發(fā)技術(shù)
10.1 分別編譯和c程序的分塊開(kāi)發(fā)
10.1.1 分塊開(kāi)發(fā)的問(wèn)題和方法
10.1.2 程序?qū)嵗簩W(xué)生成績(jī)處理
10.1.3 分塊重整
10.1.4 其他安排和考慮
10.1.5 模塊化思想和技術(shù)
10.1.6 單一頭文件結(jié)構(gòu)和多個(gè)頭文件結(jié)構(gòu)
10.2 功能模塊和程序庫(kù)
10.2.1 復(fù)數(shù)模塊
10.2.2 目標(biāo)文件和庫(kù)
10.2.3 防止重復(fù)包含
10.3 錯(cuò)誤報(bào)告和處理
10.3.1 建立統(tǒng)一的錯(cuò)誤報(bào)告機(jī)制
10.3.2 定義?參數(shù)的錯(cuò)誤報(bào)告函數(shù)
10.3.3 運(yùn)行中錯(cuò)誤的檢查和處理
10.4 程序的配置
10.4.1 程序的行為參數(shù)和啟動(dòng)時(shí)配置
10.4.2 交互式配置
10.4.3 通過(guò)命令行參數(shù)
10.4.4 采用配置文件
10.5 程序開(kāi)發(fā)過(guò)程
10.5.1 自上而下的開(kāi)發(fā)
10.5.2 自下而上的開(kāi)發(fā)
10.5.3 實(shí)際開(kāi)發(fā)過(guò)程
本章討論的重要概念
練習(xí)
第11章 標(biāo)準(zhǔn)庫(kù)
11.1 標(biāo)準(zhǔn)庫(kù)結(jié)構(gòu)
11.1.1 標(biāo)準(zhǔn)定義([stddef.h])
11.1.2 錯(cuò)誤信息([errno.h])
11.1.3 c99的幾個(gè)頭文件
11.2 幾個(gè)已經(jīng)介紹過(guò)的頭文件
11.3 字符串函數(shù)([string.h])
11.3.1 一些字符串函數(shù)
11.3.2 存儲(chǔ)區(qū)操作函數(shù)
11.4 功能函數(shù)([stdlib.h])
11.4.1 幾個(gè)整數(shù)函數(shù)
11.4.2 數(shù)值轉(zhuǎn)換
11.4.3 執(zhí)行控制
11.4.4 與執(zhí)行環(huán)境交互
11.4.5 常用函數(shù)bsearch和qsort
11.5 日期和時(shí)間([time.h])
11.6 實(shí)現(xiàn)特征([limit.h]和[float.h])
11.6.1 整數(shù)類(lèi)型特征
11.6.2 浮點(diǎn)數(shù)類(lèi)型特征
11.7 其他與輸入輸出有關(guān)的函數(shù)([stdio.h])
11.7.1 符號(hào)常量和類(lèi)型
11.7.2 文件操作函數(shù)
11.7.3 流緩沖區(qū)操作函數(shù)
11.7.4 文件定位及定位函數(shù)
11.7.5 其他有關(guān)函數(shù)
11.7.6 采用va_list參數(shù)的輸出函數(shù)
11.8 定義變長(zhǎng)參數(shù)表([stdarg.h])
11.9 非局部控制轉(zhuǎn)移([setjmp.h])
11.10 調(diào)試斷言和信號(hào)處理([assert.h]和[signal.h])
11.11 標(biāo)準(zhǔn)庫(kù)的其他功能
11.11.1 本地化
11.11.2 多字節(jié)字符
本章討論的重要概念
練習(xí)
第12章 c99導(dǎo)引
12.1 c99擴(kuò)充
12.1.1 語(yǔ)言層擴(kuò)充
12.2 c99 數(shù)組和結(jié)構(gòu)
12.2.1 復(fù)合對(duì)象的初始化
12.2.2 變長(zhǎng)數(shù)組的定義和聲明
12.2.3 函數(shù)的變長(zhǎng)數(shù)組參數(shù)
12.2.4 結(jié)構(gòu)的變長(zhǎng)數(shù)組成員
12.3 幾個(gè)c99標(biāo)準(zhǔn)庫(kù)包
12.3.1 標(biāo)準(zhǔn)庫(kù)包[stdint.h]和[inttype.h]
12.3.2 標(biāo)準(zhǔn)庫(kù)包[complex.h]
附錄a c語(yǔ)言運(yùn)算符表
附錄b c語(yǔ)言速查
進(jìn)一步學(xué)習(xí)的建議
參考文獻(xiàn)