《C語(yǔ)言程序設(shè)計(jì)教程》由教學(xué)篇、實(shí)驗(yàn)篇以及附錄三部分組成。教學(xué)篇分為10章,第1章對(duì)高級(jí)語(yǔ)言以及C語(yǔ)言的形成與發(fā)展作了具體的敘述;第2章、第3章介紹了C程序基礎(chǔ);第4章、第5章介紹了C程序的控制結(jié)構(gòu);第6章介紹了組合數(shù)據(jù)結(jié)構(gòu)“數(shù)組”;第7章介紹了C語(yǔ)言的模塊化程序設(shè)計(jì)“函數(shù)”;第8章、第9章詳細(xì)、全面地介紹了C語(yǔ)言的精華——“指針”與“動(dòng)態(tài)數(shù)據(jù)結(jié)構(gòu)”;第10章介紹了C語(yǔ)言的文件系統(tǒng)。實(shí)驗(yàn)篇分為2章,第1章為實(shí)驗(yàn)基礎(chǔ),對(duì)C源程序的開發(fā)環(huán)境Visual C++6.0和Turbo C作了全面詳細(xì)的介紹,作為學(xué)習(xí)C程序設(shè)計(jì)的基礎(chǔ);第2章為實(shí)驗(yàn)操作,共安排了10個(gè)實(shí)驗(yàn),實(shí)驗(yàn)內(nèi)容與節(jié)奏與本課程的理論教學(xué)保持同步。附錄部分提供了附錄A至附錄H共8個(gè)附錄,它們依次是:C語(yǔ)言主要關(guān)鍵字及其用途、運(yùn)算符優(yōu)先級(jí)和結(jié)合性、常用字符與ASCII編碼對(duì)照表、常用庫(kù)函數(shù)、常用關(guān)鍵字和術(shù)語(yǔ)的中英文對(duì)照表、習(xí)題參考解答、實(shí)驗(yàn)參考解答以及初學(xué)者編程中常犯的錯(cuò)誤。特別是附錄H介紹了初學(xué)者編程中常犯的20多種錯(cuò)誤,并解析了出錯(cuò)原因和糾錯(cuò)方法,為提高初學(xué)者的程序設(shè)計(jì)能力提供了極大的幫助。
《C語(yǔ)言程序設(shè)計(jì)教程》既是高校網(wǎng)絡(luò)教育學(xué)院的“C程序設(shè)計(jì)”課程的必修教材,又是普通高校本科生的程序設(shè)計(jì)課程參考用書,亦可用作計(jì)算機(jī)愛好者的自學(xué)讀本。
C語(yǔ)言以其小巧、靈活、高效等諸多優(yōu)點(diǎn)成為20世紀(jì)90年代以后的主要編程語(yǔ)言,在國(guó)內(nèi)外得到了廣泛的應(yīng)用。我國(guó)的大專院校在多年計(jì)算機(jī)教學(xué)的改革、實(shí)踐與探索中都將“C程序設(shè)計(jì)”課程作為大學(xué)本科生的“第一計(jì)算機(jī)語(yǔ)言”,作為他們獲取程序設(shè)計(jì)能力的首選課程。
隨著計(jì)算機(jī)技術(shù)的飛速發(fā)展以及計(jì)算機(jī)應(yīng)用的不斷深入,如今程序設(shè)計(jì)的工具與方法也在不斷地發(fā)展與更新,這就對(duì)大學(xué)生程序設(shè)計(jì)能力的培養(yǎng)提出了更高的標(biāo)準(zhǔn),要求當(dāng)代大學(xué)生不僅能夠編寫開發(fā)面向過程的結(jié)構(gòu)化程序,而且能夠熟練地利用面向?qū)ο蟮某绦蛟O(shè)計(jì)技術(shù),在可視化的編程環(huán)境中開發(fā)C和windows應(yīng)用程序,以適應(yīng)當(dāng)今信息時(shí)代用人單位的需求。
基于上述背景我們編寫了本書。本書對(duì)C語(yǔ)言作了全面、詳細(xì)、系統(tǒng)的介紹,并選擇Visual C++6.0可視化工具作為本書例題的編譯平臺(tái),使傳統(tǒng)的面向過程的編程語(yǔ)言與現(xiàn)代的面向?qū)ο蟮目梢暬幾g環(huán)境有機(jī)結(jié)合。
本書的編寫力求從初學(xué)者的認(rèn)知規(guī)律出發(fā),結(jié)合網(wǎng)絡(luò)遠(yuǎn)程教學(xué)培養(yǎng)應(yīng)用型人才的目標(biāo)要求、緊扣當(dāng)今信息社會(huì)的發(fā)展理念不偏廢的原則,對(duì)教材內(nèi)容作了合理的構(gòu)思與編排:首先在章節(jié)的順序安排上遵循由淺入深、循序漸進(jìn)的原則,其次對(duì)于某些在實(shí)際應(yīng)用中用得極少,甚至不用的內(nèi)容在不影響知識(shí)體系結(jié)構(gòu)完整性的前提下作了一定的刪減。本書以美國(guó)國(guó)家標(biāo)準(zhǔn)化協(xié)會(huì)頒布的C語(yǔ)言的最新版本87 ANSI C為基礎(chǔ),全書的教學(xué)篇共安排了10章內(nèi)容,涵蓋了C程序設(shè)計(jì)必須具備的語(yǔ)言、算法、數(shù)據(jù)結(jié)構(gòu)、程序設(shè)計(jì)方法等方面的全部知識(shí)點(diǎn)。實(shí)驗(yàn)篇部分共安排10次試驗(yàn),實(shí)驗(yàn)篇的編寫風(fēng)格凸現(xiàn)了本書與眾不同的特色:首先,每一次實(shí)驗(yàn)在給出具體的操作內(nèi)容之前,先給出要求學(xué)習(xí)者閱讀的“導(dǎo)讀提要”,讓學(xué)習(xí)者了解與本次實(shí)驗(yàn)有關(guān)的基本概念和知識(shí)要點(diǎn),明白自己要做的準(zhǔn)備工作,這既對(duì)學(xué)習(xí)者順利完成本次實(shí)驗(yàn)操作大有幫助,而且也起到了對(duì)本章節(jié)所學(xué)的理論知識(shí)進(jìn)行全面、系統(tǒng)地復(fù)習(xí)與回顧的作用。其次,本書突破了傳統(tǒng)的實(shí)驗(yàn)題型的框架,并非就事論事地給出幾道枯燥的、毫無(wú)啟發(fā)性的題目,讓學(xué)習(xí)者自己去編寫程序;而是采用了豐富多變的形式,給出現(xiàn)成的程序讓學(xué)習(xí)者去模仿,給出一個(gè)簡(jiǎn)單的程序讓學(xué)習(xí)者去擴(kuò)充功能,給出一個(gè)有錯(cuò)的程序讓學(xué)習(xí)者糾錯(cuò)改錯(cuò),給出一個(gè)功能不全的程序讓學(xué)習(xí)者填空補(bǔ)缺以及給出題目和程序說明讓學(xué)習(xí)者獨(dú)立編程。再其次,考慮到學(xué)生較少有機(jī)會(huì)與教師面對(duì)面交流與溝通這一網(wǎng)絡(luò)教學(xué)的特點(diǎn),為了減少學(xué)生學(xué)習(xí)上的困難和無(wú)助感,本書在附錄部分增加了習(xí)題(包括實(shí)驗(yàn)習(xí)題)參考答案和初學(xué)者編程中常犯的錯(cuò)誤,為學(xué)生的自學(xué)提供盡可能的幫助。
第一篇 教學(xué)篇
1 C語(yǔ)言概述
1.1 C語(yǔ)言的形成與發(fā)展
1.2 C語(yǔ)言簡(jiǎn)介
1.3 C語(yǔ)言的基本語(yǔ)法成分
1.4 編譯預(yù)處理
習(xí)題1
2 數(shù)據(jù)類型及基本運(yùn)算
2.1 C數(shù)據(jù)類型
2.2 基本數(shù)據(jù)類型
2.3 數(shù)據(jù)的表示
2.4 常用的運(yùn)算符和表達(dá)式
2.5 常用的庫(kù)函數(shù)
習(xí)題2
3 順序結(jié)構(gòu)程序設(shè)計(jì)
3.1 用于順序結(jié)構(gòu)的基本語(yǔ)句
3.2 輸入與輸出
3.3 順序結(jié)構(gòu)程序設(shè)計(jì)舉例
習(xí)題3
4 選擇結(jié)構(gòu)程序設(shè)計(jì)
4.1 if語(yǔ)句
4.2 條件表達(dá)式
4.3 switch語(yǔ)句
4.4 應(yīng)用舉例
習(xí)題4
5 循環(huán)結(jié)構(gòu)程序設(shè)計(jì)
5.1 while語(yǔ)句
5.2 dowhile語(yǔ)句
5.3 for語(yǔ)句
5.4 循環(huán)結(jié)構(gòu)的嵌套
5.5 循環(huán)結(jié)構(gòu)的中斷與轉(zhuǎn)移
5.6 循環(huán)結(jié)構(gòu)應(yīng)用舉例
習(xí)題5
6 數(shù)組
6.1 數(shù)組的概念
6.2 數(shù)組的定義與引用
6.3 數(shù)組的存儲(chǔ)結(jié)構(gòu)和初始化
6.4 數(shù)組應(yīng)用舉例
6.5 字符串處理
習(xí)題6
7 函數(shù)
7.1 函數(shù)的概念
7.2 函數(shù)的定義
7.3 函數(shù)的調(diào)用
7.4 函數(shù)的嵌套與遞歸
7.5 變量的作用域
7.6 變量的存儲(chǔ)類別
7.7 有參數(shù)宏與函數(shù)的區(qū)別
習(xí)題7
8 指針
8.1 指針的概念
8.2 指針與數(shù)組
8.3 指針與函數(shù)
8.4 指針與字符串
8.5 多級(jí)指針
8.6 指針類型小結(jié)
習(xí)題8
9 結(jié)構(gòu)與其他自定義類型
9.1 結(jié)構(gòu)類型的認(rèn)識(shí)
9.2 結(jié)構(gòu)類型的定義
9.3 結(jié)構(gòu)類型的應(yīng)用
9.4 動(dòng)態(tài)數(shù)據(jù)結(jié)構(gòu)“鏈表
9.5 共用體類型
9.6 枚舉類型
9.7 類型自定義
習(xí)題9
10 文件
10.1 文件類型和文件指針
10.2 文件的打開與關(guān)閉
10.3 文件的讀寫
10.4 文件的定位
10.5 文件的檢測(cè)與出錯(cuò)處理
習(xí)題10
第二篇 實(shí)驗(yàn)篇
1 實(shí)驗(yàn)基礎(chǔ)
1.1 VisualC++6.O實(shí)驗(yàn)環(huán)境
1.2 TurboC2.0實(shí)驗(yàn)環(huán)境
2 實(shí)驗(yàn)操作
實(shí)驗(yàn)一 C程序設(shè)計(jì)入門
實(shí)驗(yàn)二 設(shè)計(jì)并運(yùn)行簡(jiǎn)單的C程序
實(shí)驗(yàn)三 輸入與輸出
實(shí)驗(yàn)四 選擇結(jié)構(gòu)程序設(shè)計(jì)
實(shí)驗(yàn)五 循環(huán)結(jié)構(gòu)程序設(shè)計(jì)
實(shí)驗(yàn)六 數(shù)組
實(shí)驗(yàn)七 函數(shù)
實(shí)驗(yàn)八 指針
實(shí)驗(yàn)九 結(jié)構(gòu)
實(shí)驗(yàn)十 文件
附錄
附錄A C語(yǔ)言主要關(guān)鍵字及其用途
附錄B 運(yùn)算符優(yōu)先級(jí)和結(jié)合性
附錄C 常用字符與ASCII編碼對(duì)照表
附錄D 常用庫(kù)函數(shù)
附錄E 常用關(guān)鍵字和術(shù)語(yǔ)的中英文對(duì)照表
附錄F 習(xí)題參考答案
附錄G 實(shí)驗(yàn)參考解答
附錄H 初學(xué)者編程中常犯的錯(cuò)誤
C語(yǔ)言的形成起源于系統(tǒng)軟件的發(fā)展要求。眾所周知,早期的系統(tǒng)軟件(例如操作系統(tǒng)),都是使用匯編語(yǔ)言開發(fā)的。這主要是由于匯編語(yǔ)言能夠體現(xiàn)計(jì)算機(jī)硬件指令的特性,由匯編語(yǔ)言程序形成的代碼有較高的質(zhì)量。但是,匯編語(yǔ)言依賴于計(jì)算機(jī)硬件和指令系統(tǒng),不僅編程的工作強(qiáng)度大,而且程序的可讀性差,無(wú)通用性。因而,人們期盼能夠找到一種具有足夠表達(dá)能力、并接近于自然語(yǔ)言表達(dá)方式的高級(jí)語(yǔ)言來(lái)進(jìn)行系統(tǒng)軟件的開發(fā)。
1960年1月,圖靈獎(jiǎng)獲得者艾倫·佩利(Alan J.Perlis)首先發(fā)明了ALGOL60語(yǔ)言,它是世界上最早誕生的用于程序設(shè)計(jì)的高級(jí)語(yǔ)言(簡(jiǎn)稱A語(yǔ)言)。ALGOL60的主要特點(diǎn)是描述算法方便,但它離開計(jì)算機(jī)硬件系統(tǒng)較遠(yuǎn),不宜編寫系統(tǒng)程序。
1967年英國(guó)劍橋大學(xué)的馬丁·理查德教授以ALGOL60語(yǔ)言為基礎(chǔ)、對(duì)其進(jìn)行了簡(jiǎn)化,并增加了處理硬件的能力,推出了“BCPL(基本復(fù)合程序設(shè)計(jì)語(yǔ)言)”語(yǔ)言。1970年美國(guó)貝爾實(shí)驗(yàn)室的肯·湯普遜對(duì)BCPL語(yǔ)言進(jìn)行了進(jìn)一步的簡(jiǎn)化,更突出了硬件的處理能力,并取“BCPL"的第一個(gè)字母“B”作為新語(yǔ)言的名稱,B語(yǔ)言由此誕生,并同時(shí)用于UNIx操作系統(tǒng)程序的編寫。