如何有效的學會c語言?

我自己有去中國大學mooc學習c語言的課程 ,但是發現自己聽的懂,去做題後發現不會做,甚至有點迷茫。或者連答案的代碼看的不懂,自己的代碼發現不了問題。也有去做pat上的題,大多是不會的。我現在還是應該多做題多刷題嗎?這種編程的能力會通過題量慢慢提高嗎?還是自己不適合計算機這方面?


哈,一提pat,姥姥就來了嘿嘿嘿

我不清楚題主的水平,但是一般mooc會講的比較淺,但是花時間少,效果大。對於想要快速入門一門語言,個人感覺看視頻是個很好的選擇。但是接下來想要再進一步,那就得多看書了。至於代碼,這個不敲是不行的。少敲也是不行的。剛學c語言就去做pat,那當然是很尷尬的了。丙級都被虐的。

所以:從基礎開始,看書,敲代碼,看書,敲代碼。沒有捷徑,困難會很多,還有走不完的彎路踩不玩的坑,灰頭土臉的很常見,心態很重要。


問題:你寫了超過5000行代碼嗎?如果超過了,我們再討論適合不適合學這個問題……


語言嘛,多寫多練就好了。

原來我們一個大佬學長跟我們說,大學四年哦,大約寫個10萬行代碼就夠了,以後工作肯定好找。

這種大佬我肯定是比不了了,畢竟這是一個能當著女朋友面十分認真跟我們說,寫代碼比女朋友重要的男人。

不過思想還是沒錯的嘛,多寫。

碰到題沒思路,一般我認為主要是兩方面不會。一方面是演算法上的,一方面是技術上的。

演算法不會,比如讓你寫個快排,不會……那就看看語法書嘛。技術上不會,讓我寫個文件存儲,不會,一百度或者看書,哦,有文件存儲的函數。用c寫窗口程序不會,一百度,哦,需要用sdk或者mfc之類的,找教程學一下就可以了嘛。

還有就是,當我需要編程,但沒有思路的時候,我就畫流程圖。先不考慮編程的問題,先把問題分解開。第一步需要做什麼,第二步需要做什麼。每一步都寫好了,然後再考慮如何轉換成編程語言寫進電腦里。寫多了,有經驗了,慢慢也就不需要畫圖了。當然,比較複雜的問題另算。


可能我理解有些偏頗,忘記了當初初涉編程的種種困難,其實我也是從零開始自學的。乙級的題我沒接觸過,不知道難度如何。我當時的學習路線是學了翁凱老師的c語言和陳越老師的數據結構後,然後直接刷的甲級的題目。

課程代碼,老師敲一行,我敲一行,還有講解,跟自己刷題目比肯定簡單的多。但是呢,答主可以先嘗試硬著頭皮把甲級每套題的第一條給AC掉,不懂就百度,當然身邊有懂得人請教更便捷。這條路是一定要走的,其實你堅持做過10條左右就會感覺,第一題也沒那麼難,甚至還有點簡單,哈哈。但要注意,一定要AC才行,不能跑通兩個樣例就下一題,那樣做沒有長進,其實沒有完全理解。

ps.甲級第一條我記得題庫里主要是字元串操作,只學c就可以完成。

~~~~~~~分割線~~~~~~~~

不會做pat上面的題,光學c語言是沒用的,建議你先學習一下網易雲課堂上陳越姥姥講的數據結構,做甲級基本夠了。

再要提升,就要進一步學習演算法設計與分析這樣的課程。


讀,看,寫

多讀語句的解釋

多看代碼怎麼寫,理解代碼的意思

把看的代碼寫出來,自己找練習題寫代碼


1.課下一定要整理筆記,因為課上或者網上的學習只是瞬時記憶,要把它轉為長期記憶。筆記也要常看。

2.代碼一定要自己寫,不能只是懂了,眼高手低是不行的。

3.重視每一次編譯時出現的錯誤,特別是頻繁出現的更要注意。出現錯誤也不要著急,多交流。也許別人會看到你發現不了的漏洞,有問題可以藉助Google。

