我一 jiao 踹開了 C 語言的大門
老讀者都知道了,我妹今年上大一,學校安排的編程語言是 C 語言,這對于一個初學編程的小白來說,并不容易!作為她親哥的我,肩膀上抗著巨大的責任,那就是盡全力幫助她入門。
前段時間為了她專門調(diào)研了一波 IDE,最后我比較鐘情 Visual Studio Code,輕量級,高顏值。
我妹給我反饋說,學校老師安排的課程跟不上,上課經(jīng)常走神,學的云里霧里,問我有什么好的辦法沒?不想就這么白白浪費了時間(還是有點覺悟哈)。
既然學校老師的課聽不懂,那不妨聽聽網(wǎng)上的課,比如我之間推薦的浙大翁愷教授的 C 語言課程,在 B 站上可以找得到?,F(xiàn)在還有,不知道以后還會不會下架,因為涉及到一些版權(quán)的問題。侯捷老師的 C++ 視頻課都已經(jīng)全部下架了,所以早點去白嫖,千萬別后悔。
地址我這里再貼一下:
https://www.bilibili.com/video/BV19W411B7w1
要學習 C 語言的讀者抓緊時間去看一下,建議 1.5 倍速食用。我就是按照這么一個速度去看的,感覺不愧是浙大的教授,語言的表達能力,以及對程序的認知能力,尤其是對底層知識的一些講解,確實配得上一個字——“彩”!
我按照這個視頻的目錄整理了一條以周為單位時間的學習路線,希望我妹在開學后能按照這個進度去學習一遍。有要學習 C 語言的讀者也可以參照。可能有些知識學習起來比較困難,比如說二進制這種涉及到底層方面的內(nèi)容,建議多次食用。
當然了,學習任何一門編程語言都不容易,看一遍視頻是不夠的,可能有些知識點吸收不了。那就多看幾遍,反正我就打算再看一遍,然后把涉及到程序在電腦上敲一遍,然后記錄一些筆記,發(fā)布到我的博客上。
我之前有學習 Java 的經(jīng)驗加持,所以肯定會比我妹學起來容易得多,但說句實在話,不是我謙虛,這第一遍視頻仍然有很多我之前沒有掌握到的知識點。
編程語言都是相通的,C 語言作為 Java 語言的母胎,還是非常值得去學習一下打打基礎的。好了,接下來來看一下我整理的學習路線,大部分來源于視頻的目錄,我稍作了刪減。
第一周
1、計算機和編程語言
2、計算機的思維方式
3、為什么選擇 C 語言
4、C 語言的簡單歷史
5、C 語言的編程軟件
6、第一個 C 語言的小程序
7、詳解第一個 C 語言的小程序
8、簡單計算
9、macOS 操作系統(tǒng)下如何在命令行進行代碼編輯和源代碼編譯
第二周
1、變量如何定義
2、變量的賦值和初始化
3、C語言的程序輸入
4、常量和變量
5、浮點數(shù)
6、表達式
7、運算符的優(yōu)先級
8、交換兩個變量的值
9、復合賦值符和遞增遞減
第三周
1、0 和 o 的顯示區(qū)別
2、if 語句
3、關系運算符
4、注釋
5、else 語句
6、嵌套的 if-else 語句
7、級聯(lián)的 if-else-if 語句
8、switch 語句
第四周
1、while 循環(huán)
2、do-while 循環(huán)
3、for 循環(huán)
4、break 關鍵字
5、continue 關鍵字
6、嵌套循環(huán)
7、goto 語句
第五周(練習題)
1、前 N 項求和
2、逆反數(shù)字
3、求最大公約數(shù)(輾轉(zhuǎn)相除法)
4、求符合給定條件的整數(shù)集
5、求水仙花數(shù)
6、九九乘法表
7、素數(shù)求和
8、猜數(shù)游戲
第六周
1、數(shù)據(jù)類型
2、整數(shù)的位數(shù)
3、整數(shù)與二進制
4、整數(shù)的范圍
5、整數(shù)的格式化
6、八進制和十六進制
7、如何選擇整數(shù)類型
8、浮點數(shù):double 和 float
9、浮點數(shù)的范圍與精度
10、字符類型
11、逃逸字符
12、類型轉(zhuǎn)換
13、bool 類型
14、邏輯運算符
第七周
1、函數(shù)的定義和調(diào)用
2、函數(shù)的返回值
3、函數(shù)的順序及原型
4、函數(shù)的參數(shù)及傳遞
5、本地變量
第八周
1、數(shù)組的定義
2、數(shù)組的下標
3、二維數(shù)組
4、&運算符
5、指針
6、指針與數(shù)組
7、指針與 const
8、指針運算
9、動態(tài)內(nèi)存分配
10、可變數(shù)組
第九周
1、字符串變量
2、字符串輸入輸出
3、字符串數(shù)組
4、單字符輸入輸出
5、字符串函數(shù) strlen
6、字符串函數(shù) strcmp
7、字符串函數(shù) strcat
8、字符串搜索函數(shù)
第十周
1、枚舉
2、結(jié)構(gòu)類型
3、結(jié)構(gòu)與函數(shù)
4、結(jié)構(gòu)中的結(jié)構(gòu)
5、類型定義
6、全局變量
7、靜態(tài)本地變量
第十一周
1、宏定義
2、帶參數(shù)的宏
3、頭文件
4、格式化輸入輸出
5、文件輸入輸出
6、二進制文件
7、按位運算
8、移位運算
第十二周
1、鏈表
2、鏈表的函數(shù)
3、鏈表的搜索
4、鏈表的刪除
第十三周
到了這一周,基本上 C 語言的理論知識就學完了,接下來就到了實踐出真知的階段了。到底有沒有學會,就看能不能自己動手根據(jù)需求寫出符合要求的代碼。很多初學者吃虧就吃虧在這個方面,敲的代碼太少,導致看代碼的時候感覺自己像個程序員,要主動寫代碼的時候就感覺還沒有入門。原因很簡單,就是因為敲的代碼太少了,甚至可以說,有些小套路的代碼是要背會的。
那到哪找習題做呢?有沒有一些經(jīng)典的例子呢?比如說第五周提到的求最大公約數(shù)、求水仙花數(shù)、九九乘法表這些?
當然有,runoob.com 上有一百道經(jīng)典的題目,并且給出了參考答案,我看了一下,還真不錯。

