本書針對計(jì)算機(jī)專業(yè)新生和對程序設(shè)計(jì)感興趣的初學(xué)者進(jìn)行編寫,全書分為10章,內(nèi)容包括C語言概述、數(shù)據(jù)類型、運(yùn)算符和表達(dá)式、數(shù)據(jù)的輸入和輸出、選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu)、數(shù)組、函數(shù)、指針、結(jié)構(gòu)體、共用體、枚舉與鏈表,以及文件操作。 本書注重理論與實(shí)踐相結(jié)合,同時(shí)兼顧激發(fā)讀者的學(xué)習(xí)興趣,在教學(xué)內(nèi)容上采用了沉浸閱讀 啟發(fā)思考 知識(shí)點(diǎn)鞏固 一例多解 實(shí)戰(zhàn)體驗(yàn)的設(shè)計(jì)方法,每一個(gè)章節(jié)都有先導(dǎo)或預(yù)備知識(shí),由此引入本章要講解的具體內(nèi)容,同時(shí)在關(guān)鍵節(jié)點(diǎn)提出問題,啟發(fā)讀者思考,并及時(shí)通過重點(diǎn)提示、題目鞏固和實(shí)例分析等加深讀者對知識(shí)點(diǎn)的理解,最后通過實(shí)戰(zhàn)練習(xí)鍛煉和培養(yǎng)讀者的計(jì)算思維。每章結(jié)尾都附有大量習(xí)題,使讀者能快速有效地復(fù)習(xí)和掌握章節(jié)知識(shí),提高解決實(shí)際問題的能力。 本書配套有PPT教學(xué)課件、全部示例和實(shí)戰(zhàn)程序的源碼,適合作為大學(xué)計(jì)算機(jī)專業(yè)教材、非計(jì)算機(jī)專業(yè)的公共課教材、全國計(jì)算機(jī)等級考試參考書,以及對程序設(shè)計(jì)感興趣的讀者的自學(xué)用書。
(1)盡量避免枯燥地羅列和介紹知識(shí)點(diǎn),語言嚴(yán)謹(jǐn)中略帶風(fēng)趣,將知識(shí)點(diǎn)與現(xiàn)實(shí)生活中的場景相結(jié)合,更有利于加深讀者對知識(shí)點(diǎn)的理解和掌握。
(2)設(shè)計(jì)和使用問題來了、小技巧、注意和漲知識(shí)等模塊,在讀者閱讀和自學(xué)過程中,適時(shí)地進(jìn)行引導(dǎo),從而達(dá)到啟發(fā)思考、強(qiáng)調(diào)重點(diǎn)和拓展知識(shí)的目的。
(3)為重點(diǎn)知識(shí)設(shè)計(jì)了例題,并對經(jīng)典題目和實(shí)例采用一題多解的方式。同時(shí),針對初學(xué)者容易犯的錯(cuò)誤進(jìn)行用例測試與結(jié)果分析。
(4)每章結(jié)尾都附有大量習(xí)題,使讀者能快速有效地復(fù)習(xí)和掌握章節(jié)知識(shí),提高解決實(shí)際問題的能力。
程序設(shè)計(jì)語言是計(jì)算機(jī)相關(guān)專業(yè)的必修課程,目前大多數(shù)院校選擇C語言作為程序設(shè)計(jì)語言課程的講授內(nèi)容。C語言采用結(jié)構(gòu)化程序設(shè)計(jì),既具備高級語言的特點(diǎn),又能對硬件進(jìn)行操作,因此既可以用于編寫應(yīng)用軟件,也可以編寫系統(tǒng)軟件,是廣受歡迎的程序設(shè)計(jì)語言之一。其實(shí),各種語言間的語法大同小異,都要遵守一些基本規(guī)則,所以當(dāng)掌握了一門程序設(shè)計(jì)語言的語法后再學(xué)習(xí)其他程序設(shè)計(jì)語言的語法,就相對容易。因此,程序設(shè)計(jì)語言課程的目的在于幫助學(xué)生理解計(jì)算機(jī)進(jìn)行工作的基本原理以及進(jìn)行程序設(shè)計(jì)的基本方法,培養(yǎng)學(xué)生的計(jì)算思維,為后續(xù)課程的學(xué)習(xí)奠定基礎(chǔ)。
本書針對計(jì)算機(jī)相關(guān)專業(yè)新生或?qū)Τ绦蛟O(shè)計(jì)感興趣的初學(xué)者的特點(diǎn)進(jìn)行編寫,教學(xué)內(nèi)容與素材均由一線教師積累多年教學(xué)經(jīng)驗(yàn)總結(jié)而成。希望通過本書的學(xué)習(xí),能使讀者了解高級程序設(shè)計(jì)語言的組成與特點(diǎn)、程序的設(shè)計(jì)思路與編寫技巧,學(xué)習(xí)并掌握C程序在數(shù)據(jù)表達(dá)、數(shù)據(jù)結(jié)構(gòu)、模塊處理、流程控制等方面的相關(guān)知識(shí),能夠掌握一些簡單的、典型的算法,具有一定的閱讀程序和設(shè)計(jì)程序的能力,為后續(xù)課程的學(xué)習(xí)打好基礎(chǔ)。
全書分為10章,內(nèi)容包括C語言概述、數(shù)據(jù)類型、運(yùn)算符和表達(dá)式、數(shù)據(jù)的輸入和輸出、選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu)、數(shù)組、函數(shù)、指針、結(jié)構(gòu)體、共用體、枚舉與鏈表,以及文件操作。
本書注重理論與實(shí)踐相結(jié)合,同時(shí)兼顧激發(fā)讀者的學(xué)習(xí)興趣,在教學(xué)內(nèi)容上采用了沉浸閱讀 啟發(fā)思考 知識(shí)點(diǎn)鞏固 一例多解 實(shí)戰(zhàn)體驗(yàn)的設(shè)計(jì)方法,每一個(gè)章節(jié)都有先導(dǎo)或預(yù)備知識(shí),由此引入本章要講解的具體內(nèi)容,同時(shí)在關(guān)鍵節(jié)點(diǎn)提出問題,啟發(fā)讀者思考,并及時(shí)通過重點(diǎn)提示、題目鞏固、實(shí)例分析和知識(shí)擴(kuò)展等加深讀者對知識(shí)點(diǎn)的理解,最后通過大量的實(shí)戰(zhàn)練習(xí)鍛煉和培養(yǎng)讀者的計(jì)算思維。每章結(jié)尾都附有各種類型的習(xí)題,使讀者能快速有效地復(fù)習(xí)和掌握章節(jié)知識(shí),提高解決實(shí)際問題的能力。
基于獨(dú)特的教學(xué)內(nèi)容設(shè)計(jì)方法,本書的主要特色如下。
(1) 盡量避免枯燥地羅列和介紹知識(shí)點(diǎn),語言嚴(yán)謹(jǐn)中略帶風(fēng)趣,將知識(shí)點(diǎn)與現(xiàn)實(shí)生活中的場景相結(jié)合,更有利于加深讀者對知識(shí)點(diǎn)的理解和掌握。例如,在學(xué)習(xí)數(shù)組時(shí),先探討現(xiàn)實(shí)生活中若有團(tuán)隊(duì)入住賓館,應(yīng)以何種方式安排住宿才能更方便也更容易記住每位團(tuán)員的房號(hào),再由此推斷出為什么數(shù)組名可以代表首元素地址,以及為什么數(shù)組下標(biāo)要從0開始進(jìn)行編號(hào)的原因。
(2) 設(shè)計(jì)和使用問題來了小技巧注意和長知識(shí)等模塊,在讀者閱讀和自學(xué)過程中,適時(shí)地進(jìn)行引導(dǎo),從而達(dá)到啟發(fā)思考、強(qiáng)調(diào)重點(diǎn)和拓展知識(shí)的目的。
(3) 為重點(diǎn)知識(shí)設(shè)計(jì)例題,并對經(jīng)典題目和實(shí)例采用一題多解的方式。同時(shí),針對初學(xué)者容易犯的錯(cuò)誤進(jìn)行用例測試與結(jié)果分析,一是避免再犯類似犯錯(cuò),二是如果今后在編程過程中出現(xiàn)類似情況,也能快速找到問題所在。例如,在第4章的分段函數(shù)編程示例中,先借甲、乙、丙3位同學(xué)之手設(shè)計(jì)了3種不同方案,再通過測試用例的運(yùn)行結(jié)果分析出丙方案的錯(cuò)誤原因,最后總結(jié)了編寫多分支題目時(shí)可以采用的方法以及需要避免的問題。
(4) 為每章提供大量實(shí)戰(zhàn)題,部分章節(jié)的理論與實(shí)戰(zhàn)篇幅的占比超過了1∶2。每道實(shí)戰(zhàn)題都包括問題分析、程序設(shè)計(jì)和程序?qū)崿F(xiàn)3部分,并且選題領(lǐng)域覆蓋面較廣,可以讓讀者舉一反三。例如,第7章中,以判斷用戶輸入的數(shù)是否是對稱素?cái)?shù)為例,先分析了用戶既可以采用字符串形式也可以采用整數(shù)形式讀取數(shù)據(jù),再針對不同形式討論如何以模塊化的方式進(jìn)行程序設(shè)計(jì),最后將每個(gè)模塊拆分成不同的實(shí)戰(zhàn)題,并進(jìn)行相應(yīng)擴(kuò)展,例如將整數(shù)的字符串形式與整數(shù)形式的相互轉(zhuǎn)換擴(kuò)展為K進(jìn)制數(shù)的轉(zhuǎn)換等。
為方便讀者學(xué)習(xí),本書附有配套PPT教學(xué)課件、本書全部示例和實(shí)戰(zhàn)程序的源碼,以及課后習(xí)題答案,方便學(xué)校教學(xué)和讀者自學(xué)。
因編者水平有限,不足之處在所難免,懇請讀者批評指正。
編者2023年1月
第1章C語言概述1
1.1計(jì)算機(jī)與程序設(shè)計(jì)語言1
1.1.1馮·諾依曼結(jié)構(gòu)1
1.1.2程序設(shè)計(jì)2
1.1.3程序設(shè)計(jì)語言3
1.2C語言的特點(diǎn)4
1.3IDE的安裝5
1.3.1下載Code::Blocks6
1.3.2安裝Code::Blocks6
1.3.3運(yùn)行軟件7
1.3.4新建和運(yùn)行項(xiàng)目8
1.3.5打開已有項(xiàng)目10
1.4C程序基本框架介紹10
1.5基本的編程原則13
1.6編程實(shí)戰(zhàn)14
習(xí)題17
第2章數(shù)據(jù)類型、運(yùn)算符和表達(dá)式19
2.1預(yù)備知識(shí)19
2.1.1位、字節(jié)、字與字長19
2.1.2C程序與內(nèi)存20
2.2數(shù)據(jù)類型21
2.2.1數(shù)據(jù)類型的劃分21
2.2.2不同數(shù)據(jù)類型的內(nèi)存占用與數(shù)據(jù)編碼22
2.3常量29
2.3.1整型常量29
2.3.2浮點(diǎn)型常量30
2.3.3字符型常量31
2.3.4字符串常量32
2.3.5符號(hào)常量33
2.4變量34
2.5常變量36
2.6關(guān)鍵字與標(biāo)識(shí)符37
2.6.1關(guān)鍵字37
2.6.2標(biāo)識(shí)符38
2.7運(yùn)算符38
2.7.1算術(shù)運(yùn)算符39
2.7.2關(guān)系運(yùn)算符40
2.7.3邏輯運(yùn)算符41
2.7.4位運(yùn)算符42
2.7.5賦值(復(fù)合賦值)運(yùn)算符43
2.7.6其他運(yùn)算符44
2.8表達(dá)式45
2.8.1運(yùn)算符的優(yōu)先級和結(jié)合方向45
2.8.2自動(dòng)類型轉(zhuǎn)換47
2.8.3對數(shù)據(jù)溢出的處理48
2.9數(shù)學(xué)函數(shù)48
2.10C語句49
2.11編程實(shí)戰(zhàn)51
習(xí)題53
新編C語言程序設(shè)計(jì)目錄第3章數(shù)據(jù)的輸入和輸出56
3.1預(yù)備知識(shí)56
3.1.1緩沖區(qū)56
3.1.2緩沖區(qū)的類型56
3.1.3讀取緩沖區(qū)的數(shù)據(jù)57
3.1.4緩沖區(qū)的刷新57
3.2格式化輸入函數(shù)scanf()59
3.2.1scanf()的使用形式59
3.2.2scanf()的格式描述59
3.2.3scanf()的變量地址列表64
3.3格式化輸出函數(shù)printf()65
3.3.1printf()的使用形式65
3.3.2printf()的格式描述65
3.4單字符I/O函數(shù)68
3.4.1單字符輸入函數(shù)getchar()68
3.4.2單字符輸出函數(shù)putchar()68
3.5編程實(shí)戰(zhàn)68
習(xí)題70
第4章選擇結(jié)構(gòu)74
4.1預(yù)備知識(shí)74
4.1.1算法的特點(diǎn)74
4.1.2算法的描述方法75
4.2if選擇結(jié)構(gòu)77
4.2.1if單分支選擇結(jié)構(gòu)77
4.2.2if…else雙分支選擇結(jié)構(gòu)79
4.2.3if語句的嵌套81
4.3switch結(jié)構(gòu)85
4.4編程實(shí)戰(zhàn)87
習(xí)題90
第5章循環(huán)結(jié)構(gòu)94
5.1循環(huán)的相關(guān)概念94
5.1.1循環(huán)結(jié)構(gòu)94
5.1.2循環(huán)條件的設(shè)計(jì)95
5.1.3循環(huán)體的設(shè)計(jì)95
5.1.4循環(huán)效率的分析96
5.2for循環(huán)97
5.3while循環(huán)99
5.4do…while循環(huán)100
5.5循環(huán)的跳轉(zhuǎn)101
5.6循環(huán)的嵌套104
5.7編程實(shí)戰(zhàn)105
5.7.1數(shù)據(jù)統(tǒng)計(jì)類105
5.7.2具有特質(zhì)的數(shù)的判斷114
5.7.3字符類的處理120
5.7.4打印圖形122
5.7.5窮舉問題126
習(xí)題128
第6章數(shù)組133
6.1預(yù)備知識(shí)133
6.1.1順序存儲(chǔ)與下標(biāo)133
6.1.2團(tuán)隊(duì)名的作用134
6.1.3訪問團(tuán)隊(duì)成員134
6.2數(shù)組的定義、存儲(chǔ)與元素的引用135
6.2.1數(shù)組的定義135
6.2.2數(shù)組的存儲(chǔ)與元素的引用136
6.3數(shù)組的初始化140
6.4輸入和輸出數(shù)組元素142
6.5編程實(shí)戰(zhàn)144
6.5.1數(shù)據(jù)統(tǒng)計(jì)類144
6.5.2數(shù)組的排序148
6.5.3有序插入153
6.5.4查找數(shù)據(jù)155
6.5.5刪除數(shù)據(jù)156
6.5.6逆序存儲(chǔ)158
6.5.7字符串處理158
習(xí)題170
第7章函數(shù)176
7.1結(jié)構(gòu)化程序設(shè)計(jì)與函數(shù)176
7.1.1結(jié)構(gòu)化程序設(shè)計(jì)176
7.1.2函數(shù)177
7.2函數(shù)的定義、聲明與調(diào)用179
7.2.1函數(shù)的定義179
7.2.2函數(shù)的聲明與調(diào)用181
7.3參數(shù)傳遞和返回值184
7.3.1參數(shù)傳遞184
7.3.2返回值188
7.4作用域與存儲(chǔ)類別190
7.4.1作用域190
7.4.2存儲(chǔ)類別與生存期192
7.5static與extern關(guān)鍵字195
7.5.1static關(guān)鍵字195
7.5.2extern關(guān)鍵字195
7.6函數(shù)的嵌套調(diào)用與遞歸調(diào)用198
7.6.1函數(shù)的嵌套調(diào)用198
7.6.2函數(shù)的遞歸調(diào)用199
7.7帶參數(shù)的宏定義201
7.8編程實(shí)戰(zhàn)202
7.8.1判斷特質(zhì)數(shù)的函數(shù)202
7.8.2數(shù)據(jù)類型或數(shù)據(jù)進(jìn)制的轉(zhuǎn)換205
7.8.3二維數(shù)組處理函數(shù)210
習(xí)題213
第8章指針219
8.1數(shù)據(jù)與地址219
8.1.1數(shù)據(jù)與地址的關(guān)系219
8.1.2保存地址220
8.1.3地址與指針221
8.1.4將指針變量與數(shù)據(jù)建立聯(lián)系221
8.1.5使用指針變量的意義223
8.1.6定義與使用指針變量的注意事項(xiàng)223
8.2指針變量作為函數(shù)參數(shù)224
8.3通過指針變量引用一維數(shù)組227
8.3.1將指針變量指向一維數(shù)組227
8.3.2指針變量可以在數(shù)組中進(jìn)行的運(yùn)算228
8.3.3通過指針變量引用一維數(shù)組元素的方法229
8.3.4通過指針變量引用字符串231
8.3.5通過指針變量接收一維數(shù)組的傳參232
8.4通過指針變量引用二維數(shù)組233
8.4.1定位二維數(shù)組中的元素233
8.4.2利用不同的指針變量引用二維數(shù)組元素234
8.4.3通過不同的指針變量接收二維數(shù)組的傳參238
8.5指針數(shù)組240
8.6指向指針的指針變量242
8.7指向函數(shù)的指針變量245
8.8函數(shù)返回值是指針變量247
8.9帶參數(shù)的main()函數(shù)248
8.10指針與動(dòng)態(tài)分配內(nèi)存250
8.11指針變量使用方法小結(jié)252
8.12編程實(shí)戰(zhàn)255
習(xí)題259
第9章結(jié)構(gòu)體、共用體、枚舉與鏈表264
9.1結(jié)構(gòu)體類型的聲明264
9.1.1聲明結(jié)構(gòu)體類型264
9.1.2結(jié)構(gòu)體類型占用的存儲(chǔ)空間266
9.1.3用typedef為結(jié)構(gòu)體類型取別名267
9.2結(jié)構(gòu)體變量的定義和初始化268
9.2.1定義結(jié)構(gòu)體變量268
9.2.2結(jié)構(gòu)體變量的初始化和賦值269
9.3引用結(jié)構(gòu)體變量的成員269
9.4結(jié)構(gòu)體數(shù)組和函數(shù)傳參272
9.5鏈表275
9.5.1鏈?zhǔn)酱鎯?chǔ)與結(jié)點(diǎn)275
9.5.2鏈表的定義276
9.5.3結(jié)點(diǎn)的結(jié)構(gòu)體類型設(shè)計(jì)276
9.6鏈表的主要操作277
9.6.1建立鏈表277
9.6.2遍歷鏈表279
9.6.3插入結(jié)點(diǎn)280
9.6.4刪除結(jié)點(diǎn)282
9.7鏈表和數(shù)組的區(qū)別284
9.8共用體類型285
9.9枚舉類型288
9.10編程實(shí)戰(zhàn)289
習(xí)題293
第10章文件298
10.1數(shù)據(jù)文件298
10.1.1文件的分類298
10.1.2設(shè)備文件與磁盤文件299
10.1.3文件指針299
10.2文件操作300
10.2.1文件的打開與關(guān)閉300
10.2.2文本文件的順序讀寫303
10.2.3二進(jìn)制文件的順序讀寫307
10.2.4位置標(biāo)記的定位與隨機(jī)讀寫308
10.3編程實(shí)戰(zhàn)310
習(xí)題312
參考文獻(xiàn)315