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