本教程以先進(jìn)性、應(yīng)用性、普及性為出發(fā)點(diǎn), 在全面、系統(tǒng)介紹C語言基礎(chǔ)知識和經(jīng)典實(shí)例的同時(shí), 在每一章節(jié)都引入了多個(gè)電類專業(yè)C語言編程實(shí)例, 通過實(shí)例精講幫助學(xué)生快速實(shí)現(xiàn)從知識到能力的轉(zhuǎn)化。全書分10章, 包括C語言概述、算法、數(shù)據(jù)類型、運(yùn)算符、表達(dá)式、程序結(jié)構(gòu)、數(shù)組、函數(shù)、指針、結(jié)構(gòu)體共用體、位運(yùn)算和文件等。
自1972年誕生以來,由于數(shù)據(jù)類型豐富、運(yùn)算方便、表達(dá)方式靈活、兼具高級語言和低級語言的優(yōu)點(diǎn)且能夠直接對計(jì)算機(jī)硬件進(jìn)行操作,C語言迅速成為一種在全世界范圍內(nèi)被廣泛使用的程序設(shè)計(jì)語言。
在實(shí)際應(yīng)用中,從網(wǎng)絡(luò)后臺(tái)程序到計(jì)算機(jī)操作系統(tǒng),各種各樣的應(yīng)用程序和游戲均可使用C語言進(jìn)行開發(fā)設(shè)計(jì),用其編寫的程序普遍具有執(zhí)行效率高、代碼緊湊、可移植性好等優(yōu)點(diǎn)。
鑒于C語言在工業(yè)領(lǐng)域中的重要性,很多高職院校和普通高等院校都將其作為電類專業(yè)學(xué)生的程序設(shè)計(jì)基礎(chǔ)語言課程,其目的是使學(xué)生在了解并掌握程序設(shè)計(jì)思想和方法的基礎(chǔ)上,培養(yǎng)計(jì)算機(jī)程序設(shè)計(jì)的實(shí)踐能力。
C語言的優(yōu)秀教材很多,但能夠?qū)語言與電類專業(yè)應(yīng)用聯(lián)系在一起,并讓零基礎(chǔ)初學(xué)者欣然接受的卻并不多。因此,本書針對初學(xué)者的學(xué)習(xí)特點(diǎn),通過內(nèi)容整合、示例精講、實(shí)例分析等方式,重新整理安排了電類專業(yè)C語言教學(xué)內(nèi)容,力圖使其更加簡潔明確、通俗易懂,更具專業(yè)針對性。
本書以ANSIC為標(biāo)準(zhǔn)(美國國家標(biāo)準(zhǔn)協(xié)會(huì)推出的C語言標(biāo)準(zhǔn)),以VisualC++6.0為集成開發(fā)環(huán)境,全面系統(tǒng)地介紹了C語言及其程序設(shè)計(jì)思想和方法,主要特點(diǎn)如下:
。1)教學(xué)內(nèi)容由淺入深、循序漸進(jìn),符合初學(xué)者零基礎(chǔ)的特點(diǎn)。前4章作為基礎(chǔ)部分,各章節(jié)知識點(diǎn)講解簡單明了,示例豐富,能夠幫助讀者盡快掌握C語言基礎(chǔ)。第5-10章作為進(jìn)階部分,在介紹知識點(diǎn)的同時(shí)更注重知識點(diǎn)的綜合運(yùn)用。第11章作為高級部分,通過專業(yè)編程實(shí)例向讀者展示了電類專業(yè)C語言編程常用知識點(diǎn)的實(shí)際使用情況。
。2)章節(jié)安排合理。在循序漸進(jìn)安排教學(xué)內(nèi)容的同時(shí),本書對部分章節(jié)的知識點(diǎn)講解順序進(jìn)行了調(diào)整,使整個(gè)教學(xué)內(nèi)容更富條理,更符合初學(xué)者的學(xué)習(xí)節(jié)奏,學(xué)習(xí)效率更高。
。3)避免知識點(diǎn)的簡單羅列,避免細(xì)枝末節(jié)的語法干擾。因?yàn)镃語言的知識點(diǎn)多且散,初學(xué)者很難全部掌握,所以本書根據(jù)C語言在電類專業(yè)的實(shí)際應(yīng)用情況,對知識點(diǎn)進(jìn)行了必要的區(qū)分。常用知識點(diǎn)均輔以經(jīng)典實(shí)例詳細(xì)講解,使讀者對知識點(diǎn)的掌握更深入透徹。偏僻知識點(diǎn)的講解則力求簡潔,以免過多的語法細(xì)節(jié)干擾讀者的學(xué)習(xí)進(jìn)度。
。4)示例經(jīng)典,注釋詳細(xì)。書中的重點(diǎn)教學(xué)內(nèi)容均附有典型示例,對相關(guān)知識點(diǎn)的注釋講解極為詳細(xì),方便讀者直觀了解和分析知識點(diǎn)的應(yīng)用情況。
。5)結(jié)合科研競賽內(nèi)容,理論聯(lián)系實(shí)際,注重實(shí)戰(zhàn)能力培養(yǎng)。在計(jì)算機(jī)、電氣、電子、通信等電類專業(yè)實(shí)際應(yīng)用中,C語言的編程應(yīng)用極為廣泛。因此,借助作者所在單位——石家莊學(xué)院物電學(xué)院近年來在全國電子設(shè)計(jì)大賽、全國智能車競賽、河北省挑戰(zhàn)杯等科研競賽中的經(jīng)驗(yàn)積累,本書專門整理搜集了多個(gè)基于C語言的科研競賽實(shí)例。通過實(shí)例分析讓讀者更好地感受和實(shí)踐C語言編程的樂趣。
本書由石家莊學(xué)院郭鵬、康元元、孫宏強(qiáng)、孫建起編寫,其中,第1~3章、第5~7章和第9章由郭鵬編寫,第8章、第10章及附錄由康元元編寫,第11章由孫宏強(qiáng)編寫,第4章由孫建起編寫。全書由郭鵬主編并統(tǒng)稿。此外,石家莊學(xué)院張玉豐和張勇杰同學(xué)也參與了本書的部分實(shí)例整理工作。
本書在編寫過程中參閱了大量的參考文獻(xiàn),在此對它們的作者表示衷心的感謝。由于編者水平有限,書中難免有錯(cuò)誤和疏漏之處,懇請廣大讀者批評指正。
第1章 C語言概述
1.1 基礎(chǔ)知識
1.2 為什么要學(xué)C語言
1.3 C程序結(jié)構(gòu)分析
1.4 C程序上機(jī)步驟
第2章 算法
2.1 算法的概念
2.2 常見的算法描述方法
2.2.1 用自然語言表示算法
2.2.2 用傳統(tǒng)流程圖表示算法
2.2.3 用結(jié)構(gòu)化流程圖表示算法
2.2.4 用偽代碼表示算法
2.2.5 用計(jì)算機(jī)語言表示算法
2.3 結(jié)構(gòu)化程序設(shè)計(jì)方法
第3章 數(shù)據(jù)類型、運(yùn)算符和表達(dá)式
3.1 數(shù)據(jù)類型
3.2 常量與變量
3.2.1 標(biāo)識符
3.2.2 常量和符號常量
3.2.3 變量
3.3 C語言的常用數(shù)據(jù)類型
3.3.1 整型數(shù)據(jù)
3.3.2 實(shí)型數(shù)據(jù)
3.3.3 字符型數(shù)據(jù)
3.3.4 為變量賦初值
3.4 不同數(shù)據(jù)類型間的轉(zhuǎn)換
3.4.1 混合運(yùn)算中的數(shù)據(jù)類型轉(zhuǎn)換
3.4.2 賦值運(yùn)算中的數(shù)據(jù)類型轉(zhuǎn)換
3.4.3 強(qiáng)制轉(zhuǎn)換
3.5 運(yùn)算符和表達(dá)式
3.5.1 算術(shù)運(yùn)算符和算術(shù)表達(dá)式
3.5.2 賦值運(yùn)算符和賦值表達(dá)式
3.5.3 逗號運(yùn)算符和逗號表達(dá)式
第4章 程序結(jié)構(gòu)
4.1 順序結(jié)構(gòu)程序設(shè)計(jì)
4.1.1 C語句
4.1.2 賦值語句
4.1.3 數(shù)據(jù)的輸入與輸出實(shí)現(xiàn)
4.1.4 字符數(shù)據(jù)的輸入與輸出
4.1.5 格式輸入與格式輸出
4.1.6 順序結(jié)構(gòu)程序設(shè)計(jì)舉例
4.2 選擇結(jié)構(gòu)程序設(shè)計(jì)
4.2.1 關(guān)系運(yùn)算符和邏輯運(yùn)算符
4.2.2 if語句
4.2.3 if語句的嵌套
4.2.4 switch語句
4.2.5 選擇結(jié)構(gòu)程序舉例
4.3 循環(huán)結(jié)構(gòu)程序設(shè)計(jì)
4.3.1 goto語句
4.3.2 while語句
4.3.3 do…while語句
4.3.4 for語句
4.3.5 循環(huán)的嵌套
4.3.6 break語句和continue語句
4.3.7 循環(huán)語句小結(jié)
4.3.8 循環(huán)結(jié)構(gòu)程序舉例
第5章 數(shù)組
5.1 一維數(shù)組
5.1.1 一維數(shù)組的定義
5.1.2 一維數(shù)組的初始化
5.1.3 一維數(shù)組的引用
5.1.4 一維數(shù)組程序舉例
5.2 二維數(shù)組
5.2.1 二維數(shù)組的定義
5.2.2 二維數(shù)組的初始化
5.2.3 二維數(shù)組的引用
5.2.4 二維數(shù)組程序舉例
5.3 字符數(shù)組
5.3.1 字符數(shù)組的定義、初始化和引用
5.3.2 字符串
5.3.3 字符串的輸入與輸出
5.3.4 字符串處理函數(shù)
5.3.5 字符串程序舉例
第6章 函數(shù)
6.1 函數(shù)概述
6.2 函數(shù)的類別
6.2.1 庫函數(shù)
6.2.2 用戶自定義函數(shù)
6.3 函數(shù)的定義
6.3.1 無參函數(shù)的定義
6.3.2 有參函數(shù)的定義
6.3.3 空函數(shù)
6.4 函數(shù)聲明
6.5 函數(shù)的參數(shù)與函數(shù)的返回值
6.5.1 函數(shù)的實(shí)際參數(shù)和形式參數(shù)
6.5.2 數(shù)組作為函數(shù)參數(shù)
6.5.3 函數(shù)的返回值
6.6 函數(shù)的調(diào)用
6.6.1 函數(shù)調(diào)用的一般形式
6.6.2 函數(shù)調(diào)用的過程
6.6.3 三種函數(shù)調(diào)用方式
6.6.4 函數(shù)的嵌套調(diào)用
6.6.5 函數(shù)的遞歸調(diào)用
6.7 變量的作用域和存儲(chǔ)類型
6.7.1 局部變量和全局變量
6.7.2 變量的存儲(chǔ)類型
6.7.3 變量定義和聲明的區(qū)別
6.8 內(nèi)部函數(shù)和外部函數(shù)
6.8.1 內(nèi)部函數(shù)
6.8.2 外部函數(shù)
6.9 編譯預(yù)處理
6.9.1 宏定義
6.9.2 文件包含
6.9.3 條件編譯
第7章 指針
7.1 指針概述
7.2 指針變量和簡單變量
7.2.1 定義指針變量
7.2.2 指針變量的初始化
7.2.3 指針變量的引用
7.3 指針變量與一維數(shù)組
7.3.1 作為指針的數(shù)組名
7.3.2 使用指針變量引用數(shù)組元素
7.3.3 使用指針變量處理字符串
7.3.4 指針運(yùn)算
7.4 指針變量與函數(shù)
7.4.1 指針變量作為函數(shù)參數(shù)
7.4.2 數(shù)組名作為函數(shù)參數(shù)
7.5 指針的高級應(yīng)用
7.5.1 指針與多維數(shù)組
7.5.2 指向函數(shù)的指針變量
7.5.3 返回指針的函數(shù)
7.5.4 指針數(shù)組
7.5.5 指向指針的指針變量
第8章 結(jié)構(gòu)體與共用體
8.1 結(jié)構(gòu)體類型
8.1.1 結(jié)構(gòu)體類型的定義
8.1.2 結(jié)構(gòu)體變量的定義
8.1.3 結(jié)構(gòu)體變量的初始化和引用
8.2 結(jié)構(gòu)體數(shù)組
8.2.1 結(jié)構(gòu)體數(shù)組的定義
8.2.2 結(jié)構(gòu)體數(shù)組的初始化
8.2.3 結(jié)構(gòu)體數(shù)組的引用
8.3 共用體數(shù)據(jù)類型
8.3.1 共用體變量的定義
8.3.2 共用體變量的引用
8.4 枚舉數(shù)據(jù)類型
8.4.1 枚舉類型及其變量的定義
8.4.2 枚舉變量的引用
8.5 自定義類型
第9章 位運(yùn)算
9.1 位運(yùn)算符與位運(yùn)算
9.1.1 按位與運(yùn)算符“&”
9.1.2 按位或運(yùn)算符“|”
9.1.3 按位異或運(yùn)算符“^”
9.1.4 按位取反運(yùn)算符“~”
9.1.5 左移運(yùn)算符“”
9.1.6 右移運(yùn)算符“”
9.2 位段
第10章 文件
10.1 C文件的概念
10.1.1 文件名
10.1.2 文件的分類
10.2 文件的打開與關(guān)閉
10.2.1 文件類型指針
10.2.2 文件的打開(fopen函數(shù))
10.2.3 文件的關(guān)閉(fclose函數(shù))
10.3 文件的讀取和寫入
10.3.1 fgetc函數(shù)和fputc函數(shù)
10.3.2 fgets函數(shù)和fputs函數(shù)
10.3.3 fprint函數(shù)和fscanf函數(shù)
10.3.4 fread函數(shù)和fwrite函數(shù)
10.4 文件的定位
10.4.1 rewind函數(shù)
10.4.2 fseek函數(shù)
10.4.3 ftell函數(shù)
10.4.4 實(shí)例解析
第11章 C語言在單片機(jī)編程中的實(shí)例解析
附錄A 常用字符與ASCII代碼對照表
附錄B 關(guān)鍵字及其用途
附錄C 運(yùn)算符和結(jié)合性
附錄D 常用的C語言庫函數(shù)