C語言是國內(nèi)外廣泛使用的結(jié)構(gòu)化程序設(shè)計(jì)語言,它既具有高級(jí)語言的優(yōu)點(diǎn),又具有匯編語言的功能,同時(shí)具有豐富的運(yùn)算符和數(shù)據(jù)類型,其語言簡單靈活,表達(dá)能力強(qiáng),目標(biāo)程序效率高,可移植性好,無論是操作系統(tǒng)的底層開發(fā),還是嵌入式系統(tǒng)的核心編程,或者是高性能算法的實(shí)現(xiàn),C語言都展現(xiàn)出了無可比擬的優(yōu)勢(shì)。因此,多數(shù)高等院校不僅計(jì)算機(jī)專業(yè)開設(shè)了C語言課程,而且非計(jì)算機(jī)專業(yè)也開設(shè)了此課程。同時(shí),許多學(xué)生都選擇C語言作為參加全國計(jì)算機(jī)等級(jí)考試(二級(jí))的考試科目。
本書內(nèi)容
本書第2版是對(duì)第1版的改版,保留了第1版的風(fēng)格和特點(diǎn),并在章節(jié)內(nèi)容方面進(jìn)行了一定的補(bǔ)充和刪減,使得教材內(nèi)容更為充實(shí)和專業(yè)。第2版力求做到概念準(zhǔn)確、簡潔,語言通俗易懂,注重前后內(nèi)容的銜接,知識(shí)點(diǎn)安排循序漸進(jìn),案例的選取與學(xué)生聯(lián)系緊密,易于理解,有助于初學(xué)者快速掌握C語言的基礎(chǔ)知識(shí),從而更好地學(xué)習(xí)C語言。
本書詳細(xì)介紹了C語言程序設(shè)計(jì)中最基本的語法規(guī)則和程序設(shè)計(jì)方法,共分為9章。第1章緒論,主要介紹了C語言的概述及C語言程序的運(yùn)行過程,以及對(duì)簡易計(jì)算器和學(xué)生成績管理系統(tǒng)兩個(gè)案例的簡介。第2章數(shù)據(jù)類型及其運(yùn)算,主要介紹了C語言的基本數(shù)據(jù)類型、運(yùn)算符和表達(dá)式、數(shù)據(jù)的輸入和輸出、C語句和順序結(jié)構(gòu)程序設(shè)計(jì),以及簡易計(jì)算器案例分析與實(shí)現(xiàn)。第3章選擇結(jié)構(gòu)及其應(yīng)用,主要介紹了關(guān)系運(yùn)算與邏輯運(yùn)算、選擇結(jié)構(gòu)程序設(shè)計(jì)的思想和基本語句,以及簡易計(jì)算器案例的進(jìn)一步分析與實(shí)現(xiàn)。第4章循環(huán)結(jié)構(gòu)及其應(yīng)用,主要介紹循環(huán)結(jié)構(gòu)程序設(shè)計(jì)的思想和基本語句,以及簡易計(jì)算器案例的進(jìn)一步分析與實(shí)現(xiàn)。第5章數(shù)組,主要介紹了一維數(shù)組、二維數(shù)組、字符數(shù)組的定義、引用和運(yùn)用,結(jié)構(gòu)體定義及結(jié)構(gòu)體數(shù)組應(yīng)用,以及學(xué)生成績管理系統(tǒng)案例分析與實(shí)現(xiàn)。第6章函數(shù),主要介紹了函數(shù)的概念、定義與調(diào)用的方法,變量的作用域與生存期,以及學(xué)生成績管理系統(tǒng)案例的進(jìn)一步分析與實(shí)現(xiàn)。第7章預(yù)處理命令,主要介紹了宏定義、文件包含和條件編譯,以及學(xué)生成績管理系統(tǒng)案例的進(jìn)一步分析與實(shí)現(xiàn)。第8章指針,主要介紹了指針的概念、指針變量與指針的應(yīng)用,鏈表的概念及鏈表的基本操作,以及學(xué)生成績管理系統(tǒng)案例的進(jìn)一步分析與實(shí)現(xiàn)。第9章文件,主要介紹了文件的概念和基本操作,以及學(xué)生成績管理系統(tǒng)案例的進(jìn)一步分析與實(shí)現(xiàn)。
C語言程序設(shè)計(jì)(第2版)
前言
本書特點(diǎn)
(1) 本書以簡易計(jì)算器和學(xué)生成績管理系統(tǒng)兩個(gè)案例為主線來組織內(nèi)容,其中簡易計(jì)算器案例貫穿第1~4章,學(xué)生成績管理系統(tǒng)案例貫穿第5~9章,將C語言各章節(jié)的主要知識(shí)點(diǎn)有機(jī)地結(jié)合起來,形成一個(gè)整體,讓讀者充分理解各章節(jié)知識(shí)點(diǎn)之間的聯(lián)系,做到學(xué)有所用、融會(huì)貫通。在案例實(shí)現(xiàn)的過程中,介紹程序設(shè)計(jì)的基本方法及模塊化程序設(shè)計(jì)的思想,讀者能夠清晰地看到各個(gè)知識(shí)點(diǎn)在實(shí)際案例中的具體應(yīng)用,感受到知識(shí)之間的緊密聯(lián)系,從而對(duì)C語言有全面、直觀、系統(tǒng)的認(rèn)識(shí)。
(2) 注重章節(jié)學(xué)習(xí)的意義,本章導(dǎo)讀引出本章學(xué)習(xí)的意義和學(xué)習(xí)內(nèi)容,可以幫助讀者構(gòu)建完整的知識(shí)體系,理解知識(shí)連貫性和遞進(jìn)性。本章學(xué)習(xí)目標(biāo),讓讀者清楚努力方向,避免盲目學(xué)習(xí)。
(3) 針對(duì)程序設(shè)計(jì)的初學(xué)者,以通俗易懂的語言,由淺入深、循序漸進(jìn),對(duì)所介紹的內(nèi)容都給出典型的例題,每個(gè)例題均配有問題分析(給出解決問題的思路和算法)、程序代碼(完整的程序代碼,并對(duì)程序代碼添加盡可能多的注釋)、運(yùn)行結(jié)果(在Visual C 2010環(huán)境下對(duì)運(yùn)行結(jié)果截圖,有利于程序結(jié)果的驗(yàn)證),以及對(duì)關(guān)鍵代碼進(jìn)行解析和總結(jié),幫助讀者更好的理解。
(4) 所有例題均按照C99標(biāo)準(zhǔn)編寫,并遵循程序員所應(yīng)該遵循的一般編程風(fēng)格,可讀性強(qiáng)。同時(shí),每章后都設(shè)有精心挑選的多種類型的習(xí)題,以幫助讀者通過練習(xí)進(jìn)一步理解和鞏固所學(xué)的內(nèi)容。
(5) 每章的常見錯(cuò)誤分析指出了初學(xué)者在學(xué)習(xí)過程中的一些常見問題,并提供了行之有效的調(diào)試方法,讓讀者在面對(duì)錯(cuò)誤時(shí)不再手足無措,而是能夠冷靜分析、從容應(yīng)對(duì),逐步提升解決實(shí)際問題的能力。
(6) 本書配有多媒體課件、例題和習(xí)題源代碼,還配備了豐富的在線資源,包括生動(dòng)形象的微視頻、翔實(shí)準(zhǔn)確的代碼示例等,為讀者提供全方位、立體式的學(xué)習(xí)支持,讓學(xué)習(xí)過程更加便捷、高效且生動(dòng)有趣。
讀者對(duì)象
本書適合作為高等學(xué)校C語言程序設(shè)計(jì)課程的教材,可以滿足不同專業(yè)、不同學(xué)時(shí)的教學(xué)需要,對(duì)計(jì)算機(jī)相關(guān)專業(yè)和電子信息類專業(yè)可以講授本書的全部內(nèi)容,其他專業(yè)可以講授本書的部分內(nèi)容。本書也適合計(jì)算機(jī)水平考試培訓(xùn)及各類成人教育教學(xué)使用,還可作為C語言編程愛好者的自學(xué)參考書。
本書的作者均為承擔(dān)程序設(shè)計(jì)、數(shù)據(jù)結(jié)構(gòu)等課程教學(xué)的骨干教師,教學(xué)經(jīng)驗(yàn)豐富,積累了不少的教學(xué)素材,其中蔡小慶負(fù)責(zé)編寫第2章、第6章和簡易計(jì)算器案例,邵蘭潔負(fù)責(zé)編寫第5章和學(xué)生成績管理系統(tǒng)案例,云彩霞負(fù)責(zé)編寫第3章、第7章,孫麗云負(fù)責(zé)編寫第1章、第8章,任文鳳負(fù)責(zé)編寫第4章,李今負(fù)責(zé)編寫第9章。全書由蔡小慶和邵蘭潔統(tǒng)稿,由李麗芬主審。
建議在教學(xué)過程中突出重點(diǎn),精講多練,舉一反三。根據(jù)知識(shí)點(diǎn)的性質(zhì)和特點(diǎn),采用翻轉(zhuǎn)課堂教學(xué)、案例教學(xué)和任務(wù)驅(qū)動(dòng)教學(xué)等多種教學(xué)方法相結(jié)合的方式,以提高學(xué)生學(xué)習(xí)的興趣和主動(dòng)性,注重學(xué)生程序設(shè)計(jì)能力的培養(yǎng)。
在本書的編寫過程中,作者廣泛參閱和借鑒了諸多文獻(xiàn),并吸取了其優(yōu)點(diǎn),在此謹(jǐn)向這些文獻(xiàn)的作者致以誠摯的謝意。本書的出版凝聚了清華大學(xué)出版社工作人員的辛勤汗水,在此感謝清華大學(xué)出版社的信任與付出。
由于作者水平有限,書中難免存在疏漏和不足之處,敬請(qǐng)廣大讀者批評(píng)指正。
作者
2025年3月
第1章緒論
1.1C語言的發(fā)展
1.2C語言的特點(diǎn)
1.3C程序結(jié)構(gòu)
1.3.1C程序的基本組成
1.3.2算法
1.3.3C程序的三種基本結(jié)構(gòu)
1.4C程序的實(shí)現(xiàn)
1.4.1C程序的開發(fā)步驟
1.4.2C程序的編輯
1.4.3C程序的編譯、鏈接及執(zhí)行
1.4.4C程序的調(diào)試
1.5案例簡介
1.5.1簡易計(jì)算器案例
1.5.2學(xué)生成績管理系統(tǒng)案例
1.6常見錯(cuò)誤分析
本章小結(jié)
習(xí)題一
第2章數(shù)據(jù)類型及其運(yùn)算
2.1標(biāo)識(shí)符和關(guān)鍵字
2.1.1標(biāo)識(shí)符
2.1.2關(guān)鍵字
2.2常量和變量
2.2.1常量
2.2.2變量
2.3數(shù)據(jù)類型
2.3.1整型數(shù)據(jù)
2.3.2實(shí)型數(shù)據(jù)
2.3.3字符型數(shù)據(jù)
2.3.4枚舉類型數(shù)據(jù)
2.4數(shù)據(jù)類型的轉(zhuǎn)換
2.5運(yùn)算符和表達(dá)式
2.5.1算術(shù)運(yùn)算符和算術(shù)表達(dá)式
2.5.2賦值運(yùn)算符和賦值表達(dá)式
2.5.3自增運(yùn)算符和自減運(yùn)算符
2.5.4逗號(hào)運(yùn)算符和逗號(hào)表達(dá)式
2.6數(shù)據(jù)的輸入和輸出
2.6.1格式輸入函數(shù)scanf()
2.6.2格式輸出函數(shù)printf()
2.6.3字符輸入函數(shù)getchar()
2.6.4字符輸出函數(shù)putchar()
2.7C語句和順序結(jié)構(gòu)程序設(shè)計(jì)
2.7.1C語句概述
2.7.2順序結(jié)構(gòu)程序設(shè)計(jì)
2.8簡易計(jì)算器案例分析與實(shí)現(xiàn)
2.9常見錯(cuò)誤分析
本章小結(jié)
習(xí)題二
第3章選擇結(jié)構(gòu)及其應(yīng)用
3.1關(guān)系運(yùn)算符和關(guān)系表達(dá)式
3.1.1關(guān)系運(yùn)算符
3.1.2關(guān)系表達(dá)式
3.2邏輯運(yùn)算符和邏輯表達(dá)式
3.2.1邏輯運(yùn)算符
3.2.2邏輯表達(dá)式
3.3if語句
3.3.1if分支
3.3.2ifelse分支
3.3.3嵌套的if語句
3.4switch語句
3.5條件運(yùn)算符和條件表達(dá)式
3.6簡易計(jì)算器案例分析與實(shí)現(xiàn)
3.7常見錯(cuò)誤分析
本章小結(jié)
習(xí)題三
第4章循環(huán)結(jié)構(gòu)及其應(yīng)用
4.1while循環(huán)語句
4.2dowhile循環(huán)語句
4.3for循環(huán)語句
4.4三種循環(huán)語句的比較
4.5循環(huán)嵌套
4.6break語句和continue語句
4.6.1break語句
4.6.2continue語句
4.7goto語句和標(biāo)號(hào)
4.8簡易計(jì)算器案例分析與實(shí)現(xiàn)
4.9常見錯(cuò)誤分析
本章小結(jié)
習(xí)題四
第5章數(shù)組
5.1一維數(shù)組
5.1.1一維數(shù)組的定義和引用
5.1.2一維數(shù)組的初始化
5.1.3一維數(shù)組應(yīng)用舉例
5.2二維數(shù)組
5.2.1二維數(shù)組的定義和引用
5.2.2二維數(shù)組的初始化
5.2.3二維數(shù)組應(yīng)用舉例
5.3字符數(shù)組和字符串
5.3.1字符數(shù)組的定義和初始化
5.3.2字符串
5.3.3字符串的輸入和輸出
5.3.4字符串處理函數(shù)
5.3.5字符數(shù)組應(yīng)用舉例
5.4結(jié)構(gòu)體數(shù)組
5.4.1結(jié)構(gòu)體類型的定義
5.4.2結(jié)構(gòu)體變量的定義和引用
5.4.3結(jié)構(gòu)體變量的初始化
5.4.4結(jié)構(gòu)體數(shù)組的定義
5.4.5結(jié)構(gòu)體數(shù)組的初始化
5.4.6結(jié)構(gòu)體數(shù)組的引用
5.5學(xué)生成績管理系統(tǒng)案例分析與實(shí)現(xiàn)
5.6常見錯(cuò)誤分析
本章小結(jié)
習(xí)題五
第6章函數(shù)
6.1函數(shù)概述
6.1.1函數(shù)的概念
6.1.2函數(shù)的分類
6.2用戶自定義函數(shù)
6.2.1函數(shù)定義的形式
6.2.2形參和實(shí)參
6.2.3函數(shù)的返回值
6.3函數(shù)的調(diào)用
6.3.1函數(shù)的調(diào)用方式
6.3.2函數(shù)的原型聲明
6.3.3函數(shù)的參數(shù)傳遞
6.4函數(shù)的嵌套調(diào)用和遞歸調(diào)用
6.4.1函數(shù)的嵌套調(diào)用
6.4.2函數(shù)的遞歸調(diào)用
6.5數(shù)組作為函數(shù)的參數(shù)
6.5.1數(shù)組元素作為函數(shù)的參數(shù)
6.5.2數(shù)組名作為函數(shù)的參數(shù)
6.6變量的作用域和存儲(chǔ)類別
6.6.1變量的作用域局部變量和全局變量
6.6.2變量的存儲(chǔ)類別和生存期
6.6.3變量的作用域和生存期小結(jié)
6.7函數(shù)的作用域
6.7.1內(nèi)部函數(shù)
6.7.2外部函數(shù)
6.8學(xué)生成績管理系統(tǒng)案例分析與實(shí)現(xiàn)
6.8.1案例中的自定義函數(shù)簡介
6.8.2案例中函數(shù)之間的調(diào)用關(guān)系
6.8.3案例中部分功能模塊的實(shí)現(xiàn)
6.9常見錯(cuò)誤分析
本章小結(jié)
習(xí)題六
第7章預(yù)處理命令
7.1宏定義
7.1.1不帶參數(shù)的宏定義
7.1.2帶參數(shù)的宏定義
7.1.3撤銷宏定義命令
7.2文件包含命令
7.3條件編譯命令
7.4學(xué)生成績管理系統(tǒng)案例分析與實(shí)現(xiàn)
7.5常見錯(cuò)誤分析
本章小結(jié)
習(xí)題七
第8章指針
8.1變量的地址和指針
8.2指針變量的定義
8.3指針運(yùn)算
8.3.1取地址運(yùn)算符
8.3.2指針運(yùn)算符
8.3.3賦值運(yùn)算
8.3.4空指針與void指針
8.4指針與函數(shù)
8.4.1指針作為函數(shù)參數(shù)
8.4.2指針作為函數(shù)的返回值
8.4.3指向函數(shù)的指針
8.5指針與數(shù)組
8.5.1一維數(shù)組的指針表示
8.5.2二維數(shù)組的指針表示
8.5.3指針與字符串
8.6指針數(shù)組和指向指針的指針
8.6.1指針數(shù)組
8.6.2指向指針的指針
8.7指針與結(jié)構(gòu)體
8.7.1指向結(jié)構(gòu)體變量的指針
8.7.2指向結(jié)構(gòu)體數(shù)組的指針
8.7.3結(jié)構(gòu)體變量和結(jié)構(gòu)體指針變量作為函數(shù)參數(shù)
8.8鏈表
8.8.1鏈表的類型及定義
8.8.2單鏈表的基本操作
8.9學(xué)生成績管理系統(tǒng)案例分析與實(shí)現(xiàn)
8.9.1學(xué)生信息結(jié)構(gòu)體類型定義
8.9.2單鏈表中節(jié)點(diǎn)數(shù)據(jù)類型的聲明
8.9.3案例中部分功能模塊的實(shí)現(xiàn)
8.10常見錯(cuò)誤分析
本章小結(jié)
習(xí)題八
第9章文件
9.1文件概述
9.1.1文件的定義
9.1.2文件的分類
9.2文件類型指針
9.3文件的打開、讀寫和關(guān)閉
9.3.1文件的打開函數(shù)fopen()
9.3.2文件的關(guān)閉函數(shù)fclose()
9.3.3文件的讀寫
9.4文件的定位
9.5學(xué)生成績管理系統(tǒng)案例分析與實(shí)現(xiàn)
9.6常見錯(cuò)誤分析
本章小結(jié)
習(xí)題九
附錄
附錄A常用字符與ASCII碼對(duì)照表
附錄B運(yùn)算符的優(yōu)先級(jí)和結(jié)合性表
附錄C常用標(biāo)準(zhǔn)庫函數(shù)
參考文獻(xiàn)