本書內(nèi)容包括程序設(shè)計(jì)語(yǔ)言和程序設(shè)計(jì)的基本概念, C語(yǔ)言的詞法語(yǔ)法, 三種基本控制結(jié)構(gòu), 函數(shù)的定于和調(diào)用, 數(shù)組、結(jié)構(gòu)體、指針等復(fù)雜數(shù)據(jù)類型的定義和應(yīng)用, 文件操作等。
(1) 配套75個(gè)短視頻,詳細(xì)講解C語(yǔ)言的關(guān)鍵知識(shí)點(diǎn);
(2) 提供教學(xué)課件、在線單元測(cè)試、答案解析、綜合練習(xí)、在線答疑;
(3) 可到中國(guó)大學(xué)MOOC上獲取上述教學(xué)資源(網(wǎng)址見(jiàn)書中“前言”說(shuō)明)。
(4) 本書以介紹C語(yǔ)言的語(yǔ)法為線索,采用案例教學(xué)方法,將程序設(shè)計(jì)的一般方法和技巧貫穿在實(shí)例分析中;
(5) 構(gòu)建了完善的教學(xué)解決方案,提供在線視頻課程、課件、作業(yè)、測(cè)試、答案解析;
(6) 視頻課程教學(xué)方法靈活,講解精練易懂,培養(yǎng)學(xué)生自主學(xué)習(xí)的能力;
(7) 可以在移動(dòng)端登錄視頻課程,便于隨時(shí)隨地學(xué)習(xí)。
“C語(yǔ)言程序設(shè)計(jì)”是高校非計(jì)算機(jī)專業(yè)學(xué)生的編程入門課程,廈門大學(xué)公共計(jì)算機(jī)教學(xué)部已開設(shè)該門課程超過(guò)20年。通過(guò)長(zhǎng)期的計(jì)算機(jī)基礎(chǔ)教學(xué)實(shí)踐與研究,老師們都積累了豐富的經(jīng)驗(yàn),并先后修訂了3次教材,前3版都是基于ANSI C的標(biāo)準(zhǔn)編寫的。隨著C標(biāo)準(zhǔn)與時(shí)俱進(jìn)地更新,目前的C99標(biāo)準(zhǔn)與ANSI C標(biāo)準(zhǔn)已有較多差異,有些與本書涉及的內(nèi)容相關(guān)。因此促使編者對(duì)本書再次進(jìn)行改版,并配套豐富的教輔資料,具體工作內(nèi)容如下:
1. 修訂內(nèi)容
第4版對(duì)各章節(jié)內(nèi)容進(jìn)行了修改與補(bǔ)充,包括以下5個(gè)方面:
(1) 對(duì)C標(biāo)準(zhǔn)更改的地方進(jìn)行了更新。
(2) 增加了對(duì)DevC++的介紹,開發(fā)環(huán)境可以有更多選擇。
(3) 為第1~4、6章增設(shè)了問(wèn)答題,這些章節(jié)語(yǔ)法知識(shí)點(diǎn)較多,記清有一定的難度。問(wèn)答題多以選項(xiàng)的形式給出,是對(duì)主要知識(shí)點(diǎn)的歸納。通過(guò)問(wèn)答,厘清與編程相關(guān)的主要或易錯(cuò)知識(shí)點(diǎn)。
(4) 從易于理解的角度出發(fā),對(duì)部分教材內(nèi)容進(jìn)行了補(bǔ)充與修改。
(5) 選擇題、編程題也做了一定程度的擴(kuò)充,使習(xí)題更有針對(duì)性,更有梯度。
在對(duì)教材進(jìn)行改版的過(guò)程中,同時(shí)保留了第3版的特色,注重案例教學(xué),將編程方法與技巧融入各案例分析中。C語(yǔ)言是一門實(shí)踐性很強(qiáng)的課程,學(xué)好C語(yǔ)言的最佳途徑就是編程,多寫多練。
2. 配套豐富的教輔資源
為推動(dòng)信息技術(shù)與C語(yǔ)言教學(xué)的深度融合,進(jìn)一步提高教學(xué)質(zhì)量,收獲更好的教學(xué)效果,廈門大學(xué)公共計(jì)算機(jī)教學(xué)部啟動(dòng)在線開放課程的建設(shè),并于2016年10月15日在中國(guó)大學(xué)MOOC開課,課程鏈接為/course/XMU1001771003,其中有大量的教輔資源。
教輔資源內(nèi)容包括以下4類:
1) 75個(gè)教學(xué)短視頻
MOOC課程與傳統(tǒng)上課不同,學(xué)生是課程學(xué)習(xí)的主人,教師是學(xué)生學(xué)習(xí)的引導(dǎo)者和輔助者,從“教”為中心改為以“學(xué)”為中心。為激發(fā)學(xué)生的學(xué)習(xí)積極性,我們對(duì)教學(xué)內(nèi)容進(jìn)行合理規(guī)劃,把知識(shí)點(diǎn)碎片化為一個(gè)個(gè)不超過(guò)10分鐘的視頻,精心組織每個(gè)視頻的內(nèi)容,充分使用現(xiàn)代技術(shù)將知識(shí)點(diǎn)以易于吸收的形式展示。
視頻完全免費(fèi)觀看。每輪開課分13周在線發(fā)布,與課堂教學(xué)同步。學(xué)生可以自選時(shí)間觀看,每輪課程結(jié)束后仍然一直開放,參與者可以隨時(shí)觀看。
2) PDF講稿
可以免費(fèi)自由下載。講稿簡(jiǎn)潔清晰,以另一種方式闡述教學(xué)內(nèi)容,便于復(fù)習(xí)與歸納。
3) 在線單元測(cè)試與作業(yè)
每周知識(shí)配有單元測(cè)試題,系統(tǒng)自動(dòng)評(píng)分。答題結(jié)束后,可以看到每道題的解析。單元測(cè)試題以鞏固知識(shí)點(diǎn)為目的,同時(shí)通過(guò)自主做題掌握重點(diǎn)、難點(diǎn),學(xué)習(xí)編程技巧。作業(yè)題是編程題,側(cè)重于應(yīng)用,也是書后習(xí)題的有益補(bǔ)充。
4) 討論、答疑
重要章節(jié)設(shè)計(jì)有課堂討論題,是對(duì)所學(xué)知識(shí)的擴(kuò)充與引導(dǎo)。積極參與課堂討論,有助于語(yǔ)法的深入理解及學(xué)以致用。對(duì)于學(xué)習(xí)過(guò)程中的任何問(wèn)題,也可以在討論區(qū)中提出,同學(xué)和老師都可以參與解答,在互助的環(huán)境中學(xué)習(xí)。
到2017年6月10日截止,已完成兩輪開課,視頻、單元測(cè)試等各類資源已較成熟。在此,要誠(chéng)摯地感謝莊朝暉、曾華琳老師的參與,使得內(nèi)容更為豐富完整。
還要特別地感謝黃保和老師,他一直支持MOOC建設(shè),并為《C語(yǔ)言程序設(shè)計(jì)(第4版)》的編寫無(wú)私地提供材料與建議。最后還要感謝廈門大學(xué)公共教學(xué)部的各位老師,他們?yōu)榻滩牡母倪M(jìn)一如既往地提供幫助與支持。
《C語(yǔ)言程序設(shè)計(jì)(第4版)》由黃洪藝策劃和統(tǒng)稿。黃洪藝編寫第1、2、3、11章,李慧琪編寫第4、5、10章,張麗麗編寫第6、7、8、9章。
“C語(yǔ)言程序設(shè)計(jì)”課程是廈門大學(xué)重點(diǎn)建設(shè)的慕課課程,本課程可到“中國(guó)大學(xué)MOOC”觀看學(xué)習(xí)。每年春、秋兩季開課,開課期間,在“中國(guó)大學(xué)MOOC”首頁(yè)搜索“C程序設(shè)計(jì)基礎(chǔ)”,即可看到課程并進(jìn)入學(xué)習(xí)。也可通過(guò)上頁(yè)介紹的課程鏈接進(jìn)入課程。
在使用本書過(guò)程中,如有寶貴意見(jiàn)和建議,懇請(qǐng)與黃洪藝聯(lián)系。
編者2017年8月
第1章緒論
1.1程序設(shè)計(jì)語(yǔ)言
1.2程序設(shè)計(jì)
1.2.1程序設(shè)計(jì)概念
1.2.2算法
1.2.3程序設(shè)計(jì)的步驟
1.3C語(yǔ)言發(fā)展和C++簡(jiǎn)介
1.3.1C語(yǔ)言發(fā)展簡(jiǎn)述
1.3.2C++簡(jiǎn)介
1.3.3集成開發(fā)環(huán)境
1.4C語(yǔ)言程序的構(gòu)成
1.5Visual C++簡(jiǎn)介
1.5.1運(yùn)行簡(jiǎn)單C程序
1.5.2程序調(diào)試一般過(guò)程和手段
1.5.3Visual C++調(diào)試方法和工具
1.6DevC++ 5.11簡(jiǎn)介
1.6.1C程序的編輯與運(yùn)行
1.6.2DevC++調(diào)試方法和工具
習(xí)題
第2章C語(yǔ)言基礎(chǔ)
2.1C語(yǔ)言詞法
2.1.1基本字符集
2.1.2關(guān)鍵字
2.1.3特定字
2.1.4標(biāo)識(shí)符
2.1.5運(yùn)算符
2.1.6分隔符
2.2C語(yǔ)言的數(shù)據(jù)類型
2.2.1數(shù)據(jù)類型概述
2.2.2基本數(shù)據(jù)類型
2.3常量與變量
2.3.1常量
2.3.2變量
2.3.3常量與變量應(yīng)用舉例
2.4表達(dá)式
2.4.1表達(dá)式概述
2.4.2算術(shù)表達(dá)式
2.4.3類型轉(zhuǎn)換
2.4.4賦值表達(dá)式
2.4.5自增、自減表達(dá)式
2.4.6逗號(hào)表達(dá)式
習(xí)題
第3章結(jié)構(gòu)程序設(shè)計(jì)
3.1結(jié)構(gòu)化程序設(shè)計(jì)方法
3.2語(yǔ)句的概念
3.3輸入輸出函數(shù)
3.3.1格式輸出函數(shù)
3.3.2格式輸入函數(shù)
3.3.3字符輸出函數(shù)
3.3.4字符輸入函數(shù)
3.4順序結(jié)構(gòu)程序設(shè)計(jì)舉例
習(xí)題
第4章選擇結(jié)構(gòu)程序設(shè)計(jì)
4.1關(guān)系表達(dá)式和邏輯表達(dá)式
4.1.1關(guān)系表達(dá)式
4.1.2邏輯表達(dá)式
4.2if語(yǔ)句
4.2.1if語(yǔ)句
4.2.2if…else語(yǔ)句
4.2.3if語(yǔ)句的嵌套
4.2.4if…else if語(yǔ)句
4.2.5條件表達(dá)式
4.3switch語(yǔ)句
習(xí)題
第5章循環(huán)結(jié)構(gòu)程序設(shè)計(jì)
5.1for語(yǔ)句
5.2while語(yǔ)句
5.3do…while語(yǔ)句
5.4循環(huán)的嵌套
5.5break語(yǔ)句和continue語(yǔ)句
5.6goto語(yǔ)句
5.7常用算法舉例
習(xí)題
第6章函數(shù)
6.1函數(shù)定義與調(diào)用
6.1.1函數(shù)定義
6.1.2函數(shù)調(diào)用
6.1.3函數(shù)原型聲明
6.2函數(shù)間數(shù)據(jù)傳遞
6.2.1函數(shù)參數(shù)
6.2.2函數(shù)返回值
6.3函數(shù)的嵌套與遞歸
6.3.1函數(shù)嵌套調(diào)用
6.3.2函數(shù)遞歸調(diào)用
6.4函數(shù)應(yīng)用舉例
6.5變量屬性
6.5.1變量的生存期和可見(jiàn)性
6.5.2變量的作用域
6.5.3變量的存儲(chǔ)類別
習(xí)題
第7章編譯預(yù)處理
7.1宏定義
7.1.1不帶參數(shù)的宏
7.1.2帶參數(shù)的宏
7.1.3取消宏定義
7.2文件包含
7.3條件編譯
7.3.1#if和#endif命令
7.3.2#ifdef和#ifndef命令
7.3.3defined預(yù)處理運(yùn)算符
習(xí)題
第8章數(shù)組
8.1一維數(shù)組
8.1.1一維數(shù)組的定義
8.1.2一維數(shù)組的引用
8.1.3一維數(shù)組的初始化
8.1.4一維數(shù)組應(yīng)用舉例
8.2多維數(shù)組
8.2.1二維數(shù)組的定義和引用
8.2.2二維數(shù)組的初始化
8.2.3二維數(shù)組應(yīng)用舉例
8.3字符串
8.3.1字符型數(shù)組
8.3.2字符串
8.3.3字符串處理函數(shù)
8.3.4字符串應(yīng)用舉例
習(xí)題
第9章結(jié)構(gòu)體、共用體和枚舉類型
9.1結(jié)構(gòu)體
9.1.1結(jié)構(gòu)體類型的定義
9.1.2結(jié)構(gòu)體變量定義和初始化
9.1.3結(jié)構(gòu)體變量的引用
9.1.4結(jié)構(gòu)體數(shù)組
9.2共用體
9.2.1共用體類型的定義
9.2.2共用體變量的定義
9.3枚舉類型
9.3.1枚舉類型的定義
9.3.2枚舉變量的定義
9.4typedef語(yǔ)句
習(xí)題
第10章指針
10.1地址與指針變量
10.1.1內(nèi)存單元地址
10.1.2指針
10.1.3指針變量的定義和初始化
10.1.4指針的運(yùn)算
10.2指針與函數(shù)
10.2.1指針變量作為函數(shù)參數(shù)
10.2.2函數(shù)的返回值為指針
10.2.3指向函數(shù)的指針
10.3指針與數(shù)組
10.3.1一維數(shù)組與指針
10.3.2字符串與指針
10.3.3指針數(shù)組
10.4指針與結(jié)構(gòu)體
10.4.1指向結(jié)構(gòu)體的指針
10.4.2動(dòng)態(tài)存儲(chǔ)分配
10.4.3鏈表
習(xí)題
第11章文件
11.1文件概述
11.2文件的打開和關(guān)閉
11.2.1文件的打開
11.2.2文件的關(guān)閉
11.3文件的讀寫
11.3.1文本文件的讀寫
11.3.2二進(jìn)制文件的讀寫
11.4文件的定位
習(xí)題
附錄AASCII編碼字符集
附錄BC語(yǔ)言運(yùn)算符的優(yōu)先級(jí)和結(jié)合性
參考文獻(xiàn)
第5章
CHAPTER 5
循環(huán)結(jié)構(gòu)程序設(shè)計(jì)
循環(huán)結(jié)構(gòu)是程序中用得最多的一種控制結(jié)構(gòu),大多數(shù)程序都要用到循環(huán),它是解決許多問(wèn)題的基本方法,特別是涉及一組數(shù)據(jù)處理問(wèn)題,例如,1~100的所有整數(shù)累加求和,找出10000以內(nèi)的所有素?cái)?shù),輸入并計(jì)算某課程的全班平均成績(jī)等。
循環(huán)結(jié)構(gòu)一般由循環(huán)初始化、循環(huán)條件、循環(huán)體三個(gè)部分組成。其中,循環(huán)初始化提供初始數(shù)據(jù),為循環(huán)條件提供初值; 循環(huán)條件描述了重復(fù)操作需要滿足的條件,條件成立執(zhí)行循環(huán)體,條件不成立則終止循環(huán); 循環(huán)體是要重復(fù)執(zhí)行的語(yǔ)句,它包含了對(duì)循環(huán)條件的控制,為下一次執(zhí)行循環(huán)體準(zhǔn)備數(shù)據(jù)。一般來(lái)說(shuō),每一次循環(huán)操作都有循環(huán)趨于結(jié)束的語(yǔ)句,否則,將會(huì)出現(xiàn)“死循環(huán)”,即循環(huán)永不終止。
C語(yǔ)言提供了三種循環(huán)語(yǔ)句: for語(yǔ)句、while語(yǔ)句和do…while語(yǔ)句。for語(yǔ)句適合計(jì)數(shù)變量遞增或遞減的循環(huán),while語(yǔ)句在循環(huán)體執(zhí)行之前測(cè)試循環(huán)條件,do…while語(yǔ)句在循環(huán)體執(zhí)行之后測(cè)試循環(huán)條件。此外,break語(yǔ)句、continue語(yǔ)句和goto語(yǔ)句可以改變循環(huán)的執(zhí)行流程。熟練掌握循環(huán)語(yǔ)句的概念和運(yùn)用是程序設(shè)計(jì)的基本要求。
5.1for語(yǔ)句
for循環(huán)稱為計(jì)數(shù)型循環(huán),特別適合描述循環(huán)次數(shù)已知的循環(huán)。
圖5.1.1for循環(huán)流程圖
for語(yǔ)句的語(yǔ)法格式如下:
for(表達(dá)式1;表達(dá)式2;表達(dá)式3)
循環(huán)體
for循環(huán)執(zhí)行過(guò)程如圖5.1.1所示,執(zhí)行流程描述如下:
(1) 計(jì)算表達(dá)式1;
(2) 計(jì)算表達(dá)式2,若其值非0,則執(zhí)行循環(huán)體語(yǔ)句,然后執(zhí)行步驟(3); 若其值為0,則退出循環(huán),轉(zhuǎn)向步驟(5);
(3) 計(jì)算表達(dá)式3;
(4) 轉(zhuǎn)向步驟(2)繼續(xù)執(zhí)行;
(5) 執(zhí)行for循環(huán)的后續(xù)語(yǔ)句。
說(shuō)明:
(1) 通常根據(jù)某個(gè)變量的值判斷是否繼續(xù)循環(huán),該變量稱為循環(huán)控制變量,簡(jiǎn)稱循環(huán)變量。
(2) 表達(dá)式1通常用于給循環(huán)控制變量賦初值,在循環(huán)結(jié)構(gòu)中僅被執(zhí)行一次。
(3) 表達(dá)式2是循環(huán)是否繼續(xù)的條件,通常為關(guān)系表達(dá)式或邏輯表達(dá)式,也可以是算術(shù)表達(dá)式,當(dāng)表達(dá)式2的值非0時(shí)執(zhí)行循環(huán)體,否則結(jié)束循環(huán)。
(4) 表達(dá)式3通常用于更新循環(huán)控制變量的值,使循環(huán)條件發(fā)生變化。
(5) 循環(huán)體是循環(huán)結(jié)構(gòu)的主體,表達(dá)要重復(fù)執(zhí)行的操作,如果循環(huán)體多于一個(gè)語(yǔ)句,必須用花括號(hào){}把它們括起來(lái),形成復(fù)合語(yǔ)句。循環(huán)體也稱為for語(yǔ)句的內(nèi)嵌語(yǔ)句。
(6) 表達(dá)式1、表達(dá)式2、表達(dá)式3都可以省略,但是for中兩個(gè)分號(hào)不能省略。如果省略表達(dá)式2,則默認(rèn)表達(dá)式2為真值,必須在循環(huán)體中設(shè)計(jì)其他停止循環(huán)的語(yǔ)句。
for語(yǔ)句的最簡(jiǎn)單應(yīng)用也是最容易理解的形式是使用循環(huán)變量,用循環(huán)變量的初值、終值、循環(huán)變量的增量來(lái)決定循環(huán)的執(zhí)行。
【例5.1.1】繪制5條直線,每條直線由4個(gè)“-”符號(hào)組成。
分析: 本例需重復(fù)輸出5條直線,因此,循環(huán)體為輸出一條直線的語(yǔ)句,循環(huán)體共執(zhí)行了5次。
……