本書是全國普通高等學校優(yōu)秀教材。本書從實用性出發(fā),針對初學者較全面地介紹了C語言的語法規(guī)則、編程思路、編程方法和程序設(shè)計具體應用方面的技能。全書共分9章,主要內(nèi)容包括:算法設(shè)計、C語言的數(shù)據(jù)類型、表達式、語句結(jié)構(gòu)、函數(shù)、指針、數(shù)組等。內(nèi)容精練、層次分明、思路清晰、言簡易懂。
前 言
隨著我國計算機技術(shù)的迅猛發(fā)展,社會對具備計算機基本能力的人才需求急劇增加,具備計算機基本知識與能力已成為21 世紀人才的基本素質(zhì)之一。
未來社會利用計算機解決問題已經(jīng)成為了一種主流。要想做到這一點,必須首先將現(xiàn)實世界的事物抽象成計算機能夠識別并加工的數(shù)據(jù),接著抽象出加工的流程,然后用計算機的語言描述加工流程,最后提交計算機執(zhí)行。這就需要我們具備相應的計算思維能力。因此計算思維在人類未來的工作和生活中極為重要,而程序設(shè)計正是培養(yǎng)計算思維能力的一個很好的平臺。
為了適應高等學校正在開展的以計算機思維能力培養(yǎng)為重點的大學計算機教育的教學改革,及時反映計算機基礎(chǔ)教學的研究成果,積極探索適應21 世紀人才培養(yǎng)的教學模式,我們編寫了這本C 語言程序設(shè)計案例教材。
C 語言是目前世界上使用最為廣泛的計算機程序設(shè)計語言。由于其強大的功能,特別是其高級語言的表示風格和低級語言的特性,使得利用C 語言在編寫應用程序和系統(tǒng)軟 前 言
隨著我國計算機技術(shù)的迅猛發(fā)展,社會對具備計算機基本能力的人才需求急劇增加,具備計算機基本知識與能力已成為21 世紀人才的基本素質(zhì)之一。
未來社會利用計算機解決問題已經(jīng)成為了一種主流。要想做到這一點,必須首先將現(xiàn)實世界的事物抽象成計算機能夠識別并加工的數(shù)據(jù),接著抽象出加工的流程,然后用計算機的語言描述加工流程,最后提交計算機執(zhí)行。這就需要我們具備相應的計算思維能力。因此計算思維在人類未來的工作和生活中極為重要,而程序設(shè)計正是培養(yǎng)計算思維能力的一個很好的平臺。
為了適應高等學校正在開展的以計算機思維能力培養(yǎng)為重點的大學計算機教育的教學改革,及時反映計算機基礎(chǔ)教學的研究成果,積極探索適應21 世紀人才培養(yǎng)的教學模式,我們編寫了這本C 語言程序設(shè)計案例教材。
C 語言是目前世界上使用最為廣泛的計算機程序設(shè)計語言。由于其強大的功能,特別是其高級語言的表示風格和低級語言的特性,使得利用C 語言在編寫應用程序和系統(tǒng)軟件方面都得天獨厚,成為目前最為實用的且功能強大的編程語言,因而被大多數(shù)高等院校當作理工科學生的公共必修課程。但是其精細的語言規(guī)則和強悍的計算思維成為初學者學習C語言的兩道屏障。對于學C 語言的初學者而言,必須通過大量的程序?qū)嵗,由淺入深逐步體會C 語言的語法規(guī)則和計算思維,才能達到具有使用C 語言編寫程序的基本能力。
本書采用知識講解、程序案例、實驗、反思的書寫形式,將知識點融入程序案例,以程序案例帶動知識點的學習,并在關(guān)鍵點上通過“知識延伸”和“思維拓展”的方式引發(fā)讀者的思考來提高其對該課程的學習興趣,同時配以一定的實驗,四者相輔相成。在具體程序案例的講解中,通過閱讀問題、展開分析、給出解題思路并結(jié)合C 語言的語法規(guī)則,使讀者理解并掌握C 程序設(shè)計思想的具體實現(xiàn)過程,通過實驗中的實驗目的和具體要求,將問題由易到難逐步編程,從而掌握C 語言。
任軍老師負責本書統(tǒng)稿,并編寫了本書第1、2章,第3~5章由王宇龍編寫,第6、7章由孔琳俊編寫,第8章由高印軍編寫,第9章由王超編寫,附錄A由張永編寫。
本書向使用本書作為教材的老師提供免費電子課件、程序代碼和習題參考答案,請登錄華信教育資源網(wǎng)注冊下載。
本書在編寫過程中一直致力于將理論與實踐緊密結(jié)合的原則,然而由于時間較為倉促,
加之編寫者水平有限,書中難免出現(xiàn)不妥之處和局部錯誤,敬請讀者批評指正。
王宇龍,兵器工業(yè)信息中心。孔琳俊,浙江財經(jīng)大學。高印軍,中海油研究總院。王超,南陽師范學院。張永,南昌航空航天大學。
第1章 算法與C程序設(shè)計 1
1.1 算法 1
1.1.1 算法的相關(guān)知識 1
1.1.2 算法表示案例 8
1.2 C程序設(shè)計 10
1.2.1 分析問題 11
1.2.2 C程序設(shè)計的基本方法 11
1.2.3 C語言程序的構(gòu)成和基本格式 12
1.3 C語言程序的集成開發(fā)環(huán)境 13
練習與實戰(zhàn) 18
第2章 C語言基礎(chǔ) 21
2.1 C語言特點 21
2.1.1 C語言的來歷 21
2.1.2 C語言的特點 21
2.2 數(shù)據(jù)類型 22 第1章 算法與C程序設(shè)計 1
1.1 算法 1
1.1.1 算法的相關(guān)知識 1
1.1.2 算法表示案例 8
1.2 C程序設(shè)計 10
1.2.1 分析問題 11
1.2.2 C程序設(shè)計的基本方法 11
1.2.3 C語言程序的構(gòu)成和基本格式 12
1.3 C語言程序的集成開發(fā)環(huán)境 13
練習與實戰(zhàn) 18
第2章 C語言基礎(chǔ) 21
2.1 C語言特點 21
2.1.1 C語言的來歷 21
2.1.2 C語言的特點 21
2.2 數(shù)據(jù)類型 22
2.3 標識符與關(guān)鍵字 23
2.4 常量和變量 24
2.4.1 常量 24
2.4.2 變量 25
2.5 表達式 26
2.5.1 算術(shù)運算符與算術(shù)表達式 26
2.5.2 強制類型轉(zhuǎn)換運算符與強制類型轉(zhuǎn)換表達式 27
2.5.3 賦值運算符和賦值表達式 27
2.5.4 自增、自減運算符 29
2.5.5 逗號運算符和逗號表達式 30
2.6 C語言數(shù)據(jù)類型、運算符和表達式實驗指導 32
2.7 書寫上機實驗報告 33
練習與實戰(zhàn) 34
第3章 順序結(jié)構(gòu)程序設(shè)計 37
3.1 C語句 37
3.1.1 變量定義語句 37
3.1.2 表達式語句 37
3.1.3 復合語句 38
3.1.4 空語句 38
3.2 數(shù)據(jù)的輸入和輸出 38
3.2.1 printf函數(shù)(格式輸出函數(shù)) 39
3.2.2 scanf函數(shù)(格式輸入函數(shù)) 42
3.3 順序結(jié)構(gòu)程序案例 43
3.4 順序結(jié)構(gòu)程序設(shè)計實驗指導 46
練習與實戰(zhàn) 47
第4章 選擇結(jié)構(gòu)程序設(shè)計 50
4.1 關(guān)系表達式和邏輯表達式 50
4.1.1 關(guān)系表達式 50
4.1.2 邏輯表達式 52
4.2 由if語句實現(xiàn)的選擇結(jié)構(gòu) 53
4.2.1 if語句的兩種基本形式 54
4.2.2 if語句的嵌套 58
4.3 由switch語句實現(xiàn)的多分支選擇結(jié)構(gòu) 61
4.3.1 switch語句的基本形式 61
4.4 能實現(xiàn)雙分支選擇結(jié)構(gòu)的條件表達式 64
4.5 選擇結(jié)構(gòu)程序設(shè)計實驗指導 65
練習與實戰(zhàn) 66
第5章 循環(huán)結(jié)構(gòu)程序設(shè)計 69
5.1 while循環(huán)語句 69
5.2 do-while循環(huán)語句 71
5.3 for循環(huán)語句 73
5.4 循環(huán)的嵌套 78
5.5 break語句和continue語句 80
5.5.1 break語句 80
5.5.2 continue語句 80
5.6 循環(huán)結(jié)構(gòu)程序設(shè)計實驗指導 83
練習與實戰(zhàn) 85
第6章 數(shù)組與字符串 89
6.1 一維數(shù)組 89
6.1.1 一維數(shù)組的定義 89
6.1.2 一維數(shù)組元素的引用 89
6.1.3 一維數(shù)組的初始化 91
6.1.4 一維數(shù)組程序案例 91
6.2 二維數(shù)組 95
6.2.1 二維數(shù)組的定義 95
6.2.2 二維數(shù)組元素的引用 96
6.2.3 二維數(shù)組的初始化 97
6.2.4 二維數(shù)組程序案例 98
6.3 字符數(shù)組與字符串 99
6.3.1 字符數(shù)組的定義 99
6.3.2 字符數(shù)組的初始化 99
6.3.4 字符數(shù)組的案例 100
6.3.5 字符串處理函數(shù) 102
6.4 數(shù)組程序設(shè)計實驗指導 104
練習與實戰(zhàn) 105
第7章 指針 107
7.1 指針和指針變量 107
7.1.1 指針的概念及指針變量 107
7.1.2 指針變量的定義 108
7.1.3 指針變量的引用 109
7.2 指針與數(shù)組 113
7.2.1 指針與數(shù)組元素的關(guān)系 113
7.2.2 指針運算 114
7.2.3 指針與數(shù)組 117
7.2.4 指針與字符串 120
7.3 指針數(shù)組 121
7.3.1 指針數(shù)組的定義 121
7.3.2 指針數(shù)組元素的使用 122
7.4 指針程序設(shè)計實驗指導 123
練習與實戰(zhàn) 124
上機實戰(zhàn) 126
第8章 模塊化程序設(shè)計 127
8.1 概述 127
8.2 函數(shù)的定義 127
8.3 函數(shù)的參數(shù)和返回值 129
8.3.1 函數(shù)的參數(shù) 129
8.3.2 函數(shù)的返回值 130
8.4 函數(shù)的調(diào)用 131
8.4.1 函數(shù)調(diào)用的一般形式 131
8.4.2 對被調(diào)用函數(shù)的聲明和函數(shù)原型 133
8.4.3 函數(shù)的嵌套調(diào)用 134
8.4.4 函數(shù)的遞歸調(diào)用 135
8.5 數(shù)組作為函數(shù)的參數(shù) 138
8.6 變量的作用域 140
8.6.1 局部變量 140
8.6.2 全局變量 141
8.7 變量的存儲類別 142
8.8 函數(shù)程序設(shè)計實驗指導 146
練習與實戰(zhàn) 147
第9章 復雜數(shù)據(jù)類型 152
9.1 結(jié)構(gòu)體 152
9.1.1 結(jié)構(gòu)體類型定義 152
9.1.2 結(jié)構(gòu)體變量的引用 155
9.1.3 結(jié)構(gòu)體數(shù)組 157
9.2 共用體 160
9.2.1 共用體類型定義 161
9.2.2 共用體類型應用案例 162
9.3 枚舉類型 163
9.4 用typedef為類型定義別名 165
9.5 結(jié)構(gòu)體程序設(shè)計實驗指導 165
練習與實戰(zhàn) 167
附錄A C庫函數(shù) 171