本書主要介紹了C語言的數據類型、運算符和表達式,結構化程序設計語句、數組、函數、指針、復合數據類型、文件、圖形庫函數等各種的典型內容。全書共10章,前9章分別介紹各種基礎知識,通過大量案例和練習讓讀者掌握所學知識,第10章介紹了兩個綜合項目,分別是不帶圖形界面的管理信息系統和帶圖形界面的迷宮探險游戲。每章課后配有類型豐富的練習題,都是國家二級考試題,并提供了習題參考答案。
本書對C語言各知識的闡述通俗易懂,習題的選擇難易適當,題型豐富;對于在TC和VC6.0不同環境下運行結果不同的程序,給出兩種環境下的運行結果,方便讀者理解,所有程序均已調試運行通過,運行結果為截屏顯示。本書配有電子課件、源程序、習題參考答案和配套教學視頻等資源,方便讀者自學或教師授課。讀者可登錄華信教育資源網(www.hxedu.com.cn)免費下載。
第1章 C語言概述1
1.1 程序設計的基本概念1
1.1.1 程序的概念1
1.1.2 程序設計的一般過程2
1.1.3 程序設計的方法2
1.2 C語言簡介2
1.2.1 C語言的發展2
1.2.2 C語言的特點3 第1章 C語言概述1
1.1 程序設計的基本概念1
1.1.1 程序的概念1
1.1.2 程序設計的一般過程2
1.1.3 程序設計的方法2
1.2 C語言簡介2
1.2.1 C語言的發展2
1.2.2 C語言的特點3
1.2.3 C語言的書寫規則3
1.2.4 C程序的幾種類型文件3
1.3 C語言程序案例4
1.3.1 第一個C語言程序4
1.3.2 定義符號常量C語言程序5
1.3.3 有多個函數的C語言程序5
1.4 算法6
1.4.1 算法概述6
1.4.2 算法的圖形表示7
1.5 C語言編程環境8
1.5.1 turbo C 2.0編程環境8
1.5.2 Visual C++ 6.0編程環境9
1.5.3 C/C++程序設計學習與實驗系
統編程環境12
本章小結14
學生自我完善練習15
習題115
第2章 程序中的數據17
2.1 數據類型、變量與常量17
2.1.1 數據類型概述17
2.1.2 標識符18
2.1.3 變量的定義、賦值和初始化19
2.1.4 變量的存儲形式20
2.1.5 整型及整型常量22
2.1.6 實型及實型常量23
2.1.7 字符型及字符型常量、字符串
常量25
2.1.8 符號常量27
2.2 運算符與表達式28
2.2.1 算術運算符與算術表達式29
2.2.2 自增、自減運算符(++、--)29
2.2.3 賦值運算符與賦值表達式31
2.2.4 關系運算符與關系表達式32
2.2.5 邏輯運算符與邏輯表達式33
2.2.6 位運算符35
2.2.7 其他運算符36
2.3 數據類型轉換及數據的溢出誤差38
2.3.1 類型轉換概述38
2.3.2 自動類型轉換39
2.3.3 賦值類型轉換40
2.3.4 強制類型轉換40
2.3.5 數據的溢出和誤差40
2.4 數據的輸入/輸出42
2.4.1 格式化輸出函數printf42
2.4.2 格式化輸入函數scanf45
2.4.3 字符數據的輸入與輸出49
2.5 程序案例50
2.5.1 典型案例——求直角三角形的
周長和面積50
2.5.2 典型案例——英文大小寫字母的
轉換51
本章小結52
學生自我完善練習52
習題254
第3章 程序設計語句58
3.1 程序的語句與結構58
3.1.1 程序的語句58
3.1.2 程序的結構60
3.1.3 如何設計C語言程序61
3.1.4 順序結構61
3.2 選擇結構62
3.2.1 二選一結構—— if語句63
3.2.2 多選一結構——switch語句68
3.3 循環結構70
3.3.1 程序的設計過程70
3.3.2 當型循環——while循環71
3.3.3 直到型循環——do-while循環72
3.3.4 格式化的當型循環——for循環73
3.3.5 循環的嵌套75
3.4 break、continue和goto語句77
3.4.1 break語句77
3.4.2 continue語句79
3.4.3 goto語句79
3.5 程序案例80
3.5.1 典型案例——求四則運算表達式
的值80
3.5.2 典型案例——求1+(1+2)+(1+2+3)+
(1+2+3+4)+…+(1+2+…+n)數列
的和81
3.5.3 典型案例——猜數字游戲82
本章小結83
學生自我完善練習83
習題385
第4章 數組91
4.1 數組概念的引入91
4.2 一維數組92
4.2.1 一維數組的定義92
4.2.2 一維數據的元素引用92
4.2.3 一維數組的賦值方法92
4.3 二維數組94
4.3.1 二維數組的定義94
4.3.2 二維數據的元素引用95
4.3.3 二維數組的存儲95
4.3.4 二維數據的賦值方法96
4.4 字符數組與字符串97
4.4.1 字符數組的定義、初始化和引用97
4.4.2 字符串的輸入和輸出函數98
4.4.3 字符串函數簡介101
4.5 程序案例104
4.5.1 典型案例——冒泡法排序104
4.5.2 典型案例——矩陣的轉置105
4.5.3 典型案例——打印楊輝三角形106
本章小結108
學生自我完善練習108
習題4111
第5章 函數115
5.1 模塊化的設計思想115
5.2 函數的定義、調用和函數聲明116
5.2.1 函數的定義116
5.2.2 函數的調用117
5.2.3 函數的聲明118
5.3 函數的參數傳遞120
5.4 函數的嵌套調用122
5.5 函數的遞歸調用123
5.6 變量的作用域和存儲類型126
5.6.1 變量的作用域126
5.6.2 變量的生存期126
5.6.3 變量的存儲類型127
5.7 程序案例131
5.7.1 典型案例——編寫函數實現
求xn131
5.7.2 典型案例——設計遞歸函數gcd(x,y),
求x和y的最大公約數132
5.7.3 典型案例——設計函數驗證任意
偶數為兩個素數之和133
5.7.4 典型案例——編寫函數實現任意
進制數的轉換135
本章小結136
學生自我完善練習136
習題5139
第6章 指針145
6.1 地址和指針的關系145
6.2 指針的定義和賦值146
6.2.1 指針變量的定義及初始化146
6.2.2 指針變量的賦值146
6.3 指針變量的運算147
6.3.1 *運算符和&運算符147
6.3.2 指針的算術運算和關系運算147
6.4 指針和數組的關系149
6.4.1 指針與一維數組149
6.4.2 指針與字符數組151
6.4.3 指針與二維數組153
6.4.4 指針數組155
6.4.5 指向指針的指針——二級指針156
6.5 指針在函數中的應用158
6.5.1 函數的參數是指針158
6.5.2 函數的返回值是指針159
6.5.3 指向函數的指針160
6.5.4 帶參數的main函數162
6.6 程序案例163
6.6.1 典型案例——用指針實現統計字
符串中各種字符的個數163
6.6.2 典型案例——多個字符串中找出
最長字符串,并在其他字符串左
邊補'*'號164
6.6.3 典型案例——將矩陣元素右移,
左側補0165
本章小結167
學生自我完善練習167
習題6169
第7章 復合的數據類型174
7.1 結構概念的引入174
7.2 結構體的描述與存儲175
7.2.1 結構體的類型定義175
7.2.2 結構體變量定義及初始化176
7.2.3 結構體變量的初始化177
7.2.4 結構體變量和成員的引用及賦值177
7.2.5 結構變量的空間分配及查看方法178
7.2.6 結構體類型的嵌套定義179
7.3 結構體數組和結構體指針的使用181
7.3.1 結構體數組181
7.3.2 結構體指針182
7.4 結構體與函數的關系184
7.4.1 結構體變量、指針和數組作為函
數參數184
7.4.2 結構體變量和指針作為函數的返
回值187
*7.5 鏈表189
7.5.1 鏈表基礎知識及動態分配函數189
7.5.2 鏈表的操作191
7.6 共用體、枚舉和typedef類型定義195
7.6.1 共用體195
7.6.2 枚舉199
7.6.3 typedef聲明新的類型名201
7.7 程序案例203
7.7.1 典型案例——用“結構”統計學
生成績,對成績進行排序203
7.7.2 典型案例——枚舉示例,輸出52
張撲克牌205
本章小結206
學生自我完善練習206
習題7208
第8章 文件和編譯預處理214
8.1 文件的概念和基本操作214
8.1.1 文件的概念214
8.1.2 文件的打開和關閉216
8.2 文件的讀寫218
8.2.1 字符的讀寫函數218
8.2.2 字符串的讀寫函數219
8.2.3 數據塊的讀寫函數221
8.2.4 格式化輸入輸出文件函數223
8.3 文件的定位和檢測226
8.3.1 文件的定位226
8.3.2 文件的檢測229
8.4 編譯預處理229
8.4.1 宏定義230
8.4.2 文件包含232
8.4.3 條件編譯233
8.5 程序案例235
8.5.1 典型案例——文件的字符串讀寫
程序,實現人員登錄功能235
8.5.2 典型案例——文件中的字數統計
程序236
本章小結238
學生自我完善練習239
習題8240
*第9章 C語言圖形程序設計基礎245
9.1 屏幕設置245
9.1.1 屏幕顯示模式與坐標系245
9.1.2 圖形驅動程序與圖形模式247
9.1.3 TC2.0圖形庫函數248
9.2 圖形處理函數248
9.2.1 圖形系統管理函數248
9.2.2 屏幕管理和顏色設置函數249
9.2.3 畫點函數251
9.2.4 繪圖函數252
9.2.5 設定線型函數254
9.2.6 基本圖
C語言雖然已經誕生并使用了幾十年,但因為其語法規則、運算符豐富,是現在學習計算機編程知識的入門語言,各類高等學校中普遍開設C語言課程,全國計算等級考試二級和三級中也包括C語言的考試。
本書作為C語言程序設計的入門與應用教材,共分10章。主要內容包括:第1章C語言概述,主要介紹程序設計的基本概念,C語言的特點,C語言程序的基本結構。第2章程序中的數據,主要介紹C語言的基本數據類型、運算符和表達式,數據的輸入和輸出。第3章程序設計語句,主要介紹結構化三種結構的各種語句格式及功能。第4章數組,主要介紹一維數組、二維數組和字符數組及其應用。第5章函數,主要介紹函數定義及調用、變量和函數的作用域。第6章指針,主要介紹指針的概念,指針的定義、運算,指針與數組和指針與函數的關系。第7章復合的數據類型,主要介紹C語言的構造數據類型,如結構體、共用體和枚舉,以及typedef定義類型別名。第8章文件和編譯預處理,主要介紹文件的基本操作和使用規則,及編譯預處理的三種命令宏定義、文件包含和條件編譯。第9章C語言圖形程序設計基礎,主要介紹了C語言屏幕設置和主要的圖形函數。第10章綜合訓練項目,分別介紹了兩個實用的C語言綜合項目,一個是不帶圖形界面的管理信息系統,一個是圖形界面的迷宮探險游戲。書中帶“*”號的章節部分表示本書的難點部分,不同的學校教師可根據自己的授課情況選講。
本教材是針對高職高專學生的實際情況,加強學生對C語言程序設計課程的理論及實踐的學習而編寫的,本書的特點有以下幾點。
第一,適合高職高專學生的特點。
本書全文語言簡潔精練、易讀易懂。在對每一理論知識要點進行總結概括時,均采用了簡潔精練的語言,使學生易讀易懂、易于記憶。
第二,內容豐富、結構合理。
C語言是各個院校學生學習程序設計的基礎語言,書中通過一個個實用的小例子,深入淺出,講解每一個知識點。而且第9章講解了C語言圖形程序設計的基礎知識,打破了一般教材只講前面結構化語法、沒有實用的圖形函數、做不了實際項目的缺點。
第三,案例給出在TC和VC6.0兩種環境下運行結果。
因為有些程序在TC2.0和VC6.0的環境中運行結果不同,本教材將在不同環境運行結果不同的程序都給出對應的運行結果截屏和相關講解,方便讀者理解。
第四,本書配有大量豐富的教學資源,方便老師授課和學生自學。
本書配有豐富的教學資源,提供運行調試軟件、全部源程序、教學PPT、習題參考答案、歷年國家二級考試的筆試原題和上機百套試題。本教材還錄制了配套的視頻講解教程,學生可以在課后通過視頻掌握C語言編程技巧。
第五,讓讀者掌握計算機編程的數據存儲及變化過程。
本書從常量、變量在內存的存放、函數的調用等知識講解了數據在內存中處理的信息,讓讀者更容易掌握所學知識。
第六,本書的編寫方式采用了舉例說明、逐步講解的方法介紹C語言的各知識點。
C語言是編程入門語言,不適合舉例難度很大的大型案例。所以,如何設計難度適中、讓編程初步者容易理解的案例就非常有必要。本書精心設計,通過一個例程,講解本案例的相關知識點,再通過一兩個案例來加深對該知識點的印象。
第七,書中所有程序運行結果采用截屏方式,增加程序運行結果的準確性。
以前很多教材的運行結果是用文字表示,不直觀。本書將各個源程序運行結果屏幕化,不可能出錯,讀者看起來更直觀。
第八,書中課后習題全部為歷年國家二級考試題,并在書后給出答案。
本書的課后習題選用了一些典型的國家二級等級考試試題,方便讀者加深所學重點知識的印象,又了解了國家二級試題的樣式和難度。
本書易教易學、學以致用、注重能力,對初學者容易混淆的內容進行了重點提示和講解。針對高職的教學目標,提高讀者的動手編程能力,以便于讀者能夠更好地理解C語言的知識,提高實際編程能力。本書適合作為本、專科各相關專業的程序設計教材,也適合編程開發人員培訓、自學使用。
本書由劉暢編著,全書由劉暢統稿及修改。教學視頻和書中所有算法源代碼等相關資源均可從電子工業出版社的華信教育資源網(http://www.hxedu.com.cn)下載,或通過郵件向劉暢老師索取,劉暢老師郵箱為:lcluwzc@163.com。
由于作者水平有限,書中疏漏或不足之處在所難免,懇請廣大專家和讀者給出寶貴意見。
編著者