內容簡介
本書分3部分。第一部分是快速入門:通過設計一批淺顯易懂、有趣新穎的例子,將計算機編程需要的概念與知識點串起來,讓大家明白編程是什麼,編程需要用到哪些概念;第二部分是知識進階:在第一部分的基礎上,對知識進行深入講解與總結,讓讀者徹底明白編程中出現各種問題的原因;第三部分是項目進階:通過前兩部分的學習,進一步引入新的更難的項目,讓讀者進一步領會、套用編程知識。
目錄
第一部分 輕 松 入 門
第1章 C語言編程環境搭建
1.1 編程工具選擇
1.2 Dev-C++工具的下載與安裝
1.3 創建一個C檔案
1.4 編譯一個C檔案
1.5 改變字型大小的設定
第2章 初識C語言
2.1 掀起C語言的蓋頭來
2.2 寫給女朋友的一封情詩
2.3 送你一束玫瑰花
2.4 絢麗的動畫——女朋友數玫瑰
2.5 小結
2.6 練習
第3章 減少重複操作——循環語句
3.1 循環的描述——循環三要素
3.2 幫你計數的人——循環變數
3.2.1 變數的定義
3.2.2變數的輸出
3.3循環是否達到終值
3.3.1比較運算符
3.3.2邏輯運算符
3.4時刻變化著的循環——循環增量
3.5三種循環語句
3.5.1for循環語句
3.5.2while循環語句
3.5.3do-while循環語句
3.6女朋友數玫瑰——循環版
3.7幾何圖形有學問
3.7.1實心長方形
3.7.2空心長方形
3.7.3直角三角形
3.7.4菱形
3.8數列求和也容易
3.9送你999朵玫瑰花
3.10三種循環語句的區別
3.11死循環的各種寫法
3.12循環中的特殊情況——continue、break與goto
3.13小結
3.14練習
第4章分情況處理——分支語句
4.1愛情心理測試介紹
4.2輸入函式
4.3分支語句
4.4愛情心理測試
4.4.1單次測試版
4.4.2循環測試版
4.4.3循環版本的問題
4.5測測女朋友值多少錢
4.6猜數遊戲
4.7猜數遊戲的問題——隨機數種子
4.8石頭剪刀布——猜拳遊戲
4.8.1單局猜拳遊戲
4.8.2多局猜拳遊戲
4.9多路開關好處多——switch語句
4.10switch語句的運行過程
4.11if-else語句的運行過程
4.12年齡的秘密
4.13小結
4.14練習
第5章製造自己的工具——函式
5.1內容變化的重複
5.2工欲善其事,必先利其器——函式的概念
5.3造一把利器——函式的定義
5.4女朋友數玫瑰——函式版
5.5取回新產品——函式的返回值
5.6函式注意事項
5.7有用的定位函式
5.8小球橫向滾動
5.9小球彈跳遊戲
5.9.1遊戲界面繪製
5.9.2小球移動反向邏輯
5.10全局變數與局部變數
5.11修改小球彈跳的速度
5.12兩個小球彈跳遊戲
5.12.1重複代碼實現方式
5.12.2函式版本實現方式
5.13函式參數的傳遞機制
5.13.1函式參數的值傳遞機制
5.13.2程式調試(debug)
5.13.3指針的概念
5.13.4指針做函式參數
5.13.5指針總結
5.14小結
5.15練習
第6章封裝相關數據——結構體
6.1結構體的概念
6.2小球彈跳的結構體版本
6.3擲骰子遊戲
6.3.1遊戲介紹與分析
6.3.2畫骰子框線
6.3.3畫骰子點數
6.3.4畫出骰子並提示玩家輸入選擇
6.3.5骰子跳動與輸贏判斷
6.4100個小球彈跳
6.4.1數組的概念
6.4.2100個小球彈跳
6.5小結
6.6練習
第7章組合類型比較——數組與結構體
7.1數組與結構體的區別
7.2數組的常用操作
7.2.1遍歷數組
7.2.2數組元素累加
7.2.3數組添加元素
7.2.4數組刪除元素
7.2.5尋找數組的值
7.2.6冒泡排序
7.2.7冒泡排序改進
7.2.8選擇排序
7.3猴子選大王
7.4全民打飛機
7.4.1遊戲界面開發
7.4.2畫飛機
7.4.3飛機移動
7.4.4鍵盤操控飛機
7.4.5設計子彈
7.4.6子彈產生與消失
7.4.7怪物的產生與消失
7.4.8碰撞檢測
7.5小結
7.6練習
第8章數組的數組——二維數組
8.1二維數組的概念
8.2二維數組的初始化
8.3一份成績單
8.4螺旋矩陣
8.5練眼力
8.6井字棋
8.6.1遊戲介紹與界面搭建
8.6.2棋子信息存儲
8.6.3下棋邏輯設計
8.6.4判斷遊戲結束邏輯
8.6.5判斷輸贏邏輯
8.6.6手動下棋操作
8.6.7智慧型自動下棋邏輯
8.7男女的婚姻匹配問題
8.7.1問題描述
8.7.2數據存儲於初始化
8.7.3算法描述
8.7.4main函式實現
8.8小結
8.9練習
第9章無處不在的字元串
9.1字元串的概念
9.2字元串的常用操作
9.3字元串反轉
9.4字元串壓縮算法
9.4.1壓縮邏輯設計
9.4.2整數轉字元串
9.5刪除重複字元
9.5.1普通刪除法
9.5.2快速刪除法
9.6測測你的名字在古代是什麼職位
9.7自定義字元串的常用操作
9.8小結
9.9練習
第二部分知 識 進 階
第10章數據類型與變數
10.1變數的定義與初始化
10.2變數的大小
10.3更多數據類型
10.4各種類型的範圍
10.5變數在記憶體中的樣子
10.6類型的相互轉換
10.7數組變數及其大小
10.8結構體變數及其大小
10.8.1字元變數與int型變數在記憶體中的對齊方式
10.8.2字元變數與double型變數在記憶體中的對齊方式
10.8.3結構體內部變數的對齊方式
10.8.4結構體的大小必須是大對齊模數的整數倍
10.8.5嵌套結構體的大小
10.8.6結構體大小計算法則
10.9指針變數及其大小
10.10枚舉變數及其大小
10.11共用體變數及其大小
10.12小結
10.13練習
第11章運算符
11.1各種運算符
11.2優先權與結合性
11.3i++與++i
11.4邏輯運算符的短路特性
11.5位運算符
11.5.1位運算符介紹
11.5.2位運算符的套用
11.5.3位運算與枚舉類型
11.5.4位段及其好處
11.5.5位操作與位段綜合套用
11.5.6位段與共用體的綜合套用
11.6小結
11.7練習
第12章指針
12.1指針是什麼
12.2各種類型指針
12.2.1基本類型變數的指針
12.2.2結構體變數的指針
12.2.3共用體變數的指針
12.2.4數組的指針
12.2.5函式的指針
12.2.6指針的指針
12.2.7void指針
12.3指針的運算
12.3.1指針只能與整數做加減運算
12.3.2相同類型的指針可以做減法與比較運算
12.4指針與數組
12.4.1數組名是一個指針
12.4.2數組名與數組地址的區別
12.4.3數組做函式參數就轉化為指針
12.5指針與字元串
12.6指針與函式
12.6.1函式指針
12.6.2函式指針數組
12.6.3指針作為函式參數
12.6.4返回指針值的函式
12.7指針與const修飾詞
12.7.1const修飾普通變數
12.7.2const修飾指針變數
12.7.3const修飾函式的形參
12.7.4const與面試題
12.8指針與鍊表
12.8.1鍊表的概念
12.8.2鍊表的構造
12.8.3鍊表遍歷
12.8.4插入節點
12.8.5刪除節點
12.8.6鍊表反轉
12.8.7遍歷一次鍊表找到鍊表的中間元素
12.9小結
12.10練習
第13章C程式是怎么使用記憶體的
13.1程式的運行過程
13.2全局變數
13.3靜態變數
13.4字元常量
13.5動態記憶體管理
13.5.1malloc進行動態記憶體分配
13.5.2把英文句子按單詞反轉
13.5.3calloc進行動態記憶體分配
13.5.4realloc進行動態記憶體分配
13.5.5可變長數組
13.5.6malloc與free的基本原理
13.6C程式運行的4個記憶體區域
13.7遞歸函式與棧
13.7.1遞歸函式的定義
13.7.2遞歸函式的運行過程
13.7.3遞歸函式的套用——全排列
13.7.4遞歸函式的套用——快速排序法
13.8小結
13.9練習
第14章編譯預處理
14.1C程式的編譯過程
14.2頭檔案中裝的是什麼
14.3項目分多個檔案
14.4include命令
14.5頭檔案的正規寫法
14.6define命令
14.6.1字元串宏替換
14.6.2空宏體的宏
14.6.3宏常量與const常量的區別
14.6.4帶參數的宏
14.6.5#define命令的注意事項
14.7條件編譯
14.8typedef命令
14.9typedef的定義過程
14.10define與typedef的區別
14.11小結
14.12練習
第15章檔案處理
15.1檔案與流
15.2訪問文本檔案
15.2.1打開與關閉文本檔案
15.2.2寫入文本檔案
15.2.3讀取文本檔案
15.2.4為檔案追加內容
15.2.5其他讀取文本檔案的方法
15.2.6其他寫入文本檔案的方法
15.2.7文本檔案讀寫的問題
15.3文本檔案與二進制檔案的區別
15.4塊方式讀寫檔案
15.5檔案定位與隨機讀寫
15.6隨機讀寫套用
15.7總結
15.8練習
第三部分項 目 進 階
第16章貪吃蛇
16.1遊戲介紹
16.2遊戲元素設計
16.3畫遊戲界面
16.4產生食物
16.5產生蛇
16.6畫蛇
16.7遊戲邏輯設計
16.8檢查方向
16.9蛇遊動邏輯
16.10蛇吃食物
16.11遊戲結束判斷
16.12刪除兩節蛇的身體
16.13反轉蛇的身體
16.14反轉蛇的移動方向
第17章俄羅斯方塊
17.1遊戲介紹
17.2方塊設計
17.3列印遊戲界面
17.4遊戲界面的數據
17.5主函式與頭檔案
17.6方塊的產生
17.7方塊的移動
17.8判斷方塊下方是否有空
17.9判斷方塊是否到頂部
17.10鍵盤操控邏輯
17.11左移方塊
17.12右移方塊
17.13翻轉方塊
17.14消除方塊
17.15計算得分
17.16翻轉方塊的問題
第18章圍住神經貓
18.1遊戲介紹
18.2遊戲元素設計
18.3初始界面繪製
18.4移動游標進行封堵操作
18.5尋找每個點周圍的點
18.6貓隨機移動
18.7貓智慧型移動
18.8廣度搜尋算法
18.9回溯找貓的位置
附錄