本書分3部分。第一部分是快速入門:通過設計一批淺顯易懂、有趣新穎的例子,將計算機編程需要的概念與知識點串起來,讓大家明白編程是什么,編程需要用到哪些概念;第二部分是知識總結:在第一部分的基礎上,對知識進行深入講解與總結,讓讀者徹底明白編程中出現各種問題的原因;第三部分是項目進階:通過前兩部分的學習,進一步引入新的更難的項目,讓讀者進一步領會、應用編程知識。
從事20多年的編程工作,最近有機會受邀去一些大專院校開辦講座。與會的老師和同學們的超級反響與鼓勵讓我獲得感滿滿。
大家非常喜歡講座的內容和演示案例。說我利用做包子的過程,把編程知識講得通俗易懂、形象有趣,讓他們一下子厘清了程序設計語言的知識脈絡,有一種醍醐灌頂、茅塞頓開的感覺。說平時玩過很多游戲,用過若干軟件,卻從來沒想過可以自己開發利用,而我卻有各種語言的實現版本。大家都想復制源代碼去學習。
真是“春風得意馬蹄急,一日看盡長安花”,“桃花潭水深千尺”,不及眾人贊我情。
于是,我決定撰寫這本書。
我對學習編程有兩個理念:
第一,學習的目的在于應用,在應用的過程中學習知識是最好的方式。多做項目、多寫代碼是學習編程最好的方法。本書提供了幾十個大大小小的項目,幫你積累開發代碼上萬行。
第二,人們只有在有強烈需求的情況下才有強烈的學習愿望。本書試想通過在項目開發過程中不斷引出問題,幫大家制造強烈的需求,以此達到最佳的學習效果。
本書分為3個部分:
第一部分,輕松入門。精心設計了幾十個有趣案例,帶領大家循序漸進地去開發。在開發過程中,提出問題,引入知識點,進而運用知識點解決問題,讓每個知識點都能找到一個真實的應用場景。由此開創在實戰中學習、在學習中實戰的新模式。既激活了枯燥的知識講解,又積累了編程經驗;既學會了知識點,又體會到其應用;既鍛煉了邏輯思維,又積累了開發經驗,一舉多得。
第二部分,知識進階。通過知識點的深入講解與對比,不僅讓讀者知其然,更知其所以然。從程序的運行過程來體會知識點之間的聯系、區別及注意事項。該部分旨在讓讀者深入理解C語言程序設計的概念與知識,從容面對考試與面試。
第三部分,項目進階。通過3個大項目的開發,綜合運用前兩部分的內容,讓讀者進一步熟悉編程的邏輯表達與算法設計。
本書旨在積極踐行國家培養應用型人才的教育戰略,嘗試拋棄傳統的知識與項目分開講解的教學法,重在應用。但畢竟是前所未有的初次嘗試,如有不妥之處,歡迎讀者通過網站www.daimawang.cn與我們聯系,以助改進提高。
本書QQ討論群:332383304(群名:C語言討論群)。
2000年畢業于大連理工大學,碩士學位,計算數學專業.2000年3月在國家一級期刊<物理學報>上發表過一篇文章<一個非線性方程的顯式行波解>,后被SCI收錄. 2000年7月入職中國集成電路設計中心,從事電子設計自動化軟件的設計與開發.工作期間在國內外一級\核心期刊發表過20余篇論文,并榮獲國防部科技進步三等獎(2002GFJ3401-5),獲得一項國家發明專利.專利申請號為:03126498.0. 2006.8,跳槽至Cadence北京研發中心(它是電子設計自動化的行業老大),繼續從事電子設計自動化軟件的設計與開發.在整個軟件開發的職業生涯中,我對軟件編程的入門\晉級有著深刻的認識. 2012年,我開始職業生涯轉型,在尚德悅成移動互聯網乳化基從事IT培訓.在兩年多的培訓經歷中,我開發了幾門課程,都非常受學生歡迎.*一門課是<明解計算機語言>,以通俗化、生活化的方式講解計算機語言中的各種概念,使學生形象化的理解了各種概念,并快速入門.可參見http://v.youku.com/v_show/id_XNTg0MzIxMzY4.html.
目錄
第一部分 輕 松 入 門
第1章 C語言編程環境搭建
11 編程工具選擇
12 Dev-C++工具的下載與安裝
13 創建一個C文件
14 編譯一個C文件
15 改變字體大小的設置
第2章 初識C語言
21 掀起C語言的蓋頭來
22 寫給女朋友的一封情詩
23 送你一束玫瑰花
24 絢麗的動畫——女朋友數玫瑰
25 小結
26 練習
第3章 減少重復操作——循環語句
31 循環的描述——循環三要素
32 幫你計數的人——循環變量
321 變量的定義
322變量的輸出
33循環是否達到終值
331比較運算符
332邏輯運算符
34時刻變化著的循環——循環增量
35三種循環語句
351for循環語句
352while循環語句
353do-while循環語句
36女朋友數玫瑰——循環版
37幾何圖形有學問
371實心長方形
372空心長方形
373直角三角形
374菱形
38數列求和也容易
39送你999朵玫瑰花
310三種循環語句的區別
311死循環的各種寫法
312循環中的特殊情況——continue、break與goto
313小結
314練習
第4章分情況處理——分支語句
41愛情心理測試介紹
42輸入函數
43分支語句
44愛情心理測試
441單次測試版
442循環測試版
443循環版本的問題
45測測女朋友值多少錢
46猜數游戲
47猜數游戲的問題——隨機數種子
48石頭剪刀布——猜拳游戲
481單局猜拳游戲
482多局猜拳游戲
49多路開關好處多——switch語句
410switch語句的運行過程
411if-else語句的運行過程
412年齡的秘密
413小結
414練習
第5章制造自己的工具——函數
51內容變化的重復
52工欲善其事,必先利其器——函數的概念
53造一把利器——函數的定義
54女朋友數玫瑰——函數版
55取回新產品——函數的返回值
56函數注意事項
57有用的定位函數
58小球橫向滾動
59小球彈跳游戲
591游戲界面繪制
592小球移動反向邏輯
510全局變量與局部變量
511修改小球彈跳的速度
512兩個小球彈跳游戲
5121重復代碼實現方式
5122函數版本實現方式
513函數參數的傳遞機制
5131函數參數的值傳遞機制
5132程序調試(debug)
5133指針的概念
5134指針做函數參數
5135指針總結
514小結
515練習
第6章封裝相關數據——結構體
61結構體的概念
62小球彈跳的結構體版本
63擲骰子游戲
631游戲介紹與分析
632畫骰子邊框
633畫骰子點數
634畫出骰子并提示玩家輸入選擇
635骰子跳動與輸贏判斷
64100個小球彈跳
641數組的概念
642100個小球彈跳
65小結
66練習
第7章組合類型比較——數組與結構體
71數組與結構體的區別
72數組的常用操作
721遍歷數組
722數組元素累加
723數組添加元素
724數組刪除元素
725尋找數組的最值
726冒泡排序
727冒泡排序改進
728選擇排序
73猴子選大王
74全民打飛機
741游戲界面開發
742畫飛機
743飛機移動
744鍵盤操控飛機
745設計子彈
746子彈產生與消失
747怪物的產生與消失
748碰撞檢測
75小結
76練習
第8章數組的數組——二維數組
81二維數組的概念
82二維數組的初始化
83一份成績單
84螺旋矩陣
85練眼力
86井字棋
861游戲介紹與界面搭建
862棋子信息存儲
863下棋邏輯設計
864判斷游戲結束邏輯
865判斷輸贏邏輯
866手動下棋操作
867智能自動下棋邏輯
87男女的婚姻匹配問題
871問題描述
872數據存儲于初始化
873算法描述
874main函數實現
88小結
89練習
第9章無處不在的字符串
91字符串的概念
92字符串的常用操作
93字符串反轉
94字符串壓縮算法
941壓縮邏輯設計
942整數轉字符串
95刪除重復字符
951普通刪除法
952快速刪除法
96測測你的名字在古代是什么職位
97自定義字符串的常用操作
98小結
99練習
第二部分知 識 進 階
第10章數據類型與變量
101變量的定義與初始化
102變量的大小
103更多數據類型
104各種類型的范圍
105變量在內存中的樣子
106類型的相互轉換
107數組變量及其大小
108結構體變量及其大小
1081字符變量與int型變量在內存中的對齊方式
1082字符變量與double型變量在內存中的對齊方式
1083結構體內部變量的對齊方式
1084結構體的大小必須是最大對齊模數的整數倍
1085嵌套結構體的大小
1086結構體大小計算法則
109指針變量及其大小
1010枚舉變量及其大小
1011共用體變量及其大小
1012小結
1013練習
第11章運算符
111各種運算符
112優先級與結合性
113i++與++i
114邏輯運算符的短路特性
115位運算符
1151位運算符介紹
1152位運算符的應用
1153位運算與枚舉類型
1154位段及其好處
1155位操作與位段綜合應用
1156位段與共用體的綜合應用
116小結
117練習
第12章指針
121指針是什么
122各種類型指針
1221基本類型變量的指針
1222結構體變量的指針
1223共用體變量的指針
1224數組的指針
1225函數的指針
1226指針的指針
1227void指針
123指針的運算
1231指針只能與整數做加減運算
1232相同類型的指針可以做減法與比較運算
124指針與數組
1241數組名是一個指針
1242數組名與數組地址的區別
1243數組做函數參數就轉化為指針
125指針與字符串
126指針與函數
1261函數指針
1262函數指針數組
1263指針作為函數參數
1264返回指針值的函數
127指針與const修飾詞
1271const修飾普通變量
1272const修飾指針變量
1273const修飾函數的形參
1274const與面試題
128指針與鏈表
1281鏈表的概念
1282鏈表的構造
1283鏈表遍歷
1284插入節點
1285刪除節點
1286鏈表反轉
1287遍歷一次鏈表找到鏈表的中間元素
129小結
1210練習
第13章C程序是怎么使用內存的
131程序的運行過程
132全局變量
133靜態變量
134字符常量
135動態內存管理
1351malloc進行動態內存分配
1352把英文句子按單詞反轉
1353calloc進行動態內存分配
1354realloc進行動態內存分配
1355可變長數組
1356malloc與free的基本原理
136C程序運行的4個內存區域
137遞歸函數與棧
1371遞歸函數的定義
1372遞歸函數的運行過程
1373遞歸函數的應用——全排列
1374遞歸函數的應用——快速排序法
138小結
139練習
第14章編譯預處理
141C程序的編譯過程
142頭文件中裝的是什么
143項目分多個文件
144include命令
145頭文件的正規寫法
146define命令
1461字符串宏替換
1462空宏體的宏
1463宏常量與const常量的區別
1464帶參數的宏
1465#define命令的注意事項
147條件編譯
148typedef命令
149typedef的定義過程
1410define與typedef的區別
1411小結
1412練習
第15章文件處理
151文件與流
152訪問文本文件
1521打開與關閉文本文件
1522寫入文本文件
1523讀取文本文件
1524為文件追加內容
1525其他讀取文本文件的方法
1526其他寫入文本文件的方法
1527文本文件讀寫的問題
153文本文件與二進制文件的區別
154塊方式讀寫文件
155文件定位與隨機讀寫
156隨機讀寫應用
157總結
158練習
第三部分項 目 進 階
第16章貪吃蛇
161游戲介紹
162游戲元素設計
163畫游戲界面
164產生食物
165產生蛇
166畫蛇
167游戲邏輯設計
168檢查方向
169蛇游動邏輯
1610蛇吃食物
1611游戲結束判斷
1612刪除兩節蛇的身體
1613反轉蛇的身體
1614反轉蛇的移動方向
第17章俄羅斯方塊
171游戲介紹
172方塊設計
173打印游戲界面
174游戲界面的數據
175主函數與頭文件
176方塊的產生
177方塊的移動
178判斷方塊下方是否有空
179判斷方塊是否到頂部
1710鍵盤操控邏輯
1711左移方塊
1712右移方塊
1713翻轉方塊
1714消除方塊
1715計算得分
1716翻轉方塊的問題
第18章圍住神經貓
181游戲介紹
182游戲元素設計
183初始界面繪制
184移動光標進行封堵操作
185尋找每個點周圍的點
18