程序設計導引及在線實踐(第2版)

程序設計導引及在線實踐(第2版)
定價:210
NT $ 183
 

內容簡介

本書是北京大學「程序設計實習」課程的內容和「北京大學程序在線評測系統」(POJ)的緊密結合,具有極強的實踐性。本書的例題和習題精選自POJ題庫,並且在敘述中穿插了許多精心編寫的思考題,總結了學生在程序設計中易犯的錯誤。本書的作者均有豐富的工程軟件開發經驗和教學經驗,因此本書中的程序代碼均保持良好的風格。

李文新,女,北京大學博士,香港理工大學博士,現任北京大學信息科學技術學院教授、基礎教育部副主任,北京大學計算機實驗教學中心主任。主要研究領域為人工智能、生物特征識別技術,是國際上最早從事自動化掌紋識別的研究者之一。她目前也是中國計算機學會人工智能與模式識別專委會委員、信息學奧賽科學委員會委員,北京市科協青少年科技教育協會副理事長。她擔任ACM/ICPC國際大學生程序設計競賽亞洲區教練及競賽指導委員會委員、北京大學ACM競賽代表隊領隊,為推動ACM競賽在北京大學、中國乃至亞洲的普及做了大量工作,2006年獲ACM/ICPC組織頒發的「區域發展傑出貢獻獎」。由她組織、為訓練ACM隊員而開發的北京大學在線程序評測系統目前已成為國際同類網站中最有影響的幾個網站之一(http://acm.pku.edu.cn/JudgeOnline)。

郭煒,北京大學信息科學技術學院教師,北京大學ACM國際大學生程序設計競賽隊教練。精研算法,曾11次負責為ACM國際大學生程序設計競賽亞洲區預選賽命題,是國內為此項賽事主持命題次數最多的人。他具有十余年的C++教學經驗,曾獨立開發多種流行的商業軟件(如《我愛背單詞》、《我愛學語法》、《我愛學音標》),2012年獨立編寫出版《新標准C++程序設計教程》(978—7—302—28380一5)。余華山,北京大學博士,北京大學信息科學技術學院副教授,研究方向為並行處理、網格分布式計算。近年來發表學術論文28篇(包括合作論文),其中EI收錄7篇、SCI收錄6篇。目前承擔本科課程「程序設計實習」和研究生課程「並行程序設計」的教學任務。
 

目錄

第1章 C/C++ 語言概述1
1.1程序的基本框架1
1.2變量2
1.2.1變量的定義2
1.2.2變量的賦值3
1.2.3變量的引用3
1.3C/C++ 語言的數據類型3
1.4常量5
1.5運算符和表達式6
1.5.1算術運算符6
1.5.2賦值運算符8
1.5.3關系運算符8
1.5.4邏輯運算符9
1.5.5位運算符9
1.5.6sizeof運算符12
1.5.7類型強制轉換運算符13
1.5.8運算符的優先級13
1.6注釋14
1.7分支語句15
1.7.1if語句15
1.7.2switch語句17
1.8循環語句19
1.8.1for語句19
1.8.2while語句20
1.8.3do—while語句20
1.8.4break語句21
1.8.5continue語句21
1.9函數22
1.9.1函數的定義22
1.9.2函數的調用23
1.9.3參數傳遞和返回值24
1.9.4庫函數和頭文件25
1.10標准輸入輸出25
1.10.1printf函數(標准輸出函數)25
1.10.2scanf函數(標准輸入函數)26
1.11全局變量和局部變量27
1.12數組28
1.12.1一維數組28
1.12.2二維數組30
1.12.3數組的初始化31
1.12.4數組越界32
1.13字符串33
1.13.1字符串常量33
1.13.2用字符數組存放的字符串34
1.14指針36
1.14.1指針的基本概念36
1.14.2指針運算39
1.14.3空指針40
1.14.4指向指針的指針41
1.14.5指針和數組41
1.14.6字符串和指針43
1.14.7void指針44
1.14.8函數指針45
1.14.9指針和動態內存分配47
1.14.10誤用無效指針50
1.15結構50
1.15.1「結構」的概念50
1.15.2結構變量的定義51
1.15.3訪問結構變量的成員變量52
1.15.4結構變量的初始化52
1.15.5結構數組52
1.15.6指向結構變量的指針53
1.15.7動態分配結構變量和結構數組55
1.16文件讀寫55
1.16.1用fopen打開文件56
1.16.2用fclose關閉文件56
1.16.3用fscanf讀文件,用fprintf寫文件57
1.16.4用fgetc讀文件,用fputc寫文件58
1.16.5用fgets函數讀文件,fputs函數寫文件59
1.16.6用fread讀文件,用fwrite寫文件60
1.16.7用fseek改變文件讀寫的當前位置63
1.17C語言標准庫函數64
1.17.1數學函數64
1.17.2字符處理函數65
1.17.3字符串處理和內存操作函數65
1.17.4字符串轉換函數66
1.18命令行參數66
1.19C/C 編碼規范67
1.19.1標識符命名注意事項68
1.19.2程序的書寫格式68
1.19.3注釋的寫法70
1.19.4一些好的編程習慣71

第2章 簡單計算題73
2.1例題: 雞兔同籠73
2.2例題: 棋盤上的距離74
2.3例題: 校門外的樹77
2.4例題: 填詞78
2.5例題: 裝箱問題80
練習題82

第3章 數制轉換問題85
3.1相鄰數字的基數等比: 確定進制85
3.2相鄰數字的基數不等比: skew數87
練習題89

第4章 字符串處理90
4.1簡單的字符串操作示例90
4.2例題: 統計字符數91
4.3例題: 487?327993
4.4例題: 子串96
4.5例題: Caesar密碼99
練習題101

第5章 日期和時間處理104
5.1例題: 判斷閏年104
5.2例題: 細菌繁殖107
5.3例題: 日歷問題112
5.4例題: 瑪雅歷113
5.5例題: 時區間時間的轉換116
練習題120

第6章 模擬121
6.1例題: 約瑟夫問題121
6.2例題: 花生問題123
6.3例題: 顯示器126
6.4例題: 排列130
練習題133

第7章 高精度計算136
7.1例題: 大整數加法136
7.2例題: 大整數乘法138
7.3例題: 大整數除法141
7.4例題: 麥森數145
練習題148

第8章 枚舉149
8.1枚舉的基本思想149
8.2簡單枚舉的例子: 生理周期150
8.3數學模型中包括多個變量的例子: 稱硬幣151
8.4搜索空間中解不的例子: 完美立方154
8.5遍歷搜索空間的例子: 熄燈問題156
8.6優化判斷條件的例子: 討厭的青蛙160
練習題165

第9章 遞歸167
9.1遞歸的基本思想167
9.2例題: 全排列168
9.3例題: 八皇后問題170
9.4例題: 逆波蘭表達式174
9.5例題: 四則運算表達式求值175
9.6例題: 放蘋果179
9.7例題: 簡單的整數划分問題180
9.8例題: 算24181
9.9例題: 紅與黑184
9.10例題: 二叉樹186
9.11例題: 拯救少林神棍187
練習題193

第10章 動態規划196
10.1什麼是動態規划196
10.2動態規划解題的一般思路199
10.3例題: 長上升子序列200
10.4例題: 幫助Jimmy202
10.5例題: 長公共子序列206
10.6例題: 神奇口袋208
10.7例題: 灌溉草場210
10.8例題: 方盒游戲215
10.9例題: 美妙柵欄221
練習題225

第11章 鏈表228
11.1單向鏈表、鏈表結點的插入228
11.2帶表頭的單向鏈表、鏈表的搜索232
11.3雙向鏈表、鏈表結點的排序235
11.4循環鏈表、鏈表結點的刪除238
11.5鏈表的應用: 計算每個作業的運行時間241
練習題247

第12章 二叉樹249
12.1二叉樹的建立250
12.2基於遞歸的二叉樹遍歷254
12.3平衡二叉樹257
練習題263

附錄A 北京大學程序在線評測系統介紹264
A.1POJ的使用情況264
A.2POJ的主要功能265
A.3使用本書結合POJ進行教學時的用法266

附錄B 本書題目在POJ上的編號267
致謝271
網路書店 類別 折扣 價格
  1. 新書
    87
    $183