本書是在前幾版的基礎(chǔ)上,經(jīng)過多年的積累,結(jié)合近年來的上機考試系統(tǒng)的一些內(nèi)容,又參考一些優(yōu)秀的C語言教程后修訂的C程序設(shè)計教材。目前,各高;景凑崭髯詫W校學生的特點編寫C程序設(shè)計教材,絕大多數(shù)教材都是為了適應(yīng)早期的教學模式和教學方法而編寫的。如今隨著計算機語言教學的改革深入,根據(jù)全國計算機基礎(chǔ)教學指導委員會的白皮書的精神,高校的計算機教學中,又提出許多新的概念。因此,適用于教學的教材編寫風格也必須改革。2008年我們編寫的《C程序設(shè)計基礎(chǔ)》已經(jīng)取得了一些成功的經(jīng)驗, 并獲得大連市科學著作三等獎。2010年又進行了第二版的修訂,2014年推出了第三版,而本書在上幾次寫作的基礎(chǔ)上,結(jié)合我校四年制和五年制兩種教學模式以及上機考試的特點進行了有針對性的改進。全書分三篇: 第一篇為基礎(chǔ)篇,主要介紹C語言的基礎(chǔ)知識和思想; 第二篇為提高篇,以開發(fā)實例為主來講述在設(shè)計過程中學習語言的特點; 第三篇為設(shè)計篇,介紹設(shè)計實例。全書以設(shè)計為核心,適合高校、高職以及自學人員作為教材使用。
計算機素質(zhì)教育對于當今大學生來說是必備的基本技能,而C語言程序設(shè)計在國內(nèi)高校中往往是作為大學生學習計算機程序設(shè)計的入門課程來設(shè)定的,C語言的開設(shè)大都是在20世紀90年代中期開始的,在開設(shè)之初,一直沿用一種傳統(tǒng)的理論研究式的教學模式,過度注重計算機語言的語法、語句格式的講解,沒有把計算機語言的目標是編程的邏輯思想放在主體地位上; 對學生的編程思想的建立和編程能力訓練不夠,這樣給后續(xù)課程的學習和研究留下了隱患。很多學生在學習這門課時感到枯燥難學,學過之后又不能用來解決實際問題。
我們作為從事計算機基礎(chǔ)教學多年的教學團隊,通過一線教學工作者長期的教學研究和經(jīng)驗總結(jié),通過參加有關(guān)計算機基礎(chǔ)教學研究會議,和其他高校從事計算機基礎(chǔ)教學的同行們交流,感到應(yīng)該用新的教學理念和方法培養(yǎng)新時代人才。目前,對C語言程序設(shè)計課程的建設(shè)工作,學校給予高度重視。我們通過反思和學習研究清華大學等院校的改革經(jīng)驗,在課程建設(shè)中,開始研究對C語言程序設(shè)計課程的教學模式改革,以強調(diào)動手實踐上機編程為切入點,通過實例講授程序設(shè)計的基本概念和基本方法,把重點放在學習編程思路上。要求學生養(yǎng)成良好的編程習慣; 在教學過程中注重培養(yǎng)學生的計算機語言的思維能力和編程動手能力,鼓勵學生探索、研究和創(chuàng)新。在指導思想上,強調(diào)轉(zhuǎn)變觀念,以學生為中心,將學生視為教學的主體,安排教學首先要考慮培養(yǎng)目標、學生的認知規(guī)律和學習特點。具體的教學改革措施主要考慮以下兩點: 教學模式和方法的改革; 學生學習評價體系的改革。
對教學模式的改革: 主要是從軟的環(huán)境上進行,包括教學方法、思路、手段的改革,轉(zhuǎn)變觀念,把強化實踐提到一定的高度并予以重視。
對學生評價體系的改革: 考試是檢驗學生學習成果的重要環(huán)節(jié)?荚囎鳛橹笓]棒,對教學目標和教學過程都有重大影響。對于C語言課程建設(shè)來說,考試改革是調(diào)動和激發(fā)學生學習積極性和創(chuàng)造性的重要環(huán)節(jié)。如今我校采用的考核方式是采取上機考核,這對學生學習方法的影響是很大的,也是積極的。作為計算機語言課的學習,只有動手、動腦去實踐,才能學到真本事。這樣就要求從硬件的環(huán)境以及軟件的配置上,都要加大投入。因此,C語言程序設(shè)計課程建設(shè)不是一朝一夕的事情,它是一個系統(tǒng)工程,需要逐步地完成。
本書由大連交通大學的李瑞、戚海英和劉月凡主要負責編寫,第一、第二篇由李瑞主要負責編寫,其中第7章、第8章由劉月凡主要負責編寫,第三篇由戚海英主要負責編寫,全書由李瑞統(tǒng)稿和審定,另外,陳鑫影、趙鴻博、孫經(jīng)緯、趙秀利、李書航、王澤旭、孫志強、孫鵬和張磊等同志對本書編寫做了不少輔助工作。在此表示感謝。
由于作者水平有限,書中難免有紕漏,歡迎廣大讀者多提寶貴意見。
作者2019年6月
第一篇基礎(chǔ)篇
第1章編程思想
1.1程序設(shè)計思想
1.1.1程序設(shè)計的基本步驟
1.1.2程序設(shè)計的學習方法
1.2算法
1.2.1算法概念
1.2.2算法的特性
1.2.3算法的表示
1.2.4算法的復雜度
1.2.5結(jié)構(gòu)化程序設(shè)計方法
1.2.6算法舉例
1.3上機編程準備
1.3.1Turbo C編程開發(fā)環(huán)境
1.3.2VC 編程開發(fā)環(huán)境
1.3.3實例運行過程
1.4上機實踐
第2章C語言基礎(chǔ)
2.1程序的基本結(jié)構(gòu)
2.2標識符、常量和變量
2.2.1標識符
2.2.2常量和變量
2.3數(shù)據(jù)類型
2.3.1整型數(shù)據(jù)
2.3.2實型數(shù)據(jù)
2.3.3字符型數(shù)據(jù)
2.3.4變量賦初值
2.4賦值運算符和賦值表達式
2.4.1賦值運算符和賦值表達式
2.4.2運算符的優(yōu)先級和結(jié)合性
2.5算術(shù)運算符和算術(shù)表達式
2.5.1算術(shù)運算符
2.5.2算術(shù)表達式
2.5.3算術(shù)運算符優(yōu)先級和結(jié)合性
2.5.4算術(shù)運算中的類型轉(zhuǎn)換
2.6位運算符、逗號運算符和求字節(jié)運算符
2.6.1位運算符
2.6.2逗號運算符
2.6.3求字節(jié)運算符
2.7上機實踐
2.8習題
第3章C程序設(shè)計基礎(chǔ)
3.1順序結(jié)構(gòu)程序設(shè)計
3.1.1賦值語句
3.1.2順序結(jié)構(gòu)程序特點
3.1.3基本輸入輸出函數(shù)
3.1.4數(shù)據(jù)的輸入和輸出
3.2選擇結(jié)構(gòu)程序設(shè)計
3.2.1關(guān)系運算符和關(guān)系表達式
3.2.2邏輯運算符和邏輯表達式
3.2.3語句和復合語句
3.2.4選擇結(jié)構(gòu)
3.2.5條件運算符
3.3循環(huán)結(jié)構(gòu)程序設(shè)計
3.3.1循環(huán)結(jié)構(gòu)
3.3.2循環(huán)的應(yīng)用
3.3.3循環(huán)語句的嵌套
3.3.4break語句和continue語句
3.4編譯預處理
3.4.1宏定義
3.4.2文件包含
3.4.3條件編譯
3.5上機實踐
3.6習題
第4章C程序組織基礎(chǔ)
4.1數(shù)組的概念
4.2結(jié)構(gòu)體的概念
4.3函數(shù)的概念
4.4指針的概念
4.4.1指針
4.4.2指針變量的引用
4.5上機實踐
4.6習題
綜合習題一
第二篇提高篇
第5章數(shù)據(jù)組織
5.1數(shù)組
5.1.1一維數(shù)組
5.1.2二維數(shù)組
5.1.3字符數(shù)組和字符串
5.2結(jié)構(gòu)體
5.2.1結(jié)構(gòu)體變量
5.2.2結(jié)構(gòu)體數(shù)組
5.3共用體和枚舉類型
5.3.1共用體類型定義
5.3.2共用體變量的定義和引用
5.3.3枚舉類型定義
5.3.4枚舉變量與枚舉元素
5.4typedef自定義類型
5.5上機實踐
5.6習題
第6章編程模塊化思想
6.1概述
6.2函數(shù)
6.2.1函數(shù)的定義
6.2.2函數(shù)的調(diào)用和參數(shù)
6.2.3函數(shù)的參數(shù)傳遞
6.2.4函數(shù)的嵌套調(diào)用和遞歸調(diào)用
6.3局部變量和全局變量
6.3.1局部變量
6.3.2全局變量
6.4變量的存儲類別
6.4.1局部變量的存儲
6.4.2全局變量的存儲
6.5內(nèi)部函數(shù)和外部函數(shù)
6.5.1內(nèi)部函數(shù)
6.5.2外部函數(shù)
6.5.3多文件編譯
6.6上機實踐
6.7習題
第7章指針
7.1指針變量的應(yīng)用
7.2數(shù)組與指針
7.2.1指向數(shù)組元素的指針
7.2.2通過指針引用數(shù)組元素
7.2.3用數(shù)組名作函數(shù)參數(shù)
7.2.4二維數(shù)組與指針
7.3字符串與指針
7.3.1字符串的表示形式
7.3.2字符指針作函數(shù)參數(shù)
7.4函數(shù)與指針
7.4.1用函數(shù)指針變量調(diào)用函數(shù)
7.4.2用指向函數(shù)的指針作函數(shù)參數(shù)值
7.4.3返回指針值的函數(shù)
7.5指針數(shù)組與二級指針
7.5.1指針數(shù)組的概念
7.5.2二級指針
7.5.3主函數(shù)與命令行參數(shù)
7.6結(jié)構(gòu)體與指針
7.6.1指向結(jié)構(gòu)體變量的指針
7.6.2指向結(jié)構(gòu)體數(shù)組的指針
7.6.3用指向結(jié)構(gòu)體的指針作函數(shù)參數(shù)
7.7鏈表
7.7.1動態(tài)分配和釋放空間的函數(shù)
7.7.2建立和輸出鏈表
7.7.3鏈表的基本操作
7.8上機實踐
7.9習題
第8章文件
8.1文件的概念
8.2文件的使用方法
8.2.1文件的打開和關(guān)閉
8.2.2文件的讀寫
8.2.3文件的定位
8.3上機實踐
8.4習題
綜合習題二
第三篇設(shè)計篇
第9章綜合設(shè)計
9.1學生成績管理系統(tǒng)
9.2系統(tǒng)需求分析
9.3系統(tǒng)總體設(shè)計
9.4系統(tǒng)詳細設(shè)計與實現(xiàn)
9.5系統(tǒng)參考程序
第10章實用編程技巧舉例
10.1模塊化程序編程技巧
10.2使用通用函數(shù)的編程技巧
10.3數(shù)值分析的計算機編程技巧
10.4讀取設(shè)計手冊上的文本數(shù)據(jù)的方法和技巧
附錄A常用字符與ASCII代碼對照表
附錄B運算符的優(yōu)先級和結(jié)合性
附錄C庫函數(shù)
附錄D2013年3月全國計算機等級考試二級C試題及參考答案
附錄E習題參考答案
附錄FC語言上機考試模擬試卷
48學時上機考試模擬五套試卷
64學時上機考試模擬六套試卷
參考文獻