程序設(shè)計是從事軟件開發(fā)工作的技能,是一種需要創(chuàng)造性的智力密集型勞動。讓學(xué)生掌握程序設(shè)計的思想和方法,并通過一門具體的程序設(shè)計語言掌握程序設(shè)計的基本理論和具體語法表達,是高級程序設(shè)計語言教學(xué)的主要目標。
C語言是國際上廣泛流行的計算機語言之一,C語言具有很多突出的優(yōu)點,具備很強的數(shù)據(jù)處理能力,目前已成為計算機程序設(shè)計的主流語言。C語言不僅適用于系統(tǒng)軟件的設(shè)計,還適用于應(yīng)用軟件設(shè)計,在操作系統(tǒng)、工具軟件、圖形圖像處理軟件、數(shù)值計算、人工智能、數(shù)據(jù)庫處理、嵌入式系統(tǒng)等多個方面都得到了廣泛的應(yīng)用。目前,全國計算機等級考試、職業(yè)資格認定、技能大賽等都將C語言列入考查范圍。學(xué)習(xí)和使用C語言已經(jīng)成為廣大計算機應(yīng)用人員和學(xué)生的迫切需求。因此,我國絕大部分高等院校都以C語言作為學(xué)生程序設(shè)計入門的語言,同時,C語言也為進一步學(xué)習(xí)C 以及Visual C 奠定了基礎(chǔ)。
本書作為C語言程序設(shè)計的入門與應(yīng)用教材,具有以下特色。
1.簡單易學(xué),循序漸進
充分考慮到初學(xué)者學(xué)習(xí)C語言的特點,本書按照循序漸進、難點分散的原則組織內(nèi)容。通過通俗易懂的敘述,闡明復(fù)雜、靈活的概念。對于難點與重點,通過豐富的例題,進行詳盡的解釋。力求做到語言通俗、概念清晰、易學(xué)實用,以使讀者能夠做到學(xué)得會、上手快、用得著。
2.注重基礎(chǔ),突出實用
C語言博大精深。本書精選了對初學(xué)者而言最基本、最重要、最實用的內(nèi)容進行介紹,不刻意追求所謂的全面和詳盡。對于較生僻的內(nèi)容,也從概念講解入手進行簡單介紹,以保證C語言的完整性。力求做到內(nèi)容新穎、實用,邏輯性強,完整性好,且又突出重點。
3.強化編程,理實結(jié)合
本書不只是講解C語言的語法規(guī)則,更重要的是培養(yǎng)讀者的C語言程序設(shè)計能力。本書始終強化編程思想,通過例題、程序案例、習(xí)題,給讀者以潛移默化的影響。由于程序設(shè)計語言是實踐性很強的課程,故每章都配有編程題,以使學(xué)生盡快掌握C語言的編程方法和提高調(diào)試程序的能力。
4.與時俱進,代碼規(guī)范
本書參照ISO/IEC 9899:2018,簡稱C18標準編寫程序,同時也符合全國計算機等級考試二級C語言程序設(shè)計考試大綱(2022年版)的要求,從第6章開始,大部分問題求解都以模塊化的方式進行程序設(shè)計,引導(dǎo)學(xué)生掌握模塊化程序設(shè)計思想。本書介紹的知識和程序具有通用性,基本可以適用于任何計算機系統(tǒng)和C版本,但是應(yīng)說明,不同的C版本是有一些區(qū)別的。本書所有程序均在Visual C 6.0開發(fā)環(huán)境中調(diào)試通過。
本書適合作為高職高專院校及職業(yè)技術(shù)大學(xué)C語言程序設(shè)計課程教材,也可作為參加培訓(xùn)、考級、考試的人員及廣大C語言愛好者的自學(xué)和參考用書。
本書的編者均為武漢職業(yè)技術(shù)大學(xué)人工智能學(xué)院(信創(chuàng)產(chǎn)業(yè)學(xué)院)從事軟件技術(shù)專業(yè)教學(xué)的教師。宋海民任主編,陳丹、胡大威、賈學(xué)斌任副主編。本書共10章,宋海民編寫第1章、第2章、第3章;胡大威編寫第4章、第5章;賈學(xué)斌編寫第6章、第7章、第8章、第10章及附錄;陳丹編寫第9章。以上各編者都是具有豐富教學(xué)實踐經(jīng)驗的教師。
編者在編寫本書的過程中得到了武漢職業(yè)技術(shù)大學(xué)人工智能學(xué)院(信創(chuàng)產(chǎn)業(yè)學(xué)院)的大力支持。在編寫過程中,編者學(xué)習(xí)和借鑒了大量有關(guān)的參考資料,吸取了國內(nèi)外同類教材和有關(guān)文獻的精華,在此向相關(guān)人員表示深深的感謝!
感謝教師及讀者使用本書,本書力爭反映編者的經(jīng)驗和體會,由于編者水平有限,書中不足之處在所難免,懇請廣大讀者批評指正。
編 者
2025年3月
第1章 C語言概述001
1.1 初識C語言001
1.1.1 C語言的發(fā)展史001
1.1.2 C語言的特點與應(yīng)用領(lǐng)域003
1.1.3 認識第一個C程序004
1.2 C語言的語法基礎(chǔ)005
1.2.1 C語言字符集005
1.2.2 標識符006
1.2.3 保留字006
1.3 設(shè)計簡單的C程序007
1.3.1 賦值語句007
1.3.2 printf ()函數(shù)008
1.3.3 scanf ()函數(shù)009
1.3.4 庫函數(shù)和頭文件010
1.4 C程序的開發(fā)過程012
1.4.1 C程序的實現(xiàn)步驟012
1.4.2 C語言常用集成開發(fā)環(huán)境013
1.5 在VC 6.0中開發(fā)C程序014
1.5.1 VC 6.0集成開發(fā)環(huán)境簡介014
1.5.2 建立控制臺應(yīng)用程序015
1.6 程序案例019
習(xí)題1023
第2章 基本數(shù)據(jù)類型、運算符及表達式026
2.1 C語言的數(shù)據(jù)類型026
2.2 常量027
2.3 變量031
2.3.1 變量的定義031
2.3.2 整型變量033
2.3.3 實型變量037
2.3.4 字符變量038
2.4 運算符和表達式041
2.4.1 運算符的分類041
2.4.2 運算符的優(yōu)先級與結(jié)合性042
2.4.3 算術(shù)運算符和算術(shù)表達式042
2.4.4 增1、減1運算符及表達式044
2.4.5 賦值運算符和賦值表達式045
2.4.6 關(guān)系運算符和關(guān)系表達式048
2.4.7 邏輯運算符和邏輯表達式050
2.4.8 逗號運算符和逗號表達式052
2.4.9 sizeof運算符053
2.5 數(shù)據(jù)類型的轉(zhuǎn)換054
2.5.1 自動類型轉(zhuǎn)換054
2.5.2 強制類型轉(zhuǎn)換055
2.6 程序案例056
習(xí)題2058
第3章 順序結(jié)構(gòu)程序設(shè)計061
3.1 結(jié)構(gòu)化程序設(shè)計基礎(chǔ)061
3.1.1 算法的概念061
3.1.2 算法的特點062
3.1.3 算法的描述063
3.1.4 結(jié)構(gòu)化程序設(shè)計067
3.2 輸入語句070
3.2.1 輸入/輸出(I/O)函數(shù)070
3.2.2 字符輸入函數(shù)和字符輸入語句071
3.2.3 格式輸入函數(shù)和格式輸入語句072
3.2.4 通過scanf ()函數(shù)從鍵盤輸入數(shù)據(jù)073
3.2.5 scanf ()函數(shù)輸入中常見錯誤分析074
3.3 輸出語句075
3.3.1 字符輸出函數(shù)和字符輸出語句075
3.3.2 格式輸出函數(shù)和格式輸出語句076
3.4 程序案例084
習(xí)題3086
第4章 選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)程序設(shè)計092
4.1 if語句092
4.1.1 if語句概述092
4.1.2 if語句的嵌套098
4.1.3 條件運算符和條件表達式100
4.2 switch語句102
4.3 選擇結(jié)構(gòu)程序設(shè)計案例106
4.4 while語句108
4.5 do…while語句111
4.6 for語句115
4.7 循環(huán)嵌套121
4.8 break語句和continue語句123
4.9 語句標號和goto語句125
4.10 循環(huán)結(jié)構(gòu)程序設(shè)計案例126
習(xí)題4128
第5章 數(shù)組135
5.1 數(shù)組的概念135
5.2 一維數(shù)組136
5.2.1 一維數(shù)組的定義136
5.2.2 一維數(shù)組的初始化137
5.2.3 一維數(shù)組元素的引用138
5.2.4 一維數(shù)組的應(yīng)用139
5.3 二維數(shù)組144
5.3.1 二維數(shù)組的定義144
5.3.2 二維數(shù)組的初始化145
5.3.3 二維數(shù)組元素的引用146
5.3.4 二維數(shù)組的應(yīng)用147
5.4 字符數(shù)組148
5.4.1 字符數(shù)組的定義148
5.4.2 字符數(shù)組的初始化148
5.4.3 字符數(shù)組的引用149
5.4.4 字符串和字符串結(jié)束標志150
5.4.5 字符數(shù)組的輸入和輸出151
5.4.6 字符串處理函數(shù)152
5.4.7 字符數(shù)組的應(yīng)用154
5.5 程序案例156
習(xí)題5158
第6章 函數(shù)162
6.1 C程序的模塊化設(shè)計162
6.1.1 函數(shù)的概念162
6.1.2 C程序模塊化設(shè)計163
6.1.3 函數(shù)的分類164
6.2 函數(shù)的定義165
6.2.1 無參函數(shù)的定義165
6.2.2 有參函數(shù)的定義166
6.2.3 函數(shù)定義的應(yīng)用167
6.3 函數(shù)的參數(shù)與返回值168
6.4 函數(shù)的調(diào)用169
6.4.1 函數(shù)調(diào)用的一般格式170
6.4.2 函數(shù)調(diào)用的方式170
6.4.3 對被調(diào)函數(shù)的聲明172
6.4.4 函數(shù)的嵌套調(diào)用174
6.4.5 函數(shù)的遞歸調(diào)用175
6.5 數(shù)組作為函數(shù)參數(shù)179
6.6 變量的作用域和存儲類別184
6.6.1 變量的作用域184
6.6.2 變量的存儲類別186
6.6.3 局部變量的存儲類別186
6.6.4 全局變量的存儲類別193
6.7 函數(shù)的作用域和存儲類別196
6.8 程序案例197
習(xí)題6201
第7章 編譯預(yù)處理210
7.1 宏定義210
7.1.1 不帶參數(shù)的宏定義210
7.1.2 帶參數(shù)的宏定義214
7.1.3 取消宏定義218
7.2 文件包含218
7.3 條件編譯221
7.4 程序案例224
習(xí)題7225
第8章 指針231
8.1 指針概述231
8.1.1 內(nèi)存地址與變量的地址231
8.1.2 指針與指針變量233
8.2 指針變量234
8.2.1 指針變量的定義與初始化234
8.2.2 指針變量的引用235
8.2.3 指針變量作為函數(shù)的參數(shù)238
8.3 指針與數(shù)組241
8.3.1 指向數(shù)組元素的指針241
8.3.2 指針變量的運算242
8.3.3 通過指針引用數(shù)組元素246
8.3.4 數(shù)組名和指針變量作函數(shù)參數(shù)250
8.4 指針與字符串253
8.4.1 字符串指針變量的定義與使用253
8.4.2 字符串指針變量作函數(shù)參數(shù)255
8.4.3 使用字符串指針變量與使用字符數(shù)組的區(qū)別256
8.5 指針與函數(shù)257
8.5.1 函數(shù)指針變量257
8.5.2 指針型函數(shù)259
8.6 指針數(shù)組和二級指針260
8.6.1 指針數(shù)組260
8.6.2 二級指針262
8.7 程序案例264
習(xí)題8265
第9章 構(gòu)造數(shù)據(jù)類型270
9.1 結(jié)構(gòu)體類型270
9.1.1 結(jié)構(gòu)體類型聲明270
9.1.2 結(jié)構(gòu)體變量的定義271
9.1.3 結(jié)構(gòu)體變量的初始化及成員的引用276
9.2 結(jié)構(gòu)體數(shù)組278
9.2.1 結(jié)構(gòu)體數(shù)組的定義278
9.2.2 結(jié)構(gòu)體數(shù)組的初始化及訪問279
9.3 結(jié)構(gòu)體函數(shù)281
9.3.1 結(jié)構(gòu)體變量作為函數(shù)參數(shù)281
9.3.2 結(jié)構(gòu)體變量為函數(shù)的返回值282
9.4 結(jié)構(gòu)體指針283
9.4.1 指向結(jié)構(gòu)體變量的指針變量284
9.4.2 指向結(jié)構(gòu)體數(shù)組元素的指針286
9.4.3 用指向結(jié)構(gòu)體的指針作為函數(shù)參數(shù)287
9.5 共用體類型289
9.6 枚舉類型293
9.7 用typedef定義類型296
9.8 程序案例299
習(xí)題9301
第10章 文件308
10.1 文件概述308
10.1.1 文件的概念308
10.1.2 文件指針309
10.1.3 緩沖文件系統(tǒng)和非緩沖文件系統(tǒng)310
10.2 文件的打開和關(guān)閉311
10.2.1 用fopen ()函數(shù)打開文件311
10.2.2 用fclose ()函數(shù)關(guān)閉文件 314
10.3 文件的順序讀寫315
10.3.1 文本文件中字符的輸入/輸出315
10.3.2 文本文件中字符串的輸入/輸出317
10.3.3 文本文件的格式化輸入/輸出319
10.3.4 二進制文件的輸入/輸出320
10.4 文件的隨機讀寫321
10.5 文件檢測函數(shù)322
10.6 程序案例323
習(xí)題10326
附錄A 常用字符與ASCII碼對照表330
附錄B 運算符的優(yōu)先級和結(jié)合性332
參考文獻334