程序設(shè)計(jì)是從事軟件開發(fā)工作的技能,是一種需要?jiǎng)?chuàng)造性的智力密集型勞動(dòng)。讓學(xué)生掌握程序設(shè)計(jì)的思想和方法,并通過(guò)一門具體的程序設(shè)計(jì)語(yǔ)言掌握程序設(shè)計(jì)的基本理論和具體語(yǔ)法表達(dá),是高級(jí)程序設(shè)計(jì)語(yǔ)言教學(xué)的主要目標(biāo)。
C語(yǔ)言是國(guó)際上廣泛流行的計(jì)算機(jī)語(yǔ)言之一,C語(yǔ)言具有很多突出的優(yōu)點(diǎn),具備很強(qiáng)的數(shù)據(jù)處理能力,目前已成為計(jì)算機(jī)程序設(shè)計(jì)的主流語(yǔ)言。C語(yǔ)言不僅適用于系統(tǒng)軟件的設(shè)計(jì),還適用于應(yīng)用軟件設(shè)計(jì),在操作系統(tǒng)、工具軟件、圖形圖像處理軟件、數(shù)值計(jì)算、人工智能、數(shù)據(jù)庫(kù)處理、嵌入式系統(tǒng)等多個(gè)方面都得到了廣泛的應(yīng)用。目前,全國(guó)計(jì)算機(jī)等級(jí)考試、職業(yè)資格認(rèn)定、技能大賽等都將C語(yǔ)言列入考查范圍。學(xué)習(xí)和使用C語(yǔ)言已經(jīng)成為廣大計(jì)算機(jī)應(yīng)用人員和學(xué)生的迫切需求。因此,我國(guó)絕大部分高等院校都以C語(yǔ)言作為學(xué)生程序設(shè)計(jì)入門的語(yǔ)言,同時(shí),C語(yǔ)言也為進(jìn)一步學(xué)習(xí)C 以及Visual C 奠定了基礎(chǔ)。
本書作為C語(yǔ)言程序設(shè)計(jì)的入門與應(yīng)用教材,具有以下特色。
1.簡(jiǎn)單易學(xué),循序漸進(jìn)
充分考慮到初學(xué)者學(xué)習(xí)C語(yǔ)言的特點(diǎn),本書按照循序漸進(jìn)、難點(diǎn)分散的原則組織內(nèi)容。通過(guò)通俗易懂的敘述,闡明復(fù)雜、靈活的概念。對(duì)于難點(diǎn)與重點(diǎn),通過(guò)豐富的例題,進(jìn)行詳盡的解釋。力求做到語(yǔ)言通俗、概念清晰、易學(xué)實(shí)用,以使讀者能夠做到學(xué)得會(huì)、上手快、用得著。
2.注重基礎(chǔ),突出實(shí)用
C語(yǔ)言博大精深。本書精選了對(duì)初學(xué)者而言最基本、最重要、最實(shí)用的內(nèi)容進(jìn)行介紹,不刻意追求所謂的全面和詳盡。對(duì)于較生僻的內(nèi)容,也從概念講解入手進(jìn)行簡(jiǎn)單介紹,以保證C語(yǔ)言的完整性。力求做到內(nèi)容新穎、實(shí)用,邏輯性強(qiáng),完整性好,且又突出重點(diǎn)。
3.強(qiáng)化編程,理實(shí)結(jié)合
本書不只是講解C語(yǔ)言的語(yǔ)法規(guī)則,更重要的是培養(yǎng)讀者的C語(yǔ)言程序設(shè)計(jì)能力。本書始終強(qiáng)化編程思想,通過(guò)例題、程序案例、習(xí)題,給讀者以潛移默化的影響。由于程序設(shè)計(jì)語(yǔ)言是實(shí)踐性很強(qiáng)的課程,故每章都配有編程題,以使學(xué)生盡快掌握C語(yǔ)言的編程方法和提高調(diào)試程序的能力。
4.與時(shí)俱進(jìn),代碼規(guī)范
本書參照ISO/IEC 9899:2018,簡(jiǎn)稱C18標(biāo)準(zhǔn)編寫程序,同時(shí)也符合全國(guó)計(jì)算機(jī)等級(jí)考試二級(jí)C語(yǔ)言程序設(shè)計(jì)考試大綱(2022年版)的要求,從第6章開始,大部分問題求解都以模塊化的方式進(jìn)行程序設(shè)計(jì),引導(dǎo)學(xué)生掌握模塊化程序設(shè)計(jì)思想。本書介紹的知識(shí)和程序具有通用性,基本可以適用于任何計(jì)算機(jī)系統(tǒng)和C版本,但是應(yīng)說(shuō)明,不同的C版本是有一些區(qū)別的。本書所有程序均在Visual C 6.0開發(fā)環(huán)境中調(diào)試通過(guò)。
本書適合作為高職高專院校及職業(yè)技術(shù)大學(xué)C語(yǔ)言程序設(shè)計(jì)課程教材,也可作為參加培訓(xùn)、考級(jí)、考試的人員及廣大C語(yǔ)言愛好者的自學(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é)實(shí)踐經(jīng)驗(yàn)的教師。
編者在編寫本書的過(guò)程中得到了武漢職業(yè)技術(shù)大學(xué)人工智能學(xué)院(信創(chuàng)產(chǎn)業(yè)學(xué)院)的大力支持。在編寫過(guò)程中,編者學(xué)習(xí)和借鑒了大量有關(guān)的參考資料,吸取了國(guó)內(nèi)外同類教材和有關(guān)文獻(xiàn)的精華,在此向相關(guān)人員表示深深的感謝!
感謝教師及讀者使用本書,本書力爭(zhēng)反映編者的經(jīng)驗(yàn)和體會(huì),由于編者水平有限,書中不足之處在所難免,懇請(qǐng)廣大讀者批評(píng)指正。
編 者
2025年3月
第1章 C語(yǔ)言概述001
1.1 初識(shí)C語(yǔ)言001
1.1.1 C語(yǔ)言的發(fā)展史001
1.1.2 C語(yǔ)言的特點(diǎn)與應(yīng)用領(lǐng)域003
1.1.3 認(rèn)識(shí)第一個(gè)C程序004
1.2 C語(yǔ)言的語(yǔ)法基礎(chǔ)005
1.2.1 C語(yǔ)言字符集005
1.2.2 標(biāo)識(shí)符006
1.2.3 保留字006
1.3 設(shè)計(jì)簡(jiǎn)單的C程序007
1.3.1 賦值語(yǔ)句007
1.3.2 printf ()函數(shù)008
1.3.3 scanf ()函數(shù)009
1.3.4 庫(kù)函數(shù)和頭文件010
1.4 C程序的開發(fā)過(guò)程012
1.4.1 C程序的實(shí)現(xiàn)步驟012
1.4.2 C語(yǔ)言常用集成開發(fā)環(huán)境013
1.5 在VC 6.0中開發(fā)C程序014
1.5.1 VC 6.0集成開發(fā)環(huán)境簡(jiǎn)介014
1.5.2 建立控制臺(tái)應(yīng)用程序015
1.6 程序案例019
習(xí)題1023
第2章 基本數(shù)據(jù)類型、運(yùn)算符及表達(dá)式026
2.1 C語(yǔ)言的數(shù)據(jù)類型026
2.2 常量027
2.3 變量031
2.3.1 變量的定義031
2.3.2 整型變量033
2.3.3 實(shí)型變量037
2.3.4 字符變量038
2.4 運(yùn)算符和表達(dá)式041
2.4.1 運(yùn)算符的分類041
2.4.2 運(yùn)算符的優(yōu)先級(jí)與結(jié)合性042
2.4.3 算術(shù)運(yùn)算符和算術(shù)表達(dá)式042
2.4.4 增1、減1運(yùn)算符及表達(dá)式044
2.4.5 賦值運(yùn)算符和賦值表達(dá)式045
2.4.6 關(guān)系運(yùn)算符和關(guān)系表達(dá)式048
2.4.7 邏輯運(yùn)算符和邏輯表達(dá)式050
2.4.8 逗號(hào)運(yùn)算符和逗號(hào)表達(dá)式052
2.4.9 sizeof運(yùn)算符053
2.5 數(shù)據(jù)類型的轉(zhuǎn)換054
2.5.1 自動(dòng)類型轉(zhuǎn)換054
2.5.2 強(qiáng)制類型轉(zhuǎn)換055
2.6 程序案例056
習(xí)題2058
第3章 順序結(jié)構(gòu)程序設(shè)計(jì)061
3.1 結(jié)構(gòu)化程序設(shè)計(jì)基礎(chǔ)061
3.1.1 算法的概念061
3.1.2 算法的特點(diǎn)062
3.1.3 算法的描述063
3.1.4 結(jié)構(gòu)化程序設(shè)計(jì)067
3.2 輸入語(yǔ)句070
3.2.1 輸入/輸出(I/O)函數(shù)070
3.2.2 字符輸入函數(shù)和字符輸入語(yǔ)句071
3.2.3 格式輸入函數(shù)和格式輸入語(yǔ)句072
3.2.4 通過(guò)scanf ()函數(shù)從鍵盤輸入數(shù)據(jù)073
3.2.5 scanf ()函數(shù)輸入中常見錯(cuò)誤分析074
3.3 輸出語(yǔ)句075
3.3.1 字符輸出函數(shù)和字符輸出語(yǔ)句075
3.3.2 格式輸出函數(shù)和格式輸出語(yǔ)句076
3.4 程序案例084
習(xí)題3086
第4章 選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)程序設(shè)計(jì)092
4.1 if語(yǔ)句092
4.1.1 if語(yǔ)句概述092
4.1.2 if語(yǔ)句的嵌套098
4.1.3 條件運(yùn)算符和條件表達(dá)式100
4.2 switch語(yǔ)句102
4.3 選擇結(jié)構(gòu)程序設(shè)計(jì)案例106
4.4 while語(yǔ)句108
4.5 do…while語(yǔ)句111
4.6 for語(yǔ)句115
4.7 循環(huán)嵌套121
4.8 break語(yǔ)句和continue語(yǔ)句123
4.9 語(yǔ)句標(biāo)號(hào)和goto語(yǔ)句125
4.10 循環(huán)結(jié)構(gòu)程序設(shè)計(jì)案例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é)束標(biāo)志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è)計(jì)162
6.1.1 函數(shù)的概念162
6.1.2 C程序模塊化設(shè)計(jì)163
6.1.3 函數(shù)的分類164
6.2 函數(shù)的定義165
6.2.1 無(wú)參函數(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 對(duì)被調(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 變量的作用域和存儲(chǔ)類別184
6.6.1 變量的作用域184
6.6.2 變量的存儲(chǔ)類別186
6.6.3 局部變量的存儲(chǔ)類別186
6.6.4 全局變量的存儲(chǔ)類別193
6.7 函數(shù)的作用域和存儲(chǔ)類別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 指針變量的運(yùn)算242
8.3.3 通過(guò)指針引用數(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ù)組和二級(jí)指針260
8.6.1 指針數(shù)組260
8.6.2 二級(jí)指針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 二進(jìn)制文件的輸入/輸出320
10.4 文件的隨機(jī)讀寫321
10.5 文件檢測(cè)函數(shù)322
10.6 程序案例323
習(xí)題10326
附錄A 常用字符與ASCII碼對(duì)照表330
附錄B 運(yùn)算符的優(yōu)先級(jí)和結(jié)合性332
參考文獻(xiàn)334