4.多去圖書館上上自習,圖書館真的很多關於計算機各個方面的書。相信會給你帶來驚喜!

5.課本不能丟,語法細節要吃透。

6.多上機練習,這是學習好C語言的重要的環節,無論編程學得多好,上機實現才是目的,所以,不怕要辛苦,把每一段代碼都敲進計算機,讓計算機來實現,這樣有助於對程序的理解,並試著修改代碼,讓代碼更精簡,效率更高。平時沒事的時候,在計算機上多敲代碼,熟能生巧。

7.掌握編程技巧和簡單的數據結構和演算法,具備解決問題的能力。


先去寫程序,然後你就知道了。但是如果自覺很水,可以用python入門編程,python屏蔽了很多底層的東西,語法簡潔明了,可以較快的了解編程思想。然後再學c語言,c看似不難,寫得好有門檻,搭配unix為shell編程是很好的練習,然後了解一下彙編也是極好的,但是首先你得去動手寫東西,不是看或者做題,得手再應心。就像你看游泳的書也學不會游泳,除非親自下水練習,編程也是這樣。


浙大的pta?沒搞懂,好像是因為沒有答題碼


不清楚你學會C語言的目的是什麼。任何編程語言都是種工具。你會有學習C的需求,很自然假定你之後要完成的事情必須要使用C語言。如果你還在讀大學,非計算機專業,只是為了C語言這門課程不掛科。可以直接忽略這個回答,公開課+刷題什麼的足夠了,還花不了幾天時間。如果並不是為了通過什麼測試或者認證,那刷題沒有意義。再假設你以後一段時間,至少短期,要靠這門手藝養家糊口,那麼看書然後實操才是正途。單純介紹C語言的書我認為值得看的也就三四本,關鍵還都很薄(相對於其他編程語言來),也確實沒多少東西可寫的。這裡請忽略類似《C語言教材/寶典/聖經》這類的,我也不推薦在大學校園被奉為經典(至少在我上大學那個年代)的譚老師的著作。我所認定的經典是當初貝爾實驗室搗騰出C語言這個東西的牛人之一寫的《C程序設計語言》,名字可能不完全準確,真的很薄,權威性幾乎等同於早期的C語言標準規範。啃完後再加上《C和指針》,《C缺陷和陷阱》,《C專家編程》(名字同樣不準確)就完全入門了。再啰嗦一次,真沒多少內容可看。其他就全看敲代碼的經驗了。如果這真是你接觸的第一門編程語言,有一點還得提一下。只有能跑得起來並得出預期結果的才算得上代碼。自己碼的和看懂別人碼的都算,慢慢積累吧。不過那些最終停留在文本文件中的,就只是字元串(更別提那些寫在紙上的)了。


問題基本就是演算法吧,看到題目不知道怎麼實現,需要一個數學思維,很多經典的演算法死記硬背下來都行

不涉及指針(個人看法,很頭疼),應該不會難到看不懂答案代碼吧。

答案的代碼看不懂,具體是什麼情況呢?可以把你看不懂的代碼完整複製過來,題目也複製過來看看嗎?


浙大C語言入門課

聽到數組了

目前做了26題

第20題簡單計算器這道題卡殼一周了。。。。

目前還不不明白為什麼char能讀取+-*/但是int就會變成0

哀怨。


一方面你沒有吃透課程內容,所以會看得吃力;另一方面代碼量不夠。依我看C語言初學階段每天一兩百行的代碼量是需要的。


推薦閱讀:

相比學士和碩士,計算機PhD的優勢是什麼?
C++中的sort函數使用自定義比較函數的具體運行過程是怎麼樣的呢?
能不能用樹莓派來學習Python?
golang的slice動態擴展實現為何不用動態鏈表?
會好幾門編程語言,對做好產品經理有什麼作用?

TAG:編程 | C編程語言 | 計算機科學 | CC |