C語言學習路線

C語言學習路線

半年來的學習,也算有了初學者對C語言的一些感悟,我在此做個總結,對初學者給予一定的引導,少踩一些坑,提高學習效率。

從基礎開始

C語言的學習資料有很多,網上隨處可見,但這些資料對沒有方向的初學者來說很不友善。我列出了自己學習C語言的過程和資料。

精讀這幾本書:

  1. 譚浩強的《C程序設計》:非常好的C語言入門書籍,國內很有知名度
  2. Stephen Prata的《C Primer Plus》:國際上基本是以這本書為C語言入門書籍,有中文版。這本書既簡單易懂,又有一定的深度。

略讀這幾本書:

  1. K(Kernighan)&R(Ritchie)的《The C Programming Language》:這本書是C語言創始人寫的C語言入門書籍,雖然有點老,但是讀一讀對C語言的精髓有更好的理解。
  2. 《the standard C library》:這是C語言進階書目了,如果你想深入了解C語言庫的具體實現,這本書值得一讀。

跟完教學視頻:

  1. C程序設計上/下:李鳳霞教授的授課,中國大學慕課網上可以免費觀看,如果覺得看書有點難以理解,那麼這些視頻就毫無難度可言了,只要認真跟完這期視頻,完成相關練習,C語言輕鬆拿下。

多做OJ題:

編程不敲代碼是不行的,我推薦幾個online judge系統方便初學者做題:

  1. 北大的OpenJudge
  2. 浙大的ZOJ

經典C語言題目:

個人整理了一些遇到的經典C語言題,不多,但都足夠經典。如果這些題都能做出來,C語言也就掌握的差不多了。(對於有價值的題目我也會寫上一些文章來專門介紹)

  1. 求解一元二次方程:掌握基本語法,流程式控制制
  2. 貪吃的猴子 :掌握遞歸演算法
  3. 漢諾塔問題:掌握遞歸演算法

彭瑤:從漢諾塔問題理解迭代與遞歸?

zhuanlan.zhihu.com圖標

  1. 小蜜蜂 :掌握迭代演算法
  2. 分數的四則運算 :掌握分子分母的結構處理
  3. 零錢換整錢 :掌握暴力循環
  4. 數制轉換 :掌握數制原理,數制之間關係
  5. 掃雷 :掌握數組用法,基本數組數據處理方法
  6. 求最大公約數 :掌握常用演算法:輾轉相除法
  7. 拱豬計分 :綜合應用題,熟練編程的多情況分支處理,結構體運用,函數調用
  8. 鏈表排序 :掌握指針以及其應用鏈表

C語言練手小程序:

C語言的命令行不適合寫遊戲,但下面的幾個小遊戲可以嘗試下,可以參考參考我的源碼,互相交流

對於一個大一計科新生,有什麼代碼行數在500~1000的程序(c語言)可以試著寫來練手??

www.zhihu.com圖標

  1. 貪吃蛇
  2. 五子棋
  3. 掃雷小遊戲
  4. 飛機大戰
  5. 2048
  6. 推箱子
  7. 坦克大戰

讀一讀計算機概論

在學C語言的同時可以看看計算機概論相關的書籍,這類知識對計算機小白非常重要,好好理解裡面的概念對今後學習有很大的幫助。

推薦這幾本書:

  1. 布魯克希爾的《計算機科學概論》
  2. 佛羅贊和莫沙拉夫的《計算機科學導論》

數據結構和演算法

這部分知識相當於C語言的進階知識啦,而且這些知識對所有語言是通用的,把它比作編程語言的靈魂毫不為過。

推薦這幾本書:

  1. 彭軍和向毅的《數據結構與演算法》
  2. 陳傑的《大話數據結構》

跟完教學視頻:

  1. 數據結構:浙江大學的國家精品慕課視頻,裡面的配套練習非常豐富,對小白也非常友好。

多做OJ題:

有關數據結構和演算法的Online Judge都是有一定的難度的,想要搞ACM的話推薦幾個Online Judge系統。

  1. 北京大學的Online Judge
  2. 杭州電子科技大學的OJ

經典數據結構和演算法題:

  1. 逆波蘭算術表達式 :棧的運用
  2. 二叉樹前序/中序/後序遍歷:二叉樹的遍歷
  3. 合併果子 :堆(二叉樹的一種)的運用
  4. 貪吃蛇最短路徑尋食:廣度優先搜索演算法(用到隊列)
  5. 貪吃蛇最快路徑選擇:深度優先搜索演算法(用到棧)
  6. 遺傳演算法計算函數零點:用到遺傳演算法的思想

安利幾個實用網站和工具

  1. 鳩摩搜索:電子版書籍下載網站,找不到資料的小夥伴們注意了
  2. BooKSC:論文、書籍下載網站
  3. 在線Matlab:在線版的Matlab,很實用
  4. DevCpp:簡易C語言編譯器

長期更新,共同進步


推薦閱讀:

(轉)懂得全部 200 句就可以算是精通廣東話。
Python NLTK自然語言處理:詞幹、詞形與MaxMatch演算法
vipabc跨文化教育,多元的全球化語言學習環境
7 個實用的自學西班牙語學習網站/播客

TAG:語言學習 | C編程語言 | 編程學習 |