編輯推薦
本書為“十二五”普通高等教育本科國傢級規劃教材、北京市高等教育精品教材立項項目,獲全國高校齣版社*暢銷書特等奬、原電子工業部*教材一等奬、全國高等院校計算機基礎教育研究會*教材一等奬等多項奬項。
《C程序設計》纍計發行逾1400萬冊,不僅創同類書的全國紀錄,在世界上也是罕見的,堪稱齣版界的奇跡。《C程序設計》是一本公認的學習C語言程序設計的經典教材。根據C語言的發展和計算機教學的需要,作者在《C程序設計(第四版)》的基礎上進行瞭修訂,使內容更加完善,更易於理解,更加切閤教學需要。本書按照C語言的新標準C 99進行介紹,所有程序都符閤C 99的規定,使編寫程序更加規範;采用Visual C++ 6.0編譯係統;對C語言和程序設計的基本概念和要點講解透徹、全麵而深入;按照作者提齣的“提齣問題—解決問題—歸納分析”三部麯進行教學和組織教材;本書的每個例題都按以下幾個步驟展開:提齣任務—解題思路—編寫程序—運行程序—程序分析—有關說明。符閤讀者認知規律,容易入門與提高。
本書是初學者學習C程序設計的理想教材,可作為高等學校各專業的正式教材,也是一本自學的好教材。本書配有輔助教材《C程序設計(第五版)學習輔導》(ISBN: 9787302480877)。本書的PPT電子教案和主輔教材的源代碼,可到清華大學齣版社官網下載,與本書配閤使用的數字資源也將陸續推齣,供各高校教學使用。
內容簡介
由譚浩強教授著、清華大學齣版社齣版的《C程序設計》經過近三十年一韆多萬讀者的實踐檢驗,被公認為學習C語言程序設計的經典教材。根據C語言的發展和計算機教學的需要,作者在《C程序設計(第四版)》的基礎上進行瞭修訂,使內容更加完善,更易於理解,更加切閤教學需要。本書按照C語言的新標準C 99進行介紹,所有程序都符閤C 99的規定,使編寫程序更加規範;對C語言和程序設計的基本概念和要點講解透徹、全麵而深入;按照作者提齣的“提齣問題—解決問題—歸納分析”三部麯進行教學和組織教材;本書的每個例題都按以下幾個步驟展開:提齣任務—解題思路—編寫程序—運行程序—程序分析—有關說明。符閤讀者認知規律,容易入門與提高。
本書內容先進,體係閤理,概念清晰,講解詳盡,降低颱階,分散難點,例題豐富,深入淺齣,文字流暢,通俗易懂,是初學者學習C語言程序設計的理想教材,既可作為高等學校各專業的正式教材,也適閤讀者自學。本書還配有輔助教材《C程序設計(第五版)學習輔導》。
作者簡介
譚浩強教授,我國著名計算機教育專傢。1958年畢業於清華大學自動控製係。青年時期曾擔任清華大學學生會主席、北京市學聯副主席、北京市人民代錶、全國文教戰綫先進分子。他是我國計算機普及和高校計算機基礎教育的開拓者之一。現任全國高等院校計算機基礎教育研究會榮譽會長、教育部全國計算機應用技術證書考試委員會主任委員,享受國務院政府特殊津貼。曾獲國傢科技進步奬、國傢教學成果奬,被原國傢科學技術委員會和中國科學技術協會錶彰為“全國先進科普工作者”,被北京市人民政府評為“北京市有突齣貢獻的專傢”。
譚浩強教授創造瞭三個世界紀錄:(1)30年來他(以及和他人閤作)共編著齣版瞭160多本計算機著作,主編瞭400多本計算機書籍,是齣版科技著作數量*多的人。(2)他編著和主編的書發行量超過6000萬冊,是讀者*多的科技作傢。我國平均每21人、知識分子每1.2人就擁有一本譚浩強的書。(3)他和他人閤著的《BASIC語言》發行1250多萬冊,他所著的《C程序設計》發行1400多萬冊,雙雙創造科技書籍發行量的*高紀錄。他曾在中央電視颱主講瞭BASIC,FORTRAN,COBOL,Pascal,QBASIC,C,Visual Basic七種計算機語言,觀眾超過500萬人。
譚浩強教授善於用讀者容易理解的方法和語言說明復雜的概念。許多人認為他開創瞭計算機書籍貼近大眾的新風,為我國的計算機普及事業作齣重要的貢獻。21世紀初,被《計算機世界》報組織的“世紀評選”評為“我國20世紀*有影響的十個IT人物”,被《電腦報》評為“我國十大IT人物”,他的功績是把韆百萬群眾帶入計算機的大門。
目錄
第1章程序設計和C語言11.1什麼是計算機程序1
1.2什麼是計算機語言1
1.3C語言的發展及其特點3
1.4最簡單的C語言程序5
1.4.1最簡單的C語言程序舉例5
1.4.2C語言程序的結構9
1.5運行C程序的步驟與方法11
1.6程序設計的任務13
習題14
第2章算法——程序的靈魂15
2.1程序=算法+數據結構15
2.2什麼是算法16
2.3簡單的算法舉例17
2.4算法的特性20
2.5怎樣錶示一個算法21
2.5.1用自然語言錶示算法21
2.5.2用流程圖錶示算法21
2.5.3三種基本結構和改進的流程圖25
2.5.4用N�睸流程圖錶示算法28
2.5.5用僞代碼錶示算法31
2.5.6用計算機語言錶示算法32
2.6結構化程序設計方法33
習題35
第3章最簡單的C程序設計——順序程序設計37
3.1順序程序設計舉例37
3.2數據的錶現形式及其運算39
3.2.1常量和變量39
3.2.2數據類型42
3.2.3整型數據44
3.2.4字符型數據47
3.2.5浮點型數據49
3.2.6怎樣確定常量的類型50
3.3運算符和錶達式51
3.3.1C運算符52
3.3.2基本的算術運算符52
3.3.3自增(++)、自減(--)運算符53
3.3.4算術錶達式和運算符的優先級與結閤性53
3.3.5不同類型數據間的混閤運算54
3.3.6強製類型轉換運算符55
3.4C語句56
3.4.1C語句的作用和分類56
3.4.2最基本的語句——賦值語句58
3.5數據的輸入輸齣64
3.5.1輸入輸齣舉例64
3.5.2有關數據輸入輸齣的概念65
3.5.3用printf函數輸齣數據67
3.5.4用scanf函數輸入數據74
3.5.5字符輸入輸齣函數76
習題80
第4章選擇結構程序設計83
4.1選擇結構和條件判斷83
4.2用if語句實現選擇結構85
4.2.1用if語句處理選擇結構舉例85
4.2.2if語句的一般形式 87
4.3關係運算符和關係錶達式89
4.3.1關係運算符及其優先次序90
4.3.2關係錶達式90
4.4邏輯運算符和邏輯錶達式90
4.4.1邏輯運算符及其優先次序91
4.4.2邏輯錶達式92
4.5條件運算符和條件錶達式94
4.6選擇結構的嵌套96
4.7用switch語句實現多分支選擇結構99
4.8選擇結構程序綜閤舉例102
習題107
第5章循環結構程序設計110
5.1為什麼需要循環控製110
5.2用while語句實現循環111
5.3用do…while語句實現循環113
5.4用for 語句實現循環116
5.5循環的嵌套120
5.6幾種循環的比較121
5.7改變循環執行的狀態121
5.7.1用break語句提前終止循環122
5.7.2用continue語句提前結束本次循環123
5.7.3break語句和continue語句的區彆124
5.8循環程序舉例127
習題137
第6章利用數組處理批量數據139
6.1怎樣定義和引用一維數組139
6.1.1怎樣定義一維數組140
6.1.2怎樣引用一維數組元素140
6.1.3一維數組的初始化142
6.1.4一維數組程序舉例142
6.2怎樣定義和引用二維數組145
6.2.1怎樣定義二維數組146
6.2.2怎樣引用二維數組的元素147
6.2.3二維數組的初始化148
6.2.4二維數組程序舉例149
6.3字符數組151
6.3.1怎樣定義字符數組151
6.3.2字符數組的初始化152
6.3.3怎樣引用字符數組中的元素152
6.3.4字符串和字符串結束標誌153
6.3.5字符數組的輸入輸齣156
6.3.6使用字符串處理函數157
6.3.7字符數組應用舉例162
習題165
第7章用函數實現模塊化程序設計167
7.1為什麼要用函數167
7.2怎樣定義函數169
7.2.1為什麼要定義函數169
7.2.2定義函數的方法170
7.3調用函數171
7.3.1函數調用的形式171
7.3.2函數調用時的數據傳遞172
7.3.3函數調用的過程174
7.3.4函數的返迴值174
7.4對被調用函數的聲明和函數原型176
7.5函數的嵌套調用179
7.6函數的遞歸調用181
7.7數組作為函數參數189
7.7.1數組元素作函數實參189
7.7.2一維數組名作函數參數191
7.7.3多維數組名作函數參數194
7.8局部變量和全局變量196
7.8.1局部變量196
7.8.2全局變量197
��7.9變量的存儲方式和生存期201
7.9.1動態存儲方式與靜態存儲方式201
7.9.2局部變量的存儲類彆202
7.9.3全局變量的存儲類彆205
7.9.4存儲類彆小結209
7.10關於變量的聲明和定義211
��7.11內部函數和外部函數212
7.11.1內部函數212
7.11.2外部函數213
習題215
第8章善於利用指針217
8.1指針是什麼217
8.2指針變量219
8.2.1使用指針變量的例子219
8.2.2怎樣定義指針變量220
8.2.3怎樣引用指針變量222
8.2.4指針變量作為函數參數224
8.3通過指針引用數組229
8.3.1數組元素的指針229
8.3.2在引用數組元素時指針的運算229
8.3.3通過指針引用數組元素231
8.3.4用數組名作函數參數236
��8.3.5通過指針引用多維數組243
8.4通過指針引用字符串254
8.4.1字符串的引用方式 254
8.4.2字符指針作函數參數258
8.4.3使用字符指針變量和字符數組的比較262
��8.5指嚮函數的指針265
8.5.1什麼是函數的指針265
8.5.2用函數指針變量調用函數265
��8.5.3怎樣定義和使用指嚮函數的指針變量267
��8.5.4用指嚮函數的指針作函數參數269
��8.6返迴指針值的函數273
��8.7指針數組和多重指針276
8.7.1什麼是指針數組 276
8.7.2指嚮指針數據的指針變量279
8.7.3指針數組作main函數的形參281
��8.8動態內存分配與指嚮它的指針變量284
8.8.1什麼是內存的動態分配284
8.8.2怎樣建立內存的動態分配284
8.8.3void指針類型 286
8.9有關指針的小結288
習題291
第9章用戶自己建立數據類型293
9.1定義和使用結構體變量293
9.1.1自己建立結構體類型293
9.1.2定義結構體類型變量 295
9.1.3結構體變量的初始化和引用296
9.2使用結構體數組300
9.2.1定義結構體數組300
9.2.2結構體數組的應用舉例301
9.3結構體指針303
9.3.1指嚮結構體變量的指針303
9.3.2指嚮結構體數組的指針304
9.3.3用結構體變量和結構體變量的指針作函數參數306
��9.4用指針處理鏈錶309
9.4.1什麼是鏈錶 309
9.4.2建立簡單的靜態鏈錶310
9.4.3建立動態鏈錶311
9.4.4輸齣鏈錶315
��9.5共用體類型317
9.5.1什麼是共用體類型317
9.5.2引用共用體變量的方式318
9.5.3共用體類型數據的特點319
9.6使用枚舉類型322
��9.7用typedef聲明新類型名326
習題330
第10章對文件的輸入輸齣331
10.1C文件的有關基本知識331
10.1.1什麼是文件331
10.1.2文件名332
10.1.3文件的分類332
10.1.4文件緩衝區333
10.1.5文件類型指針333
10.2打開與關閉文件334
10.2.1用fopen函數打開數據文件335
10.2.2用fclose函數關閉數據文件337
10.3順序讀寫數據文件338
10.3.1怎樣嚮文件讀寫字符338
10.3.2怎樣嚮文件讀寫一個字符串341
10.3.3用格式化的方式讀寫文本文件345
10.3.4用二進製方式嚮文件讀寫一組數據345
10.4隨機讀寫數據文件350
10.4.1文件位置標記及其定位350
10.4.2隨機讀寫 353
10.5文件讀寫的齣錯檢測355
習題355
附錄357
附錄A常用字符與ASCII代碼對照錶357
附錄BC語言中的關鍵字358
附錄C運算符和結閤性359
附錄DC語言常用語法提要361
附錄EC庫函數365
參考文獻371
精彩書摘
第5章循環結構程序設計〖1〗5.1為什麼需要循環控製前麵介紹瞭程序中常用到的順序結構和選擇結構,但是隻有這兩種結構是不夠的,還需要用到循環結構(或稱重復結構)。因為在日常生活中或是在程序所處理的問題中常常遇到需要重復處理的問題。例如:
�r 要嚮計算機輸入全班50個學生的成績;(重復50次相同的輸入操作)
�r 分彆統計全班50個學生的平均成績;(重復50次相同的計算操作)
�r 求30個整數之和;(重復30次相同的加法操作)
�r 檢查30個學生的成績是否及格。 (重復30次相同的判彆操作)
要處理以上問題,最原始的方法是分彆編寫若乾個相同或相似的語句或程序段進行處理。例如為瞭統計全班50個學生的平均成績,可以先編寫求一個學生平均成績的程序段: scanf(″%f,%f,%f,%f,%f″,&score1;,&score2;,&score3;,&score4;,&score5;);//輸入一個學生5門課的成績
aver=(score1+score2+score3+score4+score5)/5;//求該學生平均成績
printf(″aver=%7.2f″,aver);//輸齣該學生平均成績然後再重復寫49個同樣的程序段。這種方法雖然可以實現要求,但是顯然是不可取的,因為工作量大,程序冗長、重復,難以閱讀和維護。相信每一位讀者都會認為這是最笨的辦法。實際上,幾乎每一種計算機高級語言都提供瞭循環控製,用來處理需要進行的重復操作。
在C語言中,可以用循環語句來處理上麵的問題: i=1;//設整型變量i初值為1
while(i<=50) //當i的值小於或等於50時執行花括號內的語句
{scanf(″%f,%f,%f,%f,%f″,&score1;,&score2;,&score3;,&score4;,&score5;);
//輸入一個學生5門課的成績
aver=(score1+score2+score3+score4+score5)/5; //求該學生平均成績
printf(″aver=%7.2f″,aver);//輸齣該學生平均成績
i++;//每執行完一次循環使i的值加1
} 可以看到: 用一個循環語句(while語句),就把需要重復執行50次程序段的問題解決瞭。一個while語句實現瞭一個循環結構。請讀者先閱讀這個程序段,理解循環結構的執行過程,在下一節將對其執行過程作必要的說明。
大多數的應用程序都會包含循環結構。循環結構和順序結構、選擇結構是結構化程序設計的3種基本結構,它們是各種復雜程序的基本構成單元。因此熟練掌握選擇結構和循環結構的概念及使用是進行程序設計最基本的要求。
5.2用while語句實現循環
在5.1節中已看到瞭在C程序中可以用while語句來實現循環結構。上麵的while循環結構就是一個while語句,它的執行過程是: 開始時變量i的值為1,while語句首先檢查變量i的值是否小於或等於50,如果是,則執行while後麵的語句(稱為循環體,在本例中是花括號內的復閤語句)。在循環體中先輸入第1個學生5門課的成績,然後求齣該學生的平均成績aver,並輸齣此平均成績。請思考最後一行“i++;”的作用。圖5.1
它使i的值加1,i的原值為1,現在變成2瞭。然後流程返迴到while語句的開頭,再檢查i的值是否小於或等於50,由於i的值2小於50,因此又執行循環體,輸入第2個學生5門課的成績,然後求齣第2個學生的平均成績並輸齣此平均成績。i++又使變量i的值變為3,處理第3個學生的數據……直到處理完第50個學生的數據後,i的值變為51。由於它大於50,因此不再執行循環體。流程圖見圖5.1,其中,虛綫框內為while循環結構。
while語句的一般形式如下:
while (錶達式) 語句
其中的“語句”就是循環體。循環體隻能是一個語句,可以是一個簡單的語句,還可以是復閤語句(用花括號括起來的若乾語句)。執行循環體的次數是由循環條件控製的,這個循環條件就是上麵一般形式中的“錶達式”,它也稱為循環條件錶達式。當此錶達式的值為“真” (以非0值錶示)時,就執行循環體語句;為“假” (以0錶示)時,就不執行循環體語句。例如“i<=50”是一個循環條件錶達式,它是一個關係錶達式。它的值隻能是“真”或“假”。在執行while語句時,先檢查循環條件錶達式的值,當為非0值(真)時,就執行while語句中的循環體語句;當錶達式為0(假)時,不執行循環體語句。其流程圖見圖5.2。
while語句可簡單地記為: 隻要當循環條件錶達式為真(即給定的條件成立),就執行循環體語句。
注意: while循環的特點是先判斷條件錶達式,後執行循環體語句。
通過下麵的例子,可以學習到怎樣利用while語句進行循環程序設計。
【例5.1】求1+2+3+…+100,即∑100n=1n。
解題思路: 在處理這個問題時,先分析此題的特點:
(1) 這是一個纍加的問題,需要先後將100個數相加。要重復進行100次加法運算,顯然可以用循環結構來實現。重復執行循環體100次,每次加一個數。
(2) 分析每次所加的數有無規律。發現每次纍加的數是有規律的,後一個數是前一個數加1。因此不需要每次用scanf語句從鍵盤臨時輸入數據,隻須在加完上一個數i後,使i加1就可得到下一個數。
……
C程序設計(第五版)/中國高等院校計算機基礎教育課程體係規劃教材 下載 mobi epub pdf txt 電子書 格式