本書(shū)共9章,內(nèi)容依次包括:C語(yǔ)言程序基本結(jié)構(gòu),函數(shù),指針和數(shù)組,順序表,結(jié)構(gòu),字符串,文件,鏈表,二維數(shù)組和指針。本書(shū)可以作為普通高校計(jì)算機(jī)、信息技術(shù)相關(guān)專(zhuān)業(yè)和理工科“C語(yǔ)言程序設(shè)計(jì)”課程的教材,也可以作為從事計(jì)算機(jī)工程與應(yīng)用的科技工作者的參考書(shū),還可以作為計(jì)算機(jī)程序設(shè)計(jì)愛(ài)好者的教材。
在提倡全民編程的時(shí)代,作為教師,經(jīng)常被問(wèn)及三個(gè)問(wèn)題:一是學(xué)習(xí)編程必須學(xué)習(xí)哪些內(nèi)容;二是學(xué)習(xí)編程有什么更有效的方法;三是學(xué)習(xí)編程有什么更深刻的意義。
1
什么是程序?專(zhuān)業(yè)上有一個(gè)關(guān)于程序本質(zhì)的經(jīng)典概括:算法+數(shù)據(jù)結(jié)構(gòu)=程序。算法是問(wèn)題求解的有限步驟,數(shù)據(jù)結(jié)構(gòu)是算法實(shí)現(xiàn)的工具,因此學(xué)習(xí)編程必須學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu):工欲善其事,必先利其器。
編程需要編程語(yǔ)言,C++語(yǔ)言不僅是應(yīng)用廣泛的系統(tǒng)編程語(yǔ)言,而且包含著常用數(shù)據(jù)結(jié)構(gòu)的標(biāo)準(zhǔn)化即標(biāo)準(zhǔn)模板庫(kù),現(xiàn)在的很多編程語(yǔ)言,例如Java和Python,都是在這個(gè)基礎(chǔ)上開(kāi)發(fā)出來(lái)的。因此,學(xué)習(xí)編程必須學(xué)習(xí)C++語(yǔ)言。
C++語(yǔ)言是在C語(yǔ)言的基礎(chǔ)上直接發(fā)展而來(lái)的。用李未院士的“三個(gè)語(yǔ)言環(huán)境”理論來(lái)講,C++是對(duì)象語(yǔ)言,C是解釋C++的元語(yǔ)言,C對(duì)C++的解釋性關(guān)系是模型語(yǔ)言,數(shù)據(jù)結(jié)構(gòu)是這種解釋性關(guān)系的一種理想模本,三者密不可分。因此,學(xué)習(xí)編程必須學(xué)習(xí)C語(yǔ)言。
如上所述,學(xué)習(xí)編程,必須把C、C++和數(shù)據(jù)結(jié)構(gòu)作為一個(gè)有機(jī)的整體來(lái)學(xué)習(xí)。于是,第二個(gè)問(wèn)題可以落實(shí)為:學(xué)習(xí)C、C++和數(shù)據(jù)結(jié)構(gòu)有什么更有效的方法?
2
練習(xí)書(shū)法先要臨摹字帖,學(xué)習(xí)寫(xiě)作先要閱讀經(jīng)典。C++創(chuàng)始人本賈尼說(shuō),學(xué)習(xí)編程.如同學(xué)習(xí)寫(xiě)作,先要模仿經(jīng)典程序。
什么是經(jīng)典程序?對(duì)C、C++和數(shù)據(jù)結(jié)構(gòu)這個(gè)整體來(lái)說(shuō),C++標(biāo)準(zhǔn)模板庫(kù)就是經(jīng)典程序,因?yàn)樗浅S脭?shù)據(jù)結(jié)構(gòu)的標(biāo)準(zhǔn)化。
但是在很多人看來(lái),C++標(biāo)準(zhǔn)模板庫(kù)高不可攀。于是,本書(shū)把第二個(gè)問(wèn)題又進(jìn)一步落實(shí)到如何搭建階梯,使每一個(gè)學(xué)習(xí)編程的人都可以輕松地拾級(jí)而上,模仿標(biāo)準(zhǔn)模板庫(kù)的常用代碼。這個(gè)階梯是一個(gè)程序序列,它從一個(gè)簡(jiǎn)單程序開(kāi)始,每一個(gè)程序都是在前一個(gè)程序的基礎(chǔ)上稍加改進(jìn)而成。它將學(xué)習(xí)模式從傳統(tǒng)的概念引領(lǐng)改為程序引領(lǐng),概念不再是機(jī)械的灌輸而是實(shí)踐的概括。
這個(gè)程序序列在C語(yǔ)言部分是如何搭建的呢?這要從類(lèi)型講起。C語(yǔ)言和C++語(yǔ)言一樣,都是基于類(lèi)型的編程語(yǔ)言。類(lèi)型有兩類(lèi),一類(lèi)是簡(jiǎn)單類(lèi)型,另一類(lèi)是復(fù)合類(lèi)型。簡(jiǎn)單類(lèi)型是獨(dú)立的類(lèi)型,主要有整型、實(shí)型和字符型。這些類(lèi)型的差別主要是輸入、輸出格式符的差別,這種差別使得對(duì)一種類(lèi)型的學(xué)習(xí),很容易轉(zhuǎn)換到對(duì)另一種類(lèi)型的學(xué)習(xí)。因此,本書(shū)以整型為主,從一個(gè)整數(shù)的按位逆置輸出程序開(kāi)始,通過(guò)功能的不斷擴(kuò)展,形成一種程序序列,貫穿第1章C語(yǔ)言程序基本結(jié)構(gòu)和第2章函數(shù)。
王立柱,天津師范大學(xué)教授,湖北工業(yè)大學(xué)特聘教授,教育部一微軟精品課主持人,主編多本國(guó)家級(jí)規(guī)劃教材。先后獲得天津市教學(xué)成果二等獎(jiǎng),湖北省教學(xué)成果一等獎(jiǎng)。
第1章 C語(yǔ)言程序基本結(jié)構(gòu)
1.1 第一個(gè)C語(yǔ)言程序
1.1.1 編程基本過(guò)程
1.1.2 集成開(kāi)發(fā)環(huán)境
1.1.3 字面常量、左值和右值
1.1.4 表達(dá)式
1.1.5 對(duì)象的地址
1.2 循環(huán)結(jié)構(gòu)
1.2.1 while語(yǔ)句
1.2.2 for語(yǔ)句
1.3 標(biāo)準(zhǔn)輸入函數(shù)
1.4 分而治之
1.5 選擇結(jié)構(gòu)(if-else語(yǔ)句)
1.6 關(guān)系運(yùn)算和邏輯運(yùn)算
1.7 條件表達(dá)式和復(fù)合賦值表達(dá)式
1.8 輸入驗(yàn)證
1.8.1 break和continue語(yǔ)句
1.8.2 前哨(sentinels)
練習(xí)
第2章 函數(shù)
2.1 函數(shù)的定義和調(diào)用
2.2 函數(shù)聲明
2.3 自設(shè)頭文件
2.4 應(yīng)用函數(shù)設(shè)計(jì)舉例
2.4.1 階乘
2.4.2 質(zhì)數(shù)
2.4.3 最大公約數(shù)
2.4.4 斐波那契數(shù)列
2.4.5 耵的近似值
2.5 函數(shù)與對(duì)象的存儲(chǔ)類(lèi)別
2.5.1 局部變量
2.5.2 靜態(tài)局部變量
2.5.3 外部變量
2.5.4 寄存器變量
練習(xí)
第3章 指針和數(shù)組
3.1 揩針和地址傳遞
3.1.1 地址和指針
3.1.2 兩種參數(shù)傳遞
3.1.3 對(duì)象值交換
3.2 數(shù)組和線性表
3.3 指針和數(shù)組
3.3.1 指針和數(shù)組的統(tǒng)
3.3.2 數(shù)組求和
3.3.3 數(shù)組逆置
3.4 const限定符
3.5 數(shù)組應(yīng)用
3.5.1 最大元素
3.5.2 選擇排序
3.5.3 順序搜索和二分搜索
3.5.4 平均值
3.6 類(lèi)型轉(zhuǎn)換
3.7 動(dòng)態(tài)空間
3.7.1 動(dòng)態(tài)數(shù)組
3.7.2 動(dòng)態(tài)分配函數(shù)與對(duì)象
3.7.3 最近平均值
3.8 指針與索引
3.9 函數(shù)指針
練習(xí)
第4章 順序表
4.1 數(shù)組求和分析
4.2 動(dòng)態(tài)數(shù)組應(yīng)用
4.3 結(jié)構(gòu)初步
4.4 typedef名字
4.5 準(zhǔn)構(gòu)造和準(zhǔn)析構(gòu)
4.6 尾插
4.7 讀取
4.8 求和
4.9 刪除
4.10 基本函數(shù)補(bǔ)充
4.11 參數(shù)合法性檢驗(yàn)
4.12 順序表頭文件
4.13 順序表的意義
練習(xí)
第5章 結(jié)構(gòu)、聯(lián)合、枚舉
5.1 結(jié)構(gòu)
5.1.1 結(jié)構(gòu)與對(duì)象
5.1.2 結(jié)構(gòu)Date
5.1.3 結(jié)構(gòu)與數(shù)組
5.2 聯(lián)合
5.3 枚舉常量和switch-case語(yǔ)句
練習(xí)
第6章 字符串
6.1 字符型
6.2 字符串特點(diǎn)
6.3 字符串基本操作
6.3.1 字符串輸入輸出
6.3.2 字符串求長(zhǎng)
6.3.3 字符串復(fù)制
6.3.4 字符串連接
6.3.5 字符串大小寫(xiě)
6.3.6 字符串比較
6.3.7 字符查找
6.3.8 字符串匹配
6.4 設(shè)計(jì)字符串基本操作
6.4.1 設(shè)計(jì)字符串輸入和輸出函數(shù)
6.4.2 設(shè)計(jì)字符串求長(zhǎng)函數(shù)
6.4.3 設(shè)計(jì)字符串復(fù)制函數(shù)
6.4.4 設(shè)計(jì)字符串連接函數(shù)
6.4.5 設(shè)計(jì)字符串大小寫(xiě)函數(shù)
6.4.6 設(shè)計(jì)字符串比較函數(shù)
6.4.7 設(shè)計(jì)字符查找函數(shù)
6.5 函數(shù)返回指針
練習(xí)
第7章 文件
7.1 文件指針
7.2 文件打開(kāi)與關(guān)閉
7.3 文件的讀寫(xiě)
7.3.1 字符的讀寫(xiě)
7.3.2 字符串的讀寫(xiě)
7.3.3 格式讀寫(xiě)
7.3.4 無(wú)格式讀寫(xiě)
練習(xí)
第8章 鏈表
8.1 鏈表設(shè)計(jì)
8.1.1 鏈表結(jié)點(diǎn)
8.1.2 鏈表
8.1.3 鏈表插入
8.1.4 鏈袁刪除
8.1.5 鏈表逆置
8.2 鏈表聲明與實(shí)現(xiàn)
8.3 Josephus問(wèn)題
練習(xí)
第9章 二維數(shù)組和指針
9.1 二維數(shù)組
9.1.1 二維數(shù)組定義
9.1.2 二維數(shù)組初始化
9.1.3 二維數(shù)組和指針
9.2 二維數(shù)組和一維數(shù)組
9.2.1 二維數(shù)組作為一維數(shù)組
9.2.2 馬鞍點(diǎn)
9.2.3 -維數(shù)組作為二維數(shù)組
9.3 指針數(shù)組和二級(jí)指針
9.4 二級(jí)指針和二維數(shù)組
練習(xí)
附錄A 命名規(guī)則
附錄B 基本類(lèi)型
附錄C 編譯預(yù)處理
參考文獻(xiàn)