本書以Keil軟件為編譯平臺,以C語言在工程實踐中的具體應用為主線,采用項目驅動形式,將C語言語法和編程技巧等知識通過項目任務和工程應用的方式傳授給學生,打破了傳統的教學方法和教學體系結構,解決了C語言程序設計這門課程抽象與枯燥難學的問題。全書共分8個項目:項目1 認識C語言、項目2 順序結構程序設計、項目3 選擇結構程序設計、項目4 循環結構程序設計、項目5 數組及應用、項目6 函數及應用、項目7 指針及應用、項目8 C語言綜合程序設計。本書可作為高職高專學校電氣、電子、信息類相關專業的教材,也可供C語言初學者、電子愛好者和大、中專及職業高中等相關專業師生學習和實踐參考。
C語言是一門工具語言,是目前國內外廣泛使用的一種計算機高級語言,是現代大學生步入智能化、信息化社會,邁向電子工程師和程序員成功之路的一塊敲門磚。
本書根據教育部高等教育人才培養的指導思想,結合高職高專院校學生及計算機高級語言特點,采用項目驅動形式,循序漸進地講述C語言的語法知識、編程技巧和調試方法,適合電氣、電子、信息類應用型人才的相關專業的學生學習。
本書以C語言在工程中的實際應用為主線,圍繞項目任務展開教學,是編者多年來C語言課程教學改革的成果與經驗總結。書中精選大量具有代表性的項目任務和工程應用實例,使讀者既能掌握C語言的基本概念、基本知識和調試技能,又能拓寬C語言的編程思路和應用領域。突出培養學生運用所學知識和技能解決實際問題的能力,為其后續課程(如“單片機技術”)的學習和職業生涯打下良好的基礎。該書具有如下特點。
(1)用Keil軟件作為開發平臺,用仿真實驗板作為調試工具,具有獨創性,更加突出C語言在工程控制中的重要性。
Keil軟件是目前單片機工程應用中廣泛使用的集成開發軟件,它提供豐富的庫函數和功能強大的集成開發調試工具,同時具有靈活多樣的仿真功能。在Keil軟件和仿真實驗板上調試和仿真C程序能縮短計算機語言與工程實際問題間的距離,更加突出C語言在工程控制中的重要性。
(2)以C語言在工程實踐中的具體應用為主線,采用項目任務驅動法編寫。
全書分為8個項目,包括41個具體任務和11個工程應用。每個任務都按照“項目任務—相關知識—任務實現—工程應用—歸納與總結”進行,每個工程應用都圍繞“任務描述—編寫C程序—上機調試與仿真”展開,教學安排符合程序設計類課程教學規律。不是照本宣科地去講授知識,而是通過上機調試與相關知識相結合的方式,將C語言的語法知識、編程技巧與調試方法穿插在各個項目任務中進行傳授,融“教、學、做”于一體,這樣的教學有趣而生動。各任務完成后使學生知道這些知識具體用在哪、如何用,真正提高了學生動手能力和解決實際問題的能力。
(3)打破傳統的C語言知識體系結構,強調建立工程控制觀點,從工程控制的角度重構課程內容,突出了知識在工程中的實效性。
不在語法和算法上對學生提出過高要求,而是注重編程思路和調試能力,注重如何開展實際應用,如何解決實際問題。內容的重點放在工程實踐中的循環控制、位運算、邏輯關系等共性的知識上,將這些知識以不同的形式穿插在多個項目的任務中反復訓練,逐步提高學生的編程技能和調試能力。同時增強了知識的融合性和靈活性,更突出了這些知識在工程中的實效性。
(4)在工程項目調試過程中,引入仿真技術,直觀、生動、靈活、有趣,增強了學生的求知欲,同時也激發了學生的學習熱情。
在工程項目應用中,引入實驗仿真板,程序運行結果直觀、形象、生動、有趣,使學生懂得C語言在工程實踐中的應用領域和廣闊的發展前景,拓展學生的知識面,激發學生的求知欲和學習熱情。
(5)書中所有練習題都是在各個項目任務的基礎上進行的進一步的拓展功能,教師容易掌控,學生容易上手。真正達到練習的目的,也以此加深和鞏固所學知識。
全書由云南機電職業技術學院李建蘭編著,昆明理工大學信息工程與自動化學院邵建龍主審。
為方便教學,本書配有免費的電子教學課件和程序源代碼,相關教學資源請登錄華信教育資源網(www.hxedu.com.cn)免費注冊后下載。希望這本書能對讀者學習和掌握C語言有所幫助。由于編者水平有限,書中難免有錯誤和不妥之處,敬請廣大讀者批評指正。
編者
收起全部↑
李建蘭,云南機電職業技術學院電氣工程系副教授,長期擔任單片機應用技術、C語言程序設計等課程的教學工作,省級精品課程負責人,有著豐富的企業實踐經驗。
項目1 認識C語言 (1)
項目任務 (1)
相關知識 (1)
1.1 C語言的發展 (1)
1.2 C語言的特點 (2)
1.3 C語言的程序結構 (3)
1.3.1 一個簡單的C語言程序 (3)
1.3.2 源程序的另外一種書寫形式 (8)
1.3.3 C語言的組成部分 (8)
1.4 Keil開發軟件 (9)
1.5 任務實現 (15)
任務1.1:認識第一個C程序 (15)
任務1.2:用Keil軟件搭建第一個工程項目 (16)
歸納與總結 (17)
練習題 (17)
項目2 順序結構程序設計 (18)
項目任務 (18)
相關知識 (18)
2.1 標識符與關鍵字 (19)
2.1.1 標識符 (19)
2.1.2 關鍵字 (19)
2.2 常量與變量 (21)
2.2.1 常量 (21)
2.2.2 變量 (22)
2.3 數據類型 (23)
2.3.1 常見數據類型 (23)
2.3.2 用typedef重新定義數據類型 (25)
2.4 運算符與表達式 (25)
2.4.1 賦值運算符及表達式 (25)
2.4.2 算術運算符及表達式 (26)
2.4.3 關系運算符及表達式 (27)
2.4.4 邏輯運算符及表達式 (28)
2.4.5 條件運算符 (30)
2.4.6 位運算符 (30)
2.4.7 復合賦值運算符 (30)
2.4.8 逗號運算符 (31)
2.4.9 求字節數運算符sizeof (31)
2.5 復合語句 (32)
2.6 數據的輸入/輸出語句 (32)
2.6.1 printf()函數及用法 (32)
2.6.2 scanf()函數及用法 (33)
2.6.3 putchar()函數及用法 (34)
2.6.4 getchar()函數及用法 (34)
2.7 預處理命令 (35)
2.7.1 宏定義 (35)
2.7.2 文件包含處理 (35)
2.7.3 條件編譯 (36)
2.8 任務實現 (37)
任務2.1:求兩整數之和 (37)
任務2.2:給定一個大寫字母,用小寫字母輸出 (39)
任務2.3:在電腦屏上輸出圖案 (40)
2.9 工程應用―點亮一個發光二極管 (41)
歸納與總結 (43)
練習題 (43)
項目3 選擇結構程序設計 (44)
項目任務 (44)
相關知識 (44)
3.1 if語句及用法 (45)
3.2 switch語句及用法 (47)
3.3 任務實現 (48)
任務3.1:比較大小 (48)
任務3.2:兩個數排序 (49)
任務3.3:三個數排序 (50)
任務3.4:大、小寫字母轉換 (51)
任務3.5:比較大小并進行算數運算 (52)
任務3.6:判斷星期并顯示 (53)
任務3.7:百分制分數轉換為成績等級 (54)
任務3.8:輸入字符并進行算數運算 (55)
任務3.9:閏年判斷 (56)
3.4 工程應用―開關控制發光二極管點亮 (58)
歸納與總結 (60)
練習題 (60)
項目4 循環結構程序設計 (61)
項目任務 (61)
相關知識 (61)
4.1 while語句及用法 (62)
4.2 do-while語句 (63)
4.3 for語句及用法 (63)
4.4 break、continue語句及用法 (65)
4.5 循環的嵌套 (65)
4.6 任務實現 (66)
任務4.1:用循環語句求和 (66)
任務4.2:用循環語句排序 (68)
任務4.3:用循環語句進行大、小寫字母轉換 (69)
任務4.4:輸出被5整除的數 (70)
任務4.5:素數判斷 (71)
任務4.6:用循環語句進行閏年判斷 (72)
任務4.7:輸出矩陣 (73)
4.7 工程應用―LED燈閃爍 (74)
歸納與總結 (76)
練習題 (76)
項目5 數組及應用 (77)
項目任務 (77)
相關知識 (77)
5.1 一維數組及應用 (77)
5.2 二維數組及應用 (78)
5.3 字符數組及應用 (79)
5.4 任務實現 (80)
任務5.1:冒泡法排序 (80)
任務5.2:定義矩陣找最大數 (82)
任務5.3:輸出字符串 (84)
任務5.4:輸出菱形圖案 (86)
5.5 工程應用―霓虹燈控制(1) (88)
歸納與總結 (90)
練習題 (91)
項目6 函數及應用 (92)
項目任務 (92)
相關知識 (93)
6.1 函數定義、調用及聲明 (93)
6.1.1 函數分類 (93)
6.1.2 函數定義 (93)
6.1.3 函數調用 (95)
6.1.4 函數聲明 (95)
6.2 函數的參數和函數的值 (96)
6.2.1 形式參數和實際參數 (96)
6.2.2 函數的返回值 (96)
6.3 函數的嵌套調用 (97)
6.3.1 函數的嵌套調用 (97)
6.3.2 數組名作為函數參數 (97)
6.4 局部變量和全局變量 (98)
6.4.1 局部變量 (98)
6.4.2 全局變量 (98)
6.5 變量的存儲類型 (98)
6.6 任務實現 (100)
任務6.1:用函數調用實現信息顯示 (100)
任務6.2:用函數調用實現比較兩數大小 (102)
任務6.3:用函數調用實現求兩整數和 (103)
任務6.4:用函數嵌套調用實現找五個整數中的最大和最小數 (104)
任務6.5:用函數調用實現閏年判斷 (107)
任務6.6:用函數調用實現排序 (108)
任務6.7:用函數調用實現求10個整數平均值 (110)
任務6.8:用函數調用實現素數判斷 (111)
任務6.9:用函數調用實現輸出九九乘法表 (113)
任務6.10:輸出1到5的階乘值 (115)
任務6.11:多文件形式實現學生分數等級判斷 (116)
6.7 工程應用―霓虹燈控制(2) (118)
歸納與總結 (120)
練習題 (120)
項目7 指針及應用 (122)
項目任務 (122)
相關知識 (122)
7.1 指針及指針變量 (122)
7.2 指針運算符 (123)
7.3 變量的訪問方式 (124)
7.4 指針運算 (124)
7.5 任務實現 (125)
任務7.1:用指針法實現大、小寫字母轉換 (125)
任務7.2:用指針法實現閏年判斷 (126)
任務7.3:用指針法實現求兩個整數中的較大數 (127)
任務7.4:用指針法實現兩個整數按由小到大的順序排序 (128)
任務7.5:用指針法實現10個整數按由小到大的順序排序 (129)
7.6 工程應用―霓虹燈控制(3) (130)
歸納與總結 (132)
練習題 (132)
項目8 C語言綜合程序設計 (133)
8.1 圖形輸出速度控制 (133)
8.2 模擬汽車轉彎燈控制 (136)
8.3 一鍵多功能控制 (139)
8.4 模擬交通燈10秒倒計時控制 (142)
8.5 LED電子廣告牌控制 (145)
歸納與總結 (148)
練習題 (148)
附錄A 仿真實驗板簡介 (150)
附錄B 多文件C程序使用方法 (155)
附錄C C庫函數 (159)
C.1 寄存器庫函數REG×××.H (159)
C.2 字符函數CTYPE.H (159)
C.3 一般輸入/輸出函數STDIO.H (161)
C.4 內部函數INTRINS.H (162)
C.5 標準函數STDLI8.H (163)
C.6 字符串函數STRING.H (164)
C.7 數學函數MATH.H (166)
C.8 絕對地址訪問函數A8SACC.H (167)
附錄D ASCII碼表 (169)
附錄E C語言經典錯誤 (170)
參考文獻 (175)