關(guān)于我們
書(shū)單推薦
新書(shū)推薦
|
C語(yǔ)言程序設(shè)計(jì)
本教材以程序設(shè)計(jì)為中心來(lái)組織內(nèi)容。全書(shū)以程序設(shè)計(jì)為主線, 從應(yīng)用出發(fā), 通過(guò)案例和問(wèn)題引入內(nèi)容, 重點(diǎn)講解程序設(shè)計(jì)的思想和方法, 并結(jié)合相關(guān)的語(yǔ)言知識(shí)的介紹。全書(shū)共分為12章, 包括概述、分支結(jié)構(gòu)、循環(huán)結(jié)構(gòu)、函數(shù)、數(shù)值、指針、結(jié)構(gòu)等內(nèi)容。
。1)本書(shū)注重知識(shí)內(nèi)容的實(shí)用性和綜合性。
。2)安排了如下幾個(gè)專(zhuān)題:正整數(shù)的拆分、*大公約數(shù)、素?cái)?shù)、進(jìn)制轉(zhuǎn)換。這些專(zhuān)題既總結(jié)了某一類(lèi)問(wèn)題的解決方法,又讓學(xué)生體驗(yàn)到程序設(shè)計(jì)的實(shí)用性,激發(fā)了學(xué)生的學(xué)習(xí)興趣。
。3)圖文并茂,基本上做到絕大難理解部分的講解都有相關(guān)的圖示,有的內(nèi)容通過(guò)多圖逐步分解剖析。
。4)在提供豐富有趣的經(jīng)典實(shí)例時(shí),還精心設(shè)計(jì)了一個(gè)相對(duì)完整的“學(xué)生成績(jī)管理”應(yīng)用實(shí)例貫穿于整本書(shū)。
。5)對(duì)一些重要的知識(shí)點(diǎn)、重要的例子、難懂的例子,都有配套的微課。
程序設(shè)計(jì)是高校理工科重要的計(jì)算機(jī)基礎(chǔ)課程,該課程以培養(yǎng)學(xué)生掌握程序設(shè)計(jì)的思想和方法為目標(biāo),以培養(yǎng)學(xué)生的實(shí)踐能力和創(chuàng)新能力為重點(diǎn)。C語(yǔ)言是得到廣泛使用的程序設(shè)計(jì)語(yǔ)言之一,它既具備高級(jí)語(yǔ)言的特性,又具有直接操縱計(jì)算機(jī)硬件的能力,并以其良好的程序結(jié)構(gòu)和便于移植的特性而擁有大量的使用者。目前,許多高校都把C語(yǔ)言列為首門(mén)要學(xué)習(xí)的程序設(shè)計(jì)語(yǔ)言。
雖然目前有關(guān)C語(yǔ)言的教材很多,但大多都只是注重C語(yǔ)言知識(shí)的學(xué)習(xí),這樣不利于培養(yǎng)學(xué)生的程序設(shè)計(jì)能力和程序設(shè)計(jì)語(yǔ)言應(yīng)用能力。本書(shū)以程序設(shè)計(jì)為主線,從應(yīng)用出發(fā),通過(guò)案例和問(wèn)題引入相關(guān)的語(yǔ)法知識(shí),重點(diǎn)講解程序設(shè)計(jì)的思想和方法,從而避免機(jī)械式地記憶語(yǔ)法知識(shí),實(shí)現(xiàn)通過(guò)寫(xiě)程序掌握C語(yǔ)言知識(shí)的理念。 在教材的結(jié)構(gòu)設(shè)計(jì)上,強(qiáng)調(diào)學(xué)以致用,使學(xué)生從一接觸C語(yǔ)言,就開(kāi)始練習(xí)編程。全書(shū)共12章,主要包括3方面的內(nèi)容: 基本內(nèi)容、常用算法和程序設(shè)計(jì)風(fēng)格。為了提高讀者的學(xué)習(xí)興趣,大多數(shù)內(nèi)容是先導(dǎo)入實(shí)例而后介紹相關(guān)的語(yǔ)言知識(shí)。第1章首先簡(jiǎn)單介紹一些背景知識(shí)和利用計(jì)算機(jī)解決問(wèn)題的步驟,然后從實(shí)例出發(fā),簡(jiǎn)要介紹C語(yǔ)言的核心部分,使學(xué)生對(duì)C語(yǔ)言有一個(gè)總體的了解,并學(xué)習(xí)編寫(xiě)簡(jiǎn)單的程序,培養(yǎng)學(xué)生的學(xué)習(xí)興趣;第2章介紹基本的數(shù)據(jù)類(lèi)型和常用運(yùn)算符;第3章和第4章分別介紹分支結(jié)構(gòu)和循環(huán)結(jié)構(gòu)程序設(shè)計(jì)的思路和方法,并且從第3章開(kāi)始,逐步深入介紹程序設(shè)計(jì)的思想和方法,說(shuō)明如何應(yīng)用程序設(shè)計(jì)語(yǔ)言解決問(wèn)題;第5章介紹基本的輸入輸出處理;第6章介紹函數(shù)的基礎(chǔ)知識(shí)及基本用法;第7章介紹一維數(shù)組、二維數(shù)組和字符數(shù)組的知識(shí)和應(yīng)用;第8章介紹指針的基本概念及應(yīng)用;第9章介紹結(jié)構(gòu)的基礎(chǔ)知識(shí)及應(yīng)用;第10章介紹位運(yùn)算及應(yīng)用;第11章介紹文件的概念、文件的基本操作及應(yīng)用;第12章大串講,幫助讀者對(duì)整本教材知識(shí)點(diǎn)的融會(huì)貫通,并加以運(yùn)用。 本書(shū)有如下特色: 。1) 本書(shū)注重知識(shí)內(nèi)容的實(shí)用性和綜合性。結(jié)合本科學(xué)生的特點(diǎn),注重知識(shí)內(nèi)容的實(shí)用性和綜合性,刪減以往類(lèi)似教材中較刻板的理論知識(shí)點(diǎn),將更多的篇幅放在程序設(shè)計(jì)方法、程序設(shè)計(jì)技能以及程序設(shè)計(jì)過(guò)程的闡述上。 。2) 設(shè)計(jì)了一些專(zhuān)題。本書(shū)安排了如下幾個(gè)專(zhuān)題: 正整數(shù)的拆分、最大公約數(shù)、素?cái)?shù)、進(jìn)制轉(zhuǎn)換。這些專(zhuān)題既總結(jié)了某一類(lèi)問(wèn)題的解決方法,又讓學(xué)生體驗(yàn)到程序設(shè)計(jì)的實(shí)用性,激發(fā)了學(xué)生的學(xué)習(xí)興趣。 。3) 本書(shū)圖文并茂。西方有句諺語(yǔ): “A picture is worth a thousand words.”(一圖值千言)。意思是用上千個(gè)字描述不明白的東西,很可能一張圖就能解釋清楚。本書(shū)絕大多數(shù)難理解部分的講解都有相關(guān)的圖示,有的內(nèi)容通過(guò)多圖逐步分解剖析。 。4) 本書(shū)在提供豐富、有趣的經(jīng)典實(shí)例時(shí),還精心設(shè)計(jì)了一個(gè)相對(duì)完整的“學(xué)生成績(jī)管理”應(yīng)用實(shí)例貫穿于整本書(shū),從最簡(jiǎn)單的單個(gè)學(xué)生成績(jī)分類(lèi)開(kāi)始,到使用循環(huán)語(yǔ)句、數(shù)組處理多個(gè)學(xué)生成績(jī)信息,再到使用更有聚合力的結(jié)構(gòu)來(lái)組織學(xué)生成績(jī)信息,最終將這些處理信息永久性地存儲(chǔ)到文件中,完全貫徹了實(shí)用、實(shí)踐和工程應(yīng)用的理念。通過(guò)這個(gè)實(shí)例的學(xué)習(xí),讓學(xué)生對(duì)C語(yǔ)言程序設(shè)計(jì)有一個(gè)更全面的認(rèn)知,能夠綜合運(yùn)用所學(xué)知識(shí)去解決較為實(shí)際的問(wèn)題。 (5) 為滿足讀者對(duì)在線開(kāi)放學(xué)習(xí)的需求,對(duì)一些重要的知識(shí)點(diǎn)、重要的例子、難懂的例子,提供了配套的微課,這樣讀者不僅能走進(jìn)作者的教學(xué)課堂,而且能重復(fù)學(xué)習(xí),做到攻克重點(diǎn)、難點(diǎn),不留學(xué)習(xí)死角。 因作者水平有限,對(duì)書(shū)中存在的疏漏、謬誤之處,敬請(qǐng)讀者批評(píng)指正。 作者
第1章概述/1
1.1計(jì)算機(jī)程序設(shè)計(jì)語(yǔ)言1
1.1.1機(jī)器語(yǔ)言1
1.1.2匯編語(yǔ)言1
1.1.3高級(jí)語(yǔ)言2
1.2用程序設(shè)計(jì)語(yǔ)言編寫(xiě)程序的步驟2
1.2.1編碼2
1.2.2編譯2
1.2.3調(diào)試3
1.2.4維護(hù)3
1.3結(jié)構(gòu)化程序設(shè)計(jì)方法4
1.4算法4
1.4.1算法的特性5
1.4.2算法的描述5
1.5關(guān)于C程序設(shè)計(jì)語(yǔ)言8
1.5.1C語(yǔ)言出現(xiàn)的歷史背景8
1.5.2C語(yǔ)言的特點(diǎn)9
1.6簡(jiǎn)單的C語(yǔ)言程序10
1.6.1輸出hello, world10
1.6.2計(jì)算a+b11
1.6.3計(jì)算分段函數(shù)的值12
1.6.4按先大后小的順序輸出兩個(gè)整數(shù)13
1.6.5華氏溫度與攝氏溫度的轉(zhuǎn)換14
練習(xí)16
第2章類(lèi)型、運(yùn)算符與表達(dá)式/19
2.1變量19
2.1.1變量的命名規(guī)則19
2.1.2變量的聲明20
2.2數(shù)據(jù)類(lèi)型及長(zhǎng)度21〖1〗C語(yǔ)言程序設(shè)計(jì)(第2版)目錄[3]〖3〗2.2.1short與long限定符21
2.2.2signed與unsigned限定符21
2.2.3每種數(shù)據(jù)類(lèi)型的printf和scanf格式轉(zhuǎn)換符22
2.3常量25
2.3.1整數(shù)常量與浮點(diǎn)數(shù)常量25
2.3.2字符常量25
2.3.3字符串常量26
2.3.4符號(hào)常量27
2.3.5枚舉常量27
2.4常量表達(dá)式28
2.5算術(shù)運(yùn)算符28
2.6關(guān)系運(yùn)算符與邏輯運(yùn)算符28
2.7自增運(yùn)算符與自減運(yùn)算符31
2.8逗號(hào)運(yùn)算符31
2.9賦值運(yùn)算符與賦值表達(dá)式32
2.10條件運(yùn)算符與條件表達(dá)式33
2.11一元運(yùn)算符sizeof34
2.12類(lèi)型轉(zhuǎn)換34
2.13運(yùn)算符的優(yōu)先級(jí)及求值次序36
練習(xí)37
第3章分支結(jié)構(gòu)/44
3.1實(shí)例導(dǎo)入44
3.2語(yǔ)句與程序塊45
3.3ifelse語(yǔ)句45
3.4elseif語(yǔ)句48
3.5switch語(yǔ)句50
3.6應(yīng)用實(shí)例: 學(xué)生成績(jī)管理56
練習(xí)58
第4章循環(huán)結(jié)構(gòu)/62
4.1實(shí)例導(dǎo)入62
4.2while循環(huán)65
4.3for循環(huán)70
4.4dowhile循環(huán)74
4.5三種循環(huán)語(yǔ)句的比較76
4.6循環(huán)結(jié)構(gòu)的嵌套77
4.7break語(yǔ)句與continue語(yǔ)句83
4.8goto語(yǔ)句與標(biāo)號(hào)88
4.9專(zhuān)題1: 正整數(shù)的拆分89
4.10專(zhuān)題2: 迭代法92
4.11應(yīng)用實(shí)例: 學(xué)生成績(jī)管理95
練習(xí)96
第5章輸入與輸出/109
5.1getchar()函數(shù)109
5.2putchar()函數(shù)110
5.3printf()函數(shù)113
5.4scanf()函數(shù)114
5.5應(yīng)用實(shí)例: 求和116
練習(xí)122
第6章函數(shù)/126
6.1實(shí)例導(dǎo)入126
6.2函數(shù)的基本知識(shí)129
6.2.1函數(shù)的定義129
6.2.2函數(shù)的調(diào)用130
6.2.3函數(shù)的聲明135
6.2.4函數(shù)設(shè)計(jì)的基本原則138
6.3函數(shù)的嵌套調(diào)用139
6.4函數(shù)的遞歸調(diào)用139
6.5變量的存儲(chǔ)類(lèi)型145
6.6變量的類(lèi)別145
6.6.1外部變量與內(nèi)部變量145
6.6.2靜態(tài)變量147
6.6.3寄存器變量148
6.7變量的作用域與生存期148
6.7.1變量的作用域148
6.7.2變量的生存期149
6.7.3內(nèi)存空間及分配方式149
6.8程序塊結(jié)構(gòu)156
6.9變量的初始化156
6.10預(yù)處理157
6.10.1文件包含157
6.10.2宏替換157
6.10.3條件編譯159
6.11專(zhuān)題3: 最大公約數(shù)的求解161
6.11.1bruteforce算法161
6.11.2歐幾里德算法162
6.11.3更相減損法164
練習(xí)165
第7章數(shù)組/177
7.1實(shí)例導(dǎo)入177
7.2一維數(shù)組180
7.2.1一維數(shù)組的定義180
7.2.2一維數(shù)組元素的引用181
7.2.3一維數(shù)組的初始化181
7.2.4一維數(shù)組的應(yīng)用舉例182
7.3二維數(shù)組184
7.3.1二維數(shù)組的定義184
7.3.2二維數(shù)組元素的引用184
7.3.3二維數(shù)組的初始化185
7.3.4二維數(shù)組的應(yīng)用舉例186
7.4字符數(shù)組192
7.4.1字符數(shù)組的定義和引用192
7.4.2字符數(shù)組的初始化192
7.4.3字符數(shù)組的輸入/輸出193
7.4.4字符數(shù)組的應(yīng)用舉例195
7.5數(shù)組與函數(shù)參數(shù)197
7.5.1數(shù)組元素作函數(shù)實(shí)參197
7.5.2數(shù)組作函數(shù)實(shí)參198
7.6查找和排序201
7.6.1查找201
7.6.2排序203
7.7專(zhuān)題4: 進(jìn)制轉(zhuǎn)換206
7.7.1十進(jìn)制整數(shù)轉(zhuǎn)換成其他進(jìn)制整數(shù)206
7.7.2其他進(jìn)制整數(shù)轉(zhuǎn)換成十進(jìn)制整數(shù)208
7.8專(zhuān)題5: 素?cái)?shù)209
7.8.1素?cái)?shù)判定的基本方法209
7.8.2一定范圍內(nèi)所有素?cái)?shù)的求解217
7.9應(yīng)用實(shí)例: 學(xué)生成績(jī)管理220
練習(xí)222
第8章指針/240
8.1實(shí)例導(dǎo)入240
8.2指針的基本知識(shí)246
8.2.1指針變量的聲明246
8.2.2指針變量的初始化246
8.2.3指針變量的基本運(yùn)算246
8.3指針與數(shù)組249
8.3.1指針與一維數(shù)組249
8.3.2指針與多維數(shù)組258
8.4指針與函數(shù)259
8.4.1指針作為函數(shù)的參數(shù)259
8.4.2指針作為函數(shù)的返回值263
8.4.3指向函數(shù)的指針266
8.5字符指針與函數(shù)267
8.6指針數(shù)組269
8.6.1指針數(shù)組的聲明269
8.6.2指針數(shù)組的初始化269
8.6.3指針數(shù)組與二維數(shù)組的區(qū)別269
8.7命令行參數(shù)270
8.8指向指針的指針271
8.9動(dòng)態(tài)分配272
8.9.1動(dòng)態(tài)分配內(nèi)存272
8.9.2釋放內(nèi)存272
8.9.3void 類(lèi)型273
8.9.4動(dòng)態(tài)數(shù)組273
8.9.5查找malloc中的錯(cuò)誤275
練習(xí)275
第9章結(jié)構(gòu)/297
9.1實(shí)例導(dǎo)入297
9.2結(jié)構(gòu)的基本知識(shí)302
9.2.1結(jié)構(gòu)類(lèi)型的定義303
9.2.2結(jié)構(gòu)變量的定義303
9.2.3結(jié)構(gòu)成員的訪問(wèn)304
9.2.4對(duì)結(jié)構(gòu)變量的操作304
9.2.5結(jié)構(gòu)變量的初始化306
9.2.6結(jié)構(gòu)的嵌套307
9.3結(jié)構(gòu)數(shù)組308
9.4結(jié)構(gòu)指針311
9.5typedef313
9.6結(jié)構(gòu)與函數(shù)314
9.7單鏈表315
9.7.1單鏈表的創(chuàng)建316
9.7.2單鏈表的輸出316
9.7.3單鏈表的插入316
9.7.4單鏈表的刪除319
9.7.5鏈表的綜合操作319
9.8聯(lián)合321
9.9枚舉324
9.9.1枚舉類(lèi)型的定義324
9.9.2枚舉變量的定義324
9.9.3對(duì)枚舉變量的操作325
9.10應(yīng)用實(shí)例: 學(xué)生成績(jī)管理327
9.10.1用結(jié)構(gòu)數(shù)組實(shí)現(xiàn)328
9.10.2用單鏈表實(shí)現(xiàn)329
練習(xí)332
第10章位運(yùn)算/342
10.1原碼、反碼和補(bǔ)碼342
10.2位運(yùn)算符343
10.2.1與運(yùn)算符343
10.2.2或運(yùn)算符343
10.2.3異或運(yùn)算符343
10.2.4取反運(yùn)算符344
10.2.5左移運(yùn)算符和右移運(yùn)算符344
10.3位賦值運(yùn)算符347
10.4位域348
練習(xí)349
第11章文件/352
11.1實(shí)例導(dǎo)入353
11.2C語(yǔ)言中文件的使用354
11.2.1聲明FILE類(lèi)型的變量355
11.2.2打開(kāi)文件355
11.2.3執(zhí)行I/O操作356
11.2.4關(guān)閉文件356
11.3字符I/O357
11.3.1讀字符函數(shù)fgetc()357
11.3.2寫(xiě)字符函數(shù)fputc()357
11.4行I/O360
11.4.1讀字符串函數(shù)fgets()360
11.4.2寫(xiě)字符串函數(shù)fputs()360
11.5格式化I/O361
11.5.1格式化輸出函數(shù)fprintf()和sprintf()361
11.5.2格式化輸入函數(shù)fscanf()和sscanf()361
11.6數(shù)據(jù)塊讀寫(xiě)363
11.6.1數(shù)據(jù)塊讀函數(shù)fread()363
11.6.2數(shù)據(jù)塊寫(xiě)函數(shù)fwrite()363
11.7文件的定位363
11.7.1fseek()函數(shù)363
11.7.2ftell()函數(shù)365
11.7.3rewind()函數(shù)365
11.8錯(cuò)誤檢測(cè)函數(shù)366
11.8.1clearerr()函數(shù)366
11.8.2feof()函數(shù)366
11.8.3ferror()函數(shù)366
11.9應(yīng)用實(shí)例: 學(xué)生成績(jī)管理366
練習(xí)371
第12章大串講/376
12.1順序輸出整數(shù)的各位數(shù)字376
12.2計(jì)算階乘之和378
12.3Fibonacci數(shù)列380
12.4計(jì)算函數(shù)的值383
12.5在有序數(shù)組中插入一個(gè)元素384
附錄A常用字符與ASCII碼對(duì)照表/388
附錄B常用的C語(yǔ)言庫(kù)函數(shù)/390
B.1數(shù)學(xué)函數(shù)390
B.2字符處理函數(shù)391
B.3字符串處理函數(shù)392
B.4實(shí)用函數(shù)393
附錄C與具體實(shí)現(xiàn)相關(guān)的限制/394
參考文獻(xiàn)/395
第5章輸入與輸出本章要點(diǎn):
常用輸入、輸出函數(shù)的使用; 簡(jiǎn)單的數(shù)據(jù)處理。在程序的運(yùn)行過(guò)程中,往往需要由用戶輸入一些數(shù)據(jù),這些數(shù)據(jù)經(jīng)機(jī)器處理后要輸出反饋給用戶。通過(guò)數(shù)據(jù)的輸入/輸出來(lái)實(shí)現(xiàn)人與計(jì)算機(jī)之間的交互,所以在程序設(shè)計(jì)中,輸入/輸出語(yǔ)句是一類(lèi)必不可少的重要語(yǔ)句。 在C語(yǔ)言中,沒(méi)有專(zhuān)門(mén)的輸入/輸出語(yǔ)句,所有的輸入/輸出操作都是通過(guò)對(duì)標(biāo)準(zhǔn)I/O庫(kù)函數(shù)的調(diào)用來(lái)實(shí)現(xiàn)的。 最常用的輸入/輸出函數(shù)有g(shù)etchar()、putchar()、scanf()、printf()。ANSI標(biāo)準(zhǔn)精確地定義了這些庫(kù)函數(shù),所以,在任何可以使用C語(yǔ)言的系統(tǒng)中都有這些函數(shù)的兼容形式。如果程序的系統(tǒng)交互部分僅僅使用了標(biāo)準(zhǔn)庫(kù)提供的功能,則可以不加修改地從一個(gè)系統(tǒng)移植到另一個(gè)系統(tǒng)中。 5.1getchar()函數(shù) getchar()函數(shù)的原型如下: int getchar(void);此函數(shù)的功能是從stdio流中讀字符。C語(yǔ)言中,在沒(méi)有輸入時(shí),getchar()函數(shù)將返回一個(gè)特殊值,這個(gè)特殊值與任何實(shí)際字符都不同,這個(gè)值稱(chēng)為EOF(End Of File,文件結(jié)束),它的值通常是-1。 getchar()函數(shù)只能接受單個(gè)字符,如果輸入的是數(shù)字也按字符處理。輸入多于一個(gè)字符時(shí),只接收第一個(gè)字符。使用本函數(shù)前必須包含文件“stdio.h”。 例5.1輸入一行字符,分別統(tǒng)計(jì)出其中空格或回車(chē)、數(shù)字和其他字符的個(gè)數(shù)。 輸入樣例: beautiful 2010 heihei輸出樣例: sumWhite=3 sumNumber=4〖1〗C語(yǔ)言程序設(shè)計(jì)(第2版)第5章輸入與輸出〖3〗〖3〗sumOther=15實(shí)現(xiàn)代碼如下。1#include 2int main() 3{ 4int c; 5int sumWhite=0;/空格或回車(chē)的個(gè)數(shù)/ 6int sumNumber=0;/數(shù)字的個(gè)數(shù)/ 7int sumOther=0;/其他字符的個(gè)數(shù)/ 8while((c=getchar())!=EOF){ 9if(c=='\\n' || c==' '){ 10sumWhite++; 11} 12else if(c>='0' && c<='9'){ 13sumNumber++; 14} 15else{ 16sumOther++; 17} 18} 19printf("sumWhite=%d\\n", sumWhite); 20printf("sumNumber=%d\\n", sumNumber); 21printf("sumOther=%d\\n", sumOther); ……
你還可能感興趣
我要評(píng)論
|