本書面向C語言程序設計初學者,共11章。本書內(nèi)容既傳承傳統(tǒng),介紹C語言的語法、數(shù)據(jù)類型、變量、表達式、控制結構、結構體、數(shù)組、函數(shù)、指針、文件等C語言程序設計的經(jīng)典知識;又與時俱進,涵蓋鴻蒙操作系統(tǒng)、虛擬機管理、C語言程序設計開發(fā)環(huán)境、交叉編譯環(huán)境、嵌入式程序設計、數(shù)字電路、計算機控制等專業(yè)內(nèi)容;還擁抱未來,包含大量基于鴻蒙操作系統(tǒng)的智能物聯(lián)設備開發(fā)案例,以培養(yǎng)信創(chuàng)智能物聯(lián)開發(fā)技能人才。
本書既可以作為高等院校本科學生C語言程序設計課程的教材,也可以作為教師、自學者的參考用書,同時也可供各類軟件開發(fā)設計人員學習參考。
u本書面向C語言程序設計的初學者,不但包含傳統(tǒng)C語言程序設計教學內(nèi)容,而且包含鴻蒙OS C語言設備開發(fā)的內(nèi)容。既對C語言的知識難點配以簡明直觀的示意圖予以詮釋,易于讀者對C語言的理解和掌握;又通過鴻蒙OS C語言設備案例,使得C語言程序設計課程的學習妙趣橫生。
u本書面向國產(chǎn)鴻蒙OS C語言設備開發(fā),配有配套的教學實驗設備和系列實驗,融合多方面知識內(nèi)容,將C語言基礎知識和鴻蒙OS C語言設備開發(fā)實驗巧妙配合,使讀者不但學會傳統(tǒng)的C語言程序設計知識,而且學習、培養(yǎng)和具備了智慧物聯(lián)時代行業(yè)亟需的程序設計專業(yè)技能。
u本書面向各級各類C語言程序設計技能競賽和計算機創(chuàng)新創(chuàng)業(yè)大賽、重視程序設計的趣味性和程序設計的綜合能力培養(yǎng),告別傳統(tǒng)C語言教學枯燥的命令行程序界面,擁抱更有趣味的嵌入式實驗,內(nèi)容深入淺出、語言通俗易懂、圖文并茂、案例驅動,既適合初學者入門,也適合作為進階學習的重要參考資料。
C語言是從誕生至今經(jīng)久不衰的一門編程語言。從適用性的角度看,C語言是一種既可以編寫單片機程序和系統(tǒng)軟件又可以編寫互聯(lián)網(wǎng)應用的程序設計語言。一些面向對象的程序設計語言,如C 、ObjectC、Java、C#、JavaScript等,都遵循C語言的大部分語法,形成了一個計算機語言家族C語言家族。 從教學的角度看,學生學會C語言以后,對于C 、Java等語言就可以快速掌握。所以,C語言程序設計一直是計算機科學與技術及相關專業(yè)學生的必修課程。
作者從事C語言程序設計課程的教學多年,希望能把C語言這門課變得既淺顯易懂又妙趣橫生,所以將C語言程序設計與單片機嵌入式系統(tǒng)開發(fā)結合無疑是一個很好的方案;煦绯蹰_,鴻蒙出世,恰逢鴻蒙操作系統(tǒng)4.0發(fā)布,為了順應操作系統(tǒng)國產(chǎn)化的趨勢和信創(chuàng)人才培養(yǎng)的潮流,作者編寫了這部依托鴻蒙OS介紹C語言程序設計的教材。
有關C語言程序設計的教材成百上千。本書既傳承傳統(tǒng)又與時俱進,既包羅萬象又融會貫通,既專業(yè)經(jīng)典又通俗易懂,有獨到之處。
所謂傳承傳統(tǒng),是指本書包含了傳統(tǒng)C語言程序設計教材應有的教學內(nèi)容;所謂與時俱進,是指本書緊跟國產(chǎn)鴻蒙操作系統(tǒng)發(fā)展的步伐,不但講解C語言程序設計的基礎知識,而且傳授鴻蒙操作系統(tǒng)C語言設備開發(fā)專業(yè)技能,緊隨信創(chuàng)人才培養(yǎng)的時代脈搏。
所謂既包羅萬象又融會貫通,是指本書不像一般的C語言程序設計教材那樣僅包含C語言程序設計方面的知識,而是在此基礎上還引入了鴻蒙操作系統(tǒng)、Linux 操作系統(tǒng)、虛擬機及其管理、數(shù)字電路、嵌入式程序設計、交叉編譯、計算機網(wǎng)絡、計算機控制等方面的知識,而且這些知識不是孤立的,而是相互聯(lián)系、相互融合、相輔相成的。計算機及相關專業(yè)的學生通過對本書的學習,基本上能夠對計算機領域重要的核心知識有感性、直觀的了解,這對于后續(xù)的操作系統(tǒng)、數(shù)字電路、嵌入式程序設計、計算機控制等專業(yè)課程的學習會起到促進理解、融會貫通的作用。
所謂既專業(yè)經(jīng)典又通俗易懂,是指本書提供了專業(yè)的、經(jīng)典的知識內(nèi)容,在內(nèi)容編排上,既有基礎的C語言知識,又有經(jīng)典的算法、設備控制、數(shù)據(jù)采集、跨操作系統(tǒng)平臺程序設計開發(fā)等內(nèi)容,同時所有的知識和內(nèi)容都用通俗易懂的語言、簡潔直觀的圖示予以闡述,使初學者可以跟隨本書一步步學會所有的知識,完成所有的實驗。即使對計算機程序設計一無所知的小白,通過本書的學習也可以成為C語言程序設計和嵌入式系統(tǒng)開發(fā)的行家里手。
與傳統(tǒng)的C語言程序設計教材相比,本書有配套的鴻蒙操作系統(tǒng)C語言設備程序開發(fā)實驗板,既可以極大地提升學習者的學習興趣,又有利于學習者理解和掌握計算機專業(yè)核心知識。
本書共11章,各章內(nèi)容如下:
第1章主要包括計算機程序設計語言的基本概念、C語言及其發(fā)展簡史、C語言程序設計開發(fā)環(huán)境及開發(fā)工具等內(nèi)容。
第2章主要包括C語言源程序的基本結構、基本語法成分、基本數(shù)據(jù)類型與表達式、數(shù)據(jù)類型轉換以及相應的開發(fā)實驗等內(nèi)容。
第3章主要包括鴻蒙操作系統(tǒng)、虛擬機、鴻蒙OS C語言設備程序開發(fā)編譯環(huán)境以及相應的開發(fā)實驗等內(nèi)容。
第4章主要包括順序、選擇、循環(huán)3種程序控制結構以及相應的開發(fā)實驗等內(nèi)容。
第5章主要包括函數(shù)、局部變量、全局變量、動態(tài)存儲、靜態(tài)存儲以及相應的開發(fā)實驗等內(nèi)容。
第6章主要包括指針的概念、定義和應用以及相應的開發(fā)實驗等內(nèi)容。
第7章主要包括一維數(shù)組和二維數(shù)組的概念、定義和應用以及相應的開發(fā)實驗等內(nèi)容。
第8章主要包括字符串、標準的字符串函數(shù)以及相應的開發(fā)實驗等內(nèi)容。
第9章主要包括結構體、結構體指針、函數(shù)指針、枚舉、共用體以及相應的開發(fā)實驗等內(nèi)容。
第10章主要包括文件包含、宏定義、條件編譯以及相應的開發(fā)實驗等內(nèi)容。
第11章主要講述stdio.h頭文件、文件類型、文件的打開和關閉以及讀寫等內(nèi)容。
本書具備如下4個特色:
(1) 本書采用圖文結合的方式對于難以理解的專業(yè)知識給予通俗易懂的詮釋,讓初學者可以做到無師自通。本書面向程序設計語言的初學者,對每一個操作步驟和操作方法都力求講解詳盡,保證初學者可以理解內(nèi)容,一步步引導初學者完成程序設計實驗。作者不但教學經(jīng)驗豐富,而且有多年的C語言程序設計實戰(zhàn)經(jīng)驗,既了解C語言程序設計的難點和重點,又深諳程序設計人員的C語言程序設計知識和技能,這使得本書既傳授知識,又傳授技能,使初學者做到一書在手、編程無憂。
(2) 國產(chǎn)鴻蒙OS C語言設備程序開發(fā)貫穿本書始終?ú弊拥默F(xiàn)狀和國家的自主創(chuàng)新的決心使行業(yè)急需大量國產(chǎn)系統(tǒng)開發(fā)人員。本書針對高校編程類基礎課程缺乏國產(chǎn)操作系統(tǒng)設備程序開發(fā)教材的現(xiàn)狀而編寫,根據(jù)知識的依賴關系精心設計了鴻蒙OS C語言設備程序開發(fā)系列實驗,以保證C語言基礎知識和鴻蒙OS C語言設備程序開發(fā)實驗的良好銜接,使初學者既學習了傳統(tǒng)的C語言程序設計知識,又掌握了物聯(lián)網(wǎng)時代急需的程序設計專業(yè)技能。
(3) 本書重視程序設計的趣味性和綜合能力培養(yǎng),告別傳統(tǒng)C語言教學枯燥的命令行界面程序,引入更有趣味的嵌入式實驗,讓初學者真切地感受到程序設計語言對現(xiàn)實世界產(chǎn)生的影響。有趣的實驗能夠帶來更好的學習效果。
(4) 本書注重理論與實踐的結合,著重案例驅動知識的學習,面向各級各類C語言程序設計技能競賽和創(chuàng)新創(chuàng)業(yè)大賽。書中包含了大量的程序設計和設備程序開發(fā)案例、習題,可以讓初學者做到活學活用、融會貫通。
本書配有電子教案及相關教學資源,采用本書作為教材的教師可從清華大學出版社官方網(wǎng)站下載。
雖然作者在本書中投入了大量的心血,然而限于水平,書中難免有不足之處,請各位專家和讀者不吝指正。
作者2023年12月
第1章概述1
1.1計算機程序設計語言1
1.1.1機器語言2
1.1.2匯編語言3
1.1.3高級語言3
1.2C語言簡介4
1.2.1C語言發(fā)展簡史4
1.2.2C語言的標準化4
1.2.3C語言及其特點5
1.3C語言程序開發(fā)環(huán)境5
1.4C語言程序開發(fā)工具6
1.5DevC 的下載與安裝8
1.6DevC 開發(fā)C語言程序的方法與步驟14
1.7習題28
第2章C語言的基礎知識29
2.1初識C語言程序29
2.2C語言的基本語法成分33
2.2.1C語言的字符集33
2.2.2C語言的語法要素33
2.3數(shù)據(jù)類型的轉換51
2.4C語言的功能52
2.5鴻蒙OS C語言設備開發(fā)實驗: Hello HarmonyOS53
2.5.1下載本實驗所用的軟件和文件54
2.5.2安裝USB接口轉串口驅動程序、燒錄軟件和串口
調試器軟件54
2.5.3編輯hello.c程序源代碼54
2.5.4準備鴻蒙OS C語言設備開發(fā)網(wǎng)頁編譯環(huán)境56
2.5.5使用編譯網(wǎng)頁編譯HarmonyOS程序源代碼622.5.6將目標代碼燒錄到開發(fā)實驗板中65
2.5.7使用串口調試器查看目標代碼的執(zhí)行結果69
2.5.8本實驗串口通信工作原理70
2.6習題71
〖3〗鴻蒙OS C語言程序設計(微課版)目錄〖3〗第3章鴻蒙OS C語言設備開發(fā)基礎74
3.1鴻蒙OS簡介74
3.1.1鴻蒙OS的發(fā)展歷史74
3.1.2鴻蒙OS的設計理念75
3.1.3鴻蒙OS的技術架構75
3.1.4鴻蒙OS的技術特點77
3.1.5鴻蒙OS的應用場景79
3.2鴻蒙OS C語言設備開發(fā)實驗板79
3.3鴻蒙OS C語言設備開發(fā)環(huán)境82
3.3.1鴻蒙OS C語言設備開發(fā)硬件環(huán)境83
3.3.2鴻蒙OS C語言設備開發(fā)軟件環(huán)境83
3.4安裝配置鴻蒙OS C語言設備開發(fā)的編譯環(huán)境84
3.4.1安裝虛擬機管理軟件VMware Workstation85
3.4.2使用VMware Workstation創(chuàng)建Linux虛擬機90
3.4.3配置虛擬機操作系統(tǒng)環(huán)境并安裝工具軟件104
3.4.4安裝編譯環(huán)境構建工具HUAWEI DevEco Device Tool117
3.5安裝Windows工作臺鴻蒙OS C語言設備開發(fā)環(huán)境123
3.5.1安裝DevEco Device Tool、Visual Studio Code和Python124
3.5.2在Visual Studio Code中安裝配置中文環(huán)境131
3.5.3在Visual Studio Code中安裝SSH插件133
3.5.4在Visual Studio Code中新建鴻蒙OS C語言設備開發(fā)工程144
3.6虛擬機及鴻蒙OS C語言設備開發(fā)編譯環(huán)境的鏡像文件制作及還原158
3.6.1制作虛擬機及鴻蒙OS C語言設備開發(fā)編譯環(huán)境的鏡像文件159
3.6.2使用鏡像文件安裝生成虛擬機及鴻蒙OS C語言設備開發(fā)
編譯環(huán)境161
3.7安裝配置鴻蒙OS C語言可執(zhí)行程序燒錄軟件164
3.7.1安裝USB接口轉串口驅動程序165
3.7.2燒錄軟件HiBurn的安裝166
3.8將虛擬機文件夾映射為Windows工作臺的磁盤168
3.9鴻蒙OS C語言設備開發(fā)實驗: 點亮一只LED燈171
3.9.1鴻蒙OS C語言設備開發(fā)方法171
3.9.2鴻蒙OS C語言程序項目結構和內(nèi)容172
3.9.3點亮一只LED燈項目的開發(fā)步驟176
3.9.4點亮一只LED燈實驗工作原理207
3.10習題208
第4章C語言的控制結構210
4.1順序結構210
4.2選擇結構211
4.2.1if語句211
4.2.2if語句的嵌套218
4.2.3條件表達式218
4.2.4switch語句219
4.3循環(huán)結構221
4.3.1while循環(huán)221
4.3.2dowhile循環(huán)222
4.3.3for循環(huán)223
4.3.4多重循環(huán)226
4.4其他控制語句229
4.5循環(huán)結構典型算法程序舉例231
4.6結構化程序設計232
4.7鴻蒙OS C語言設備開發(fā)實驗: 閃爍的LED燈233
4.7.1閃爍的LED燈項目的結構和內(nèi)容233
4.7.2閃爍的LED燈實驗過程234
4.7.3閃爍的LED燈實驗工作原理235
4.8鴻蒙OS C語言設備開發(fā)實驗: 呼吸燈236
4.8.1呼吸燈實驗程序源碼236
4.8.2呼吸燈實驗過程238
4.8.3呼吸燈實驗工作原理238
4.9習題239
第5章C語言的函數(shù)245
5.1函數(shù)245
5.2C語言的局部變量和全局變量248
5.3C語言變量的靜態(tài)存儲和動態(tài)存儲252
5.4C語言程序在內(nèi)存中的存儲結構254
5.5鴻蒙OS C語言設備開發(fā)實驗: 跑馬燈256
5.5.1跑馬燈實驗程序源碼256
5.5.2跑馬燈實驗過程258
5.5.3跑馬燈實驗工作原理258
5.6習題259
第6章指針264
6.1初識指針264
6.2兩個數(shù)交換267
6.3數(shù)據(jù)輸入和輸出273
6.4使用指針的利與弊276
6.5讀取字符277
6.6鴻蒙OS C語言設備開發(fā)實驗: 讀取按鈕狀態(tài)278
6.6.1讀取按鈕狀態(tài)實驗設備278
6.6.2讀取按鈕狀態(tài)實驗程序源碼279
6.6.3讀取按鈕狀態(tài)實驗工作原理280
6.7鴻蒙OS C語言設備開發(fā)實驗: 電子秤281
6.7.1電子秤實驗設備281
6.7.2電子秤實驗程序源碼282
6.7.3電子秤實驗工作原理283
6.8習題285
第7章數(shù)組289
7.1一維數(shù)組290
7.1.1一維數(shù)組的定義和使用290
7.1.2計算數(shù)組元素的均值292
7.1.3利用指針計算數(shù)組元素均值296
7.1.4均值濾波算法297
7.1.5有序數(shù)組插入算法300
7.1.6求最小值算法302
7.1.7選擇排序算法303
7.2二維數(shù)組304
7.2.1二維數(shù)組的定義304
7.2.2二維數(shù)組的使用306
7.2.3二維數(shù)組求和案例307
7.2.4矩陣相加案例309
7.3動態(tài)內(nèi)存311
7.3.1動態(tài)內(nèi)存分配311
7.3.2基于動態(tài)內(nèi)存分配的矩陣312
7.4鴻蒙OS C語言設備開發(fā)實驗: 點陣顯示315
7.4.1點陣顯示實驗設備及工作原理315
7.4.2點陣顯示實驗程序源碼318
7.4.3點陣顯示實驗程序源碼解析319
7.5習題321
第8章字符串323
8.1字符串長度計算算法324
8.2字符串逆序算法326
8.3字符串復制算法327
8.4C語言的標準字符串函數(shù)329
8.5鴻蒙OS C語言設備開發(fā)實驗: 點陣顯示字母330
8.5.1點陣顯示字母實驗工作原理330
8.5.2點陣顯示字母實驗程序源碼330
8.5.3點陣顯示字母實驗程序源碼解析333
8.6習題334
第9章結構體、枚舉和共用體336
9.1什么是結構體336
9.2結構體的使用337
9.2.1使用結構體變量存儲平面上點的坐標337
9.2.2使用結構體變量計算平面上兩個點的距離338
9.3類型定義關鍵字typedef340
9.4結構體指針及其應用341
9.5函數(shù)指針及其應用343
9.6枚舉347
9.6.1什么是枚舉347
9.6.2枚舉案例: 迷宮尋路349
9.7共用體353
9.8鴻蒙OS C語言設備開發(fā)實驗: 四位七段數(shù)碼管355
9.8.1四位七段數(shù)碼管實驗設備及其工作原理355
9.8.2四位七段數(shù)碼管實驗程序源碼357
9.8.3四位七段數(shù)碼管實驗程序源碼解析366
9.9習題366
第10章預處理與頭文件369
10.1文件包含指令#include369
10.1.1#include指令的常規(guī)用法371
10.1.2stdlib.h頭文件380
10.2宏定義指令#define386
10.2.1#define的應用386
10.2.2宏函數(shù)387
10.3條件編譯指令#ifdef388
10.4鴻蒙OS C語言設備開發(fā)實驗: 簡單直流電動機390
10.4.1簡單直流電動機實驗設備及工作原理390
10.4.2簡單直流電動機旋轉實驗391
10.4.3簡單直流電動機正轉、反轉實驗393
10.4.4簡單直流電動機調速實驗395
10.5鴻蒙OS C語言設備開發(fā)實驗: 步進電動機398
10.5.1步進電動機實驗設備及工作原理398
10.5.2步進電動機實驗程序源碼399
10.5.3步進電動機實驗程序源碼解析402
10.6習題402
第11章文件404
11.1stdio.h頭文件404
11.2文件類型406
11.3文件的打開與關閉407
11.3.1流407
11.3.2文件指針407
11.3.3文件的打開與關閉408
11.4文本文件的寫和讀410
11.4.1寫文本文件410
11.4.2讀文本文件412
11.5二進制文件的讀和寫415
11.5.1讀二進制文件415
11.5.2寫二進制文件417
11.6文件的隨機讀寫419
11.7習題420
附錄AC 關鍵字423
附錄BC 運算符424
附錄CC/C 常用庫函數(shù)425
C.1常用數(shù)學函數(shù)425
C.2常用字符串處理函數(shù)426
C.3其他常用函數(shù)427
附錄DASCII碼表428
參考文獻429