如果能把這些習題全部做出來的話,那基本上可以自信的拍拍胸膛,信誓旦旦地說,自己是一名合格的 C 語言程序員了。下面是網(wǎng)址。
https://www.runoob.com/cprogramming/c-100-examples.html
除了上面這些,我再列舉一些經(jīng)典的(來源于 CSDN)題目,供大家參考??梢哉f不管是學哪門子編程語言,這些例子都是繞不開的。我當年學 Java 的時候就敲過這些例子,敲完后感覺自己的嘴角洋溢著自信的笑容。
1、斐波那契數(shù)列
2、判斷 101-200 之間有多少個素數(shù),并輸出所有素數(shù)及素數(shù)的個數(shù)。
3、找出 1000 以內(nèi)的所有完數(shù)。
4、楊輝三角。
5、字符串反轉(zhuǎn)。
6、用指針變量輸出結(jié)構(gòu)體數(shù)組元素。
7、建立一個有三個結(jié)點的簡單鏈表。
有更多經(jīng)典的例子,大家可以在評論區(qū)給出哈。
第十四周
有些讀者喜歡看視頻學習,有些讀者可能更喜歡在線學習網(wǎng)站,那能不能推薦一些呢?好的,你稍等,這就來,我已經(jīng)給大家準備好了。

雖然是英文版的學習網(wǎng)站,但只要保持著高中時期的詞匯量,閱讀是沒有問題的。即便是有問題,借助一下翻譯工具就完全沒有問題了。最新的 Safari 瀏覽器還提供了及時翻譯功能,點擊地址欄的翻譯小圖標就可以翻譯成中文了,閱讀體驗真不錯。

下面是翻譯后的內(nèi)容,感覺翻譯得挺舒適的。

這個網(wǎng)站底部還提供了在線練習的功能,更改完示例代碼后,點擊「Run」按鈕就可以直接運行,及時看到輸出結(jié)果。

愛了愛了。網(wǎng)站鏈接我貼一下,速去收藏。
https://www.learn-c.org/
第十五周
大一這么下勁的學習,是為了什么?
我想很大一部分讀者和我妹不太一樣,她只想找份工作,哈哈哈,我對她要求也沒那么嚴苛。
大家可能想要在大學畢業(yè)后順利進入大廠工作(不想拿命換錢的可以選擇銀行的科技崗),那想要進入大廠的話,就需要趁早把算法題刷一刷,算法厲害的人進大廠還是相對容易些。
我之前整理了一份 GitHub 上開源的一本刷題筆記,作者是谷歌的一名員工,實力非常強勁,他寫的這本算法筆記的質(zhì)量更是沒得說。代碼是 C++ 寫的,C 語言入門后學習起來的曲線就很平緩了。大家剛好可以趁著學習完 C 語言的熱情大刷特刷一波,趁早建立起優(yōu)勢。

這份 PDF 怎么獲取呢?
點擊我的公眾號名片后,點擊「發(fā)消息」在公眾號會話窗口輸入關鍵字「008」即可拉取到網(wǎng)盤地址。
點擊名片后,回復「008」
我是沉默王二,我們下期見。給公眾號加個「星標」吧,從此你是風而我是沙,嘿嘿。
