① 討論學習c語言演算法的心得
關鍵是:存在 對比 客觀 簡化 實踐
存在:演算法中存在什麼,目的是什麼,怎麼實現的,必要的話可以了解一下何人發明的,因為經典演算法的設計者本身都是著作等身的,由此你可以通過「存在」了解一個事實:演算法不是孤立的,是新和舊之間的更替。
對比:對比類似和不同演算法,同在哪裡,不同在哪裡,以及這些差異導致了什麼結果,過程有什麼差異,這個過程為什麼會導致那個結果。
客觀:不憑空臆測,演算法本身有什麼思想以及借用了什麼數學思想實現不能扭曲,以及何種狀態適合這樣的演算法。
簡化:當你深刻了解演算法的本質(通過推導、證明和實際運用和改進),就不可避免的要把不同演算法有機的結合在一起,不是線性的也不是單純的組合,而是從內涵和外延的角度站在不同的立場把演算法劃分成不同的層次,每個層次什麼時候運用。
簡化操作往往要運用一些更加直觀的快速的方法:聯想。
關於聯想,通常,你需要在思考線性表的時候想到一串隔開的紙帶,當細化到鏈表還是順序表時,需要加以限制為是否可隨機存取還是順序存取。
演算法本身都可以通過數據結構表現得很清晰,這時候運用演算法的時候,就可以脫離實際的ADT載體。
分類討論以及回溯通常要結合樹去分析,就一目瞭然。
字元串處理以及跟優先順序和記憶索引等問題通常要結合棧結構去設計演算法。
路徑問題結合圖結構設計演算法。
當然,要加深對C語言演算法的設計能力,需要從最根源出發:實踐。
有專門的機構提供了實踐平台,檢驗你設計的演算法是否高效。
可以去搜索ACM POJ ZOJ 等關鍵字,找到相關的演算法在線競賽網站,從最基本的題開始訓練。
另外,好的書籍是成功的一半:
《演算法導論》 (雖然名為導論,但是演算法著作中最權威也最有深度的一本書)
《數據結構(C語言)》(嚴蔚敏的著作,一般重點高校使用,雖然比較抽象,但比較簡化)
《演算法與數據結構(C語言)》(電子科技出版社,對演算法的實際實現講的比較透徹)
Finally,you need 'coding' and programming again and again.
② 深入學習C語言的具體步驟
1、入門後多看代碼
在有一定基礎以後一定要多看別人的代碼。 注意代碼中的演算法和數據結構。 畢竟學C之後的關口就是演算法和數據結構。提到數據結構,指針是其中重要的一環,絕大多數的數據結構是建立在指針之上的,如鏈表、隊列、樹、圖等等,所以只有學好指針才能真正學好C。別的方面也要關注一下,諸如變數的命名、庫函數的用法等等。有些庫函數是經常用到的。對於這些函數的用法就要牢牢記住。
2、要自己動手
編程序是個實乾的活,光說不練不行。剛開始學的時候可以多練習書上的習題。 對於自己不明白的地方,自己編個小程序實驗一下是最好的方法,能給自己留下深刻的印象。 自己動手的過程中要不斷糾正自己不好的編程習慣和認識錯誤。有一定的基礎以後可以嘗試編一點小游戲,照著編作為練習。基礎很扎實的時候,可以編一些關於數據結構方面的東西。之後.....學匯編、硬體知識。
3、選擇一個好的編譯器
GCC或者VS都是一個號的選擇
4、關於養成良好的編程習慣
③ C語言演算法怎麼學習
意思就是用C語言寫演算法,推薦《演算法導論》這本書
C語言主要是些驅動和嵌入式的,這些東西對演算法要求很高。
學習演算法主要要思考,分析。一步一圖一代碼的去理解演算法,最後要動手實現演算法,達到真正理解的目的。
④ 請列舉學習C語言的過程
1. 閱讀一本有意義又不失學習樂趣的書
推薦書籍《C專家編程》
這本書描述了各種搞笑八卦的事,比如設計一個程序,檢查樓道自動售貨機中有沒有可樂?冰不冰?用LISP去控制自己樓上的電梯升降;讓電腦識別自己是否為真身,以免黑客把自己困在電梯里出不來等等。當自己為編程學習感到煩躁的時候,讀一讀很有效果的。
2. 初學C語言
開始學習C語言的時候,建議事先給自己一個規劃
比如每天必學5小時,其中看書兩小時,結合視頻書籍操作三小時。
3. 自選一本好教材
關於C語言學習的書籍實在太多,自選一本學習的書籍要萬分慎重,在慎重考慮之後進行選擇:
《C語言大全第四版》很經典的一本書
《C+Traps+and+Pitfalls》學過一段時間C語言後,讀這本書對自己會有一定提升。
《C語言參考手冊》可以把它比作C語言中的新華字典,可以當成工具使用。
《C程序設計語言》這本書是C語言的發明者K&R出版的書
順序結構、選擇結構、循環結構;
循環結構又分為while型、until型、for循環結構;程序流程圖;
算術運算符(+ - * / %)結合方向自左向右
關系運算符(> < =="">= <= !="">
邏輯運算符(! && ||)
位運算符(<>> ~ | ^ &)
賦值運算符(=及符號擴展賦值運算符)
條件運算符(? : )
逗號運算符( , )
指針運算符(* &)
求位元組運算符(sizeof)
強制類型轉換運算符((類型))
分量運算符( . ->)
下標運算符([])
小編只列舉出這幾本書籍作為入門參考,選擇入門書籍的時候要結合自身考慮清楚,萬一學著學著跑偏了,誰也幫不了你!
4. 練習新手的C語言習題
網上有非常多簡單的C語言練習題,下載下來不斷練習反復練習。
5. 基本知識梳理
小編給大家把C語言學習的知識點給梳理一下!
演算法結構:
結構化程序設計方法:
自頂向下→逐步細化→模塊化設計→結構化編碼。
數據類型:
常量、變數、整形變數、實型變數、字元型數組。
C的運算符有以下幾種:
學習過程語言的一些基礎模式:順序與循環。切記它們是靈活多變的,死記硬背不過是白費力氣!自己試著做些簡單的程序,比如數據統計,一些簡單的問答等。
最後
C語言學習方法總結一句話:
多看,多敲,多思考
把C語言的學習變成一種樂趣😄
無論你是自學還是在校學習,任何編程語對於初學者來說都是難的,它對每個人也同樣公平,你沒有用相應的付出去學習,編程語對你的回報都是微乎其微!
⑤ C語言應該怎麼學啊
你好!
本人大學期間學習三遍c語言,畢業後又教了一年c語言,通過自己的體會,給你幾點意見。
一.這門課不好學,但是只要功夫到就能學好。所以當你拿著教材感到很困難時,不要灰心,堅持下去。當你學了下一章,再回頭學前一章時就不那麼難了。
二。這是一門實踐性很強的課,離不開上機。這門課主要培養你的編程思想和解決實際問題的能力,在學習理論的同時,要多練習。
三。先跟著老師通一遍,然後自己認真總結。這本書無非講了三種基本結構,9大控制語句,和若干演算法。學習英語有英語語法,學習c語言,基本結構和控制語句就是c語言的語法。最難的就是c語言的靈魂-----演算法了。演算法最能體現一個人的編程能里。
四。勤快點,哈哈,學習可不能懶。
祝你好運!
⑥ 如何學習C語言計算
C程序設計》的內容很豐富,按照我們現在的教學大綱,教學的主要內容是基礎知識、四種結構的的程序設計、函數與數組的應用和一些簡單的演算法。在學習時,同學們應該把主要精力放在這些部分,通過實踐(練習和上機調試等熟練掌握。當然,在初學C語言時,可能會遇到有些問題理解不透,或者表達方式與以往數學學習中不同(如運算符等),這就要求不氣餒,不明白的地方多問多想,鼓足勇氣進行學習,待學完後面的章節知識,前面的問題也就迎刃而解了,這一方面我感覺是我們同學最欠缺,大多學不好的就是因為一開始遇到困難就放棄,曾經和好多同學談他的問題,回答是聽不懂、不想聽、放棄這樣三個過程,我反問,這節課你聽過課嗎?回答又是沒有,根本就沒聽過課,怎麼說自己聽不懂呢?相應的根本就沒學習,又談何學的好?
學習C語言始終要記住「曙光在前頭」和「千金難買回頭看」,「千金難買回頭看」是學習知識的重要方法,就是說,學習後面的知識,不要忘了回頭弄清遺留下的問題和加深理解前面的知識,這是我們學生最不易做到的,然而卻又是最重要的。比如:在C語言中最典型的是關於結構化程序設計構思,不管是那種教材,一開始就強調這種方法,這時也許你不能充分體會,但是學到函數時,再回頭來仔細體會,溫故知新,理解它就沒有那麼難了。學習C語言就是要經過幾個反復,才能前後貫穿,積累應該掌握的C知識。
那麼,我們如何學好《C程序設計》呢?
一.學好C語言的運算符和運算順序
這是學好《C程序設計》的基礎,C語言的運算非常靈活,功能十分豐富,運算種類遠多於其它程序設計語言。在表達式方面較其它程序語言更為簡潔,如自加、自減、逗號運算和三目運算使表達式更為簡單,但初學者往往會覺的這種表達式難讀,關鍵原因就是對運算符和運算順序理解不透不全。當多種不同運算組成一個運算表達式,即一個運算式中出現多種運算符時,運算的優先順序和結合規則顯得十分重要。在學習中,只要我們對此合理進行分類,找出它們與我們在數學中所學到運算之間的不同點之後,記住這些運算也就不困難了,有些運算符在理解後更會牢記心中,將來用起來得心應手,而有些可暫時放棄不記,等用到時再記不遲。
先要明確運算符按優先順序不同分類,《C程序設計》運算符可分為15種優先順序,從高到低,優先順序為1 ~ 15,除第2、3級和第14級為從右至左結合外,其它都是從左至右結合,它決定同級運算符的運算順序。下面我們通過幾個例子來說明:
(1) 5*8/4%10 這個表達式中出現3種運算符,是同級運算符,運算順序按從左至右結合,因此先計算5 *8=40,然後被4除,結果為10,最後是%(求余數)運算,所以表達式的最終結果為10%10 = 0;
(2)a = 3;b = 5;c =++ a* b ;d =a + +* b;
對於c=++a*b來說,按表中所列順序,+ +先執行,*後執行,所以+ + a執行後,a的值為4,由於+ +為前置運算,所以a的值4參與運算,C的值計算式為4*5=20而不是3*5=15了;而對於d=a++*b來說,由於a + +為後置運算,所以a值為4參與運算,使得d的值仍為20,而a參與運算後其值加1,值為5。這個例子執行後,a的值為5,b的值為5,c的值為20,d的值也是20;
(3)(a = 3,b = 5,b+ = a,c = b* 5)
例子中的「,」是逗號結合運算,上式稱為逗號表達式,自左向右結合,最後一個表達式的結果值就是逗號表達式的結果,所以上面的逗號表達式結果為40,a的值為3,b的值為8,c的值為40。
(4)a=5;b=6;c=a>b?a:b;
例中的a>b?a:b是一個三目運算,它的功能是先做關系運算a>b部分,若結果為真,則取問號後a的值,否則取冒號後b的值,因此c的值應該為6,這個運算可以用來代替if…else…語句的簡單應用。
二.學好C語言的四種程序結構
(1)順序結構
順序結構的程序設計是最簡單的,只要按照解決問題的順序寫出相應的語句就行,它的執行順序是自上而下,依次執行。
例如;a = 3,b = 5,現交換a,b的值,這個問題就好象交換兩個杯子水,這當然要用到第三個杯子,假如第三個杯子是c,那麼正確的程序為: c = a; a = b; b = c; 執行結果是a = 5,b = c = 3如果改變其順序,寫成:a = b; c = a; b = c; 則執行結果就變成a = b = c = 5,不能達到預期的目的,初學者最容易犯這種錯誤。順序結構可以獨立使用構成一個簡單的完整程序,常見的輸入、計算,輸出三步曲的程序就是順序結構,例如計算圓的面積,其程序的語句順序就是輸入圓的半徑 r,計算s = 3.14159*r*r,輸出圓的面積s。不過大多數情況下順序結構都是作為程序的一部分,與其它結構一起構成一個復雜的程序,例如分支結構中的復合語句、循環結構中的循環體等。
(2) 分支結構
順序結構的程序雖然能解決計算、輸出等問題,但不能做判斷再選擇。對於要先做判斷再選擇的問題就要使用分支結構。分支結構的執行是依據一定的條件選擇執行路徑,而不是嚴格按照語句出現的物理順序。分支結構的程序設計方法的關鍵在於構造合適的分支條件和分析程序流程,根據不同的程序流程選擇適當的分支語句。分支結構適合於帶有邏輯或關系比較等條件判斷的計算,設計這類程序時往往都要先繪制其程序流程圖,然後根據程序流程寫出源程序,這樣做把程序設計分析與語言分開,使得問題簡單化,易於理解。程序流程圖是根據解題分析所繪制的程序執行流程圖。
學習分支結構不要被分支嵌套所迷惑,只要正確繪制出流程圖,弄清各分支所要執行的功能,嵌套結構也就不難了。嵌套只不過是分支中又包括分支語句而已,不是新知識,只要對雙分支的理解清楚,分支嵌套是不難的。下面我介紹幾種基本的分支結構。
①if(條件)
{
分支體
}
這種分支結構中的分支體可以是一條語句,此時「{ }」可以省略,也可以是多條語句即復合語句。它有兩條分支路徑可選,一是當條件為真,執行分支體,否則跳過分支體,這時分支體就不會執行。如:要計算x的絕對值,根據絕對值定義,我們知道,當x>=0時,其絕對值不變,而x<0時其絕對值是為x的反號,因此程序段為:if(x<0) x=-x;
②if(條件)
{分支1}
else
{分支2}
這是典型的分支結構,如果條件成立,執行分支1,否則執行分支2,分支1和分支2都可以是1條或若干條語句構成。如:求ax^2+bx+c=0的根
分析:因為當b^2-4ac>=0時,方程有兩個實根,否則(b^2-4ac<0)有兩個共軛復根。其程序段如下:
d=b*b-4*a*c;
if(d>=0)
{x1=(-b+sqrt(d))/2a;
x1=(-b-sqrt(d))/2a;
printf(「x1=%8.4f,x2=%8.4f\n」,x1,x2);
}
else
{r=-b/(2*a);
i =sqrt(-d)/(2*a);
printf(「x1=%8.4f+%8.4fi\n」r, i);
printf(「x2=%8.4f-%8.4fi\n」r,i)
}
③嵌套分支語句:其語句格式為:
if(條件1) {分支1};
else if(條件2) {分支2}
else if(條件3) {分支3}
……
else if(條件n) {分支n}
else {分支n+1}
嵌套分支語句雖可解決多個入口和出口的問題,但超過3重嵌套後,語句結構變得非常復雜,對於程序的閱讀和理解都極為不便,建議嵌套在3重以內,超過3重可以用下面的語句。
④switch開關語句:該語句也是多分支選擇語句,到底執行哪一塊,取決於開關設置,也就是表達式的值與常量表達式相匹配的那一路,它不同 if…else 語句,它的所有分支都是並列的,程序執行時,由第一分支開始查找,如果相匹配,執行其後的塊,接著執行第2分支,第3分支……的塊,直到遇到break語句;如果不匹配,查找下一個分支是否匹配。這個語句在應用時要特別注意開關條件的合理設置以及break語句的合理應用。
(3)循環結構:
循環結構可以減少源程序重復書寫的工作量,用來描述重復執行某段演算法的問題,這是程序設計中最能發揮計算機特長的程序結構,C語言中提供四種循環,即goto循環、while循環、do –while循環和for循環。四種循環可以用來處理同一問題,一般情況下它們可以互相代替換,但一般不提倡用goto循環,因為強制改變程序的順序經常會給程序的運行帶來不可預料的錯誤,在學習中我們主要學習while、do…while、for三種循環。常用的三種循環結構學習的重點在於弄清它們相同與不同之處,以便在不同場合下使用,這就要清楚三種循環的格式和執行順序,將每種循環的流程圖理解透徹後就會明白如何替換使用,如把while循環的例題,用for語句重新編寫一個程序,這樣能更好地理解它們的作用。特別要注意在循環體內應包含趨於結束的語句(即循環變數值的改變),否則就可能成了一個死循環,這是初學者的一個常見錯誤。
在學完這三個循環後,應明確它們的異同點:用while和do…while循環時,循環變數的初始化的操作應在循環體之前,而for循環一般在語句1中進行的;while 循環和for循環都是先判斷表達式,後執行循環體,而do…while循環是先執行循環體後判斷表達式,也就是說do…while的循環體最少被執行一次,而while 循環和for就可能一次都不執行。另外還要注意的是這三種循環都可以用break語句跳出循環,用continue語句結束本次循環,而goto語句與 if構成的循環,是不能用break和 continue語句進行控制的。
順序結構、分支結構和循環結構並不彼此孤立的,在循環中可以有分支、順序結構,分支中也可以有循環、順序結構,其實不管哪種結構,我們均可廣義的把它們看成一個語句。在實際編程過程中常將這三種結構相互結合以實現各種演算法,設計出相應程序,但是要編程的問題較大,編寫出的程序就往往很長、結構重復多,造成可讀性差,難以理解,解決這個問題的方法是將C程序設計成模塊化結構。
(4)模塊化程序結構
C語言的模塊化程序結構用函數來實現,即將復雜的C程序分為若干模塊,每個模塊都編寫成一個C函數,然後通過主函數調用函數及函數調用函數來實現一大型問題的C程序編寫,因此常說:C程序=主函數+子函數。因些,對函數的定義、調用、值的返回等中要尤其注重理解和應用,並通過上機調試加以鞏固。
三.掌握一些簡單的演算法
編程其實一大部分工作就是分析問題,找到解決問題的方法,再以相應的編程語言寫出代碼。這就要求掌握演算法,根據我們的《C程序設計》教學大綱中,只要求我們掌握一些簡單的演算法,在掌握這些基本演算法後,要完成對問題的分析就容易了。如兩個數的交換、三個數的比較、選擇法排序和冒泡法排序,這就要求我們要清楚這些演算法的內在含義,其中選擇法排序和冒泡法排序稍難,但只要明白排序的具體過程,對代碼的理解就不難了。如用選擇法對10個不同整數排序(從小到大),選擇法排序思路:設有10個元素a[1]~a[10],將a[1]與a[2]~a[10]比較,若a[1]比a[2]~a[10]都小,則不進行交換,即無任何操作;若a[2]~a[10] 中有一個比a[1]小,則將其中最大的一個(假設為a[i])與a[1]交換,此時a[1]中存放了10個中最小的數。第二輪將a[2]與a[3]~a [10]比較,將剩下9個數中的最小者a[i]與a[2]交換,此時a[2] 中存放的10個數中第2小的數;依此類推,共進行9輪比較,a[1]到a[10]就已按從小到大的順序存放。即每一輪都找出剩下數中的最小一個,代碼如下:
for(i=1;i<=9;i++)
for(j=i+1;j<=10;j++)
if(a[i]>a[j]
{temp=a[i];
a[i]=a[j];
a[j]=temp;
}
結語:當我們把握好上述幾方面後,只要同學們能克服畏難、厭學、上課能專心聽講,做好練習與上機調試,其實C語言並不難學。
⑦ C語言裡面的演算法覺得很難,這樣才能學好演算法
學好C語言首先要學好他的語法,就比如說英語和語文,你必須要學好他的語法啊,並且要會用他的」單詞」,然後就是演算法了,這其中要有數學的計算和思想,但是你可以學好的,如果你學好VB那就更好了,因為VB和C語言、很都語法都是共通的.C重要的是思想和演算法..
如果要成為高手的話,那就必須數學基礎扎實,因為要到高級的話會用到很多的函數問題,編程也要邏輯性好,而且C就是一種模式,找到了很容易學的。
說實在的,有些東西當初我拿到書的時候是天天琢磨,月月思考,還真別說,有些當初我以為超級老難的問題就愣是這么給琢磨出來了。不過前提是我的數學和邏輯思維真的不錯。
慢慢來啊,呵呵,就像當初我以為我自己也學不會,結果還是讓我給征服了。其實入門比較困難一些,這都是過程,保持好的心態,如果真的想學就不要放棄,經過時間的積累我想一切都會晴朗的。
⑧ 如何學習C語言
怎樣學習C語言
很多人對學習C語言感到無從下手,經常問我同一個問題:究竟怎樣學習C語言?我是一個教師,已經開發了很多年的程序,和很多剛剛起步的人一樣,學習的第一個計算機語言就是C語言。經過這些年的開發,我深深的體會到C語言對於一個程序設計人員多麼的重要,如果不懂C語言,你想寫底層程序這幾乎聽起來很可笑,不懂C語言,你想寫出優秀高效的程庌輌這簡直就是天方夜譚。為什麼C語言如此重要呢?
第一:C語言語法結構很簡潔精妙,寫出的程序也很高效,很便於描述演算法,大多數的程序員願意使用C語言去描述演算法本身,所以,如果你想在程序設計方面有所建樹,就必須去學它。
第二:C語言能夠讓你深入系統底層,你知道的操作系統,哪一個不是C語言寫的?所有的windows,Unix,Linux,Mac,os/2,沒有一個里外的,如果你不懂C語言,怎麼可能深入到這些操作系統當中去呢?更不要說你去寫它們的內核程序了。
第三:很多新型的語言都是衍生自C語言,C++,Java,C#,J#,perl...哪個不是呢?掌握了C語言,可以說你就掌握了很多門語言,經過簡單的學習,你就可以用這些新型的語言去開發了,這個再一次驗證了C語言是程序設計的重要基礎。還有啊,多說一點:即使現在招聘程序員,考試都是考C語言,你想加入it行業,那麼就一定要掌握好C語言。
那麼究竟怎樣學習C語言呢?
1:工欲善其事,必先利其器
這里介紹幾個學習C語言必備的東東:
一個開發環境,例如turbo C 2.0,這個曾經占據了DOS時代開發程序的大半個江山。但是現在windows時代,用turbo C有感覺不方面,編輯程序起來很吃力,並且拖放,更沒有函數變數自動感應功能,查詢參考資料也不方便。建議使用Visual C++,這個東西雖然比較大塊頭,但是一旦安裝好了,用起來很方便。
一本學習教程,現在C語言教材多如牛毛,但推薦大家使用《C語言程序設計》譚浩強主編 第二版 清華大學出版社,此書編寫的很適合初學者,並且內容也很精到。
除此以外,現在有很多輔助學習的軟體,畢竟現在是Window時代了,學習軟體多如牛毛,不象我們當初學習,只有讀書做題這么老套。我向大家推薦一個「集成學習環境(C語言)」,里邊的知識點總結和常式講解都非常好,還有題庫測試環境,據說有好幾千題,甚至還有一個windows下的trubo C,初學者甚至不用裝其它的編譯器,就可以練習編程了,非常適合初學者。還有一個「C語言學習系統」軟體,不過感覺只是一個題庫系統,如果你覺得題做的不夠,不妨也可以試試。
2:葵花寶典
學習計算機語言最好的方法是什麼?答曰:讀程序。
沒錯,讀程序是學習C語言入門最快,也是最好的方法。如同我,現在學習新的J#,C#等其他語言,不再是抱著書本逐行啃,而是學習它們的常式。當然,對於沒有學過任何計算機語言的初學者,最好還是先閱讀教程,學習完每一章,都要認真體會這一章的所有概念,然後不放過這一章中提到的所有常式,然後仔細研讀程序,直到每一行都理解了,然後找幾個編程題目,最好是和常式類似的或一樣的,自己試圖寫出這段已經讀懂的程序,不要以為常式你已經讀懂了,你就可以寫出和它一樣的程序,絕對不一定,不相信你就試一試吧,如果寫不出來,也不要著急,回過頭來再繼續研究常式,想想自己為什麼寫不出來,然後再去寫這段程序,反反復復,直到你手到擒來為止,祝賀你,你快入門了。
3:登峰造極
寫程序的最高境界其實就是掌握各種解決問題的手段(數據結構)和解決問題的方法(演算法)。
是不是寫出底層程序就是程序設計高手呢?非也,寫底層程序,無非是掌握了硬體的結構,況且硬體和硬體還不一樣,要給一個晶元寫驅動程序,無非就是掌握這塊晶元的各種寄存器及其組合,然後寫值讀值,僅此而已。這不過是熟悉一些io函數罷了。那麼怎樣才算精通程序設計呢?怎樣才能精通程序設計呢?舉個例子:你面前有10個人,找出一個叫「張三」的人,你該怎麼辦?第一種方法:直接對這10個人問:「誰叫張三」。第2種方法:你挨個去問「你是不是張三?」,直到問到的這個人就是張三。第三種方法:你去挨個問一個人「你認不認識張三,指給我看」。不要小看這個問題,你說當然會選第一種方法,沒錯恭喜你答對了,因為這個方法最快,效率最高,但是在程序設計中找到解決問題的最優方法和你用的手段卻是考驗一個程序員程序設計水平的重要標志,而且是不容易達到的。剛才這個問題類似於數據結構和演算法中的:Map數據結構,窮舉查找和折半查找。所以掌握好數據結構和一些常用演算法,是登峰造極的必然之路。最後給大家推薦嚴尉敏的《數據結構》清華大學出版社,希望每一個想成為程序設計高手的人研讀此書。
二,語言學習方法
談談偶的學習方法,拋磚引玉!
學習不論講不講方法,最終都能學會。但是別人1個月學會了,而你卻100年才學會,這不就晚了么?:)所以說,學習還是要講究方法的。學習方法正確,事半功倍;學習方法不正確,事倍而功半。
什麼才是學習C語言的捷徑?我的答案是看書。書中所寫,是前人數十年經驗所寫,看十本書,就相當於汲取了前人數十年的功力,那麼你的內功也會迅速上升1甲子。:)書當然要看好書,只有好書才營養豐富。假如你花了1天時間看了一本破書,而該書介紹的知識雖然對於你來說是全新的知識,但是由於書中組織不當、或者深度不夠,使你獲取的營養很少,還不如自己研究一天來的快,這種書就不值當看了。學習C語言要看那些好書?我認為首先要把基礎書給看扎實了,比如《C語言之四書五經》中介紹的4本。(雖然這些書很多已經絕版了,但我相信電子版也是很有益處。況且,如果你真的想看,我相信你一定有辦法搞的到。)這些書你會在很短的時間內看完(比如一兩個月),這取決於你的基礎和悟性。之後要看那些書呢?我不妨再列幾本。Bjarne Stroustrup的《C++程序設計語言》(The C++ Programming Language)一定要看,這本書裡面對於C的一些基礎概念的定義,比我見過的其他任何C語言書都要全,都要仔細;Bjarne Stroustrup的《C++語言的設計與演化》(The Design and Evolution of C++)和David R.Hanson 的《C語言介面與實現 創建可重用軟體的技術》(C Interfaces and Implaementations Techniques for Creating Reusable Software)一定要看,這兩本書講述了如何用C來實現異常處理、實現類型的封裝和擴展等一些大的項目中經常用到的高級技術。其他的書,操作系統的要看,編譯原理的要看,演算法的要看,模式的也要看。讀書破萬卷,coding如有神。總而言之,就如《傳》中雲:「生而知之者,上也;學而知之者,次也;困而學之又其次也。」我們不能總是因困而學之,而要做到兵馬未動,糧草先行。
看書是學習的導向,書中能一一介紹清楚概念,但書卻不能把應用的細節一一介紹給你,因為應用總是招數繁復,變化多端。因此我們要想熟悉招數,懂得書中所講怎麼使用,還要多讀源碼。Linus給別人解答問題的時候,常說Read the ****ing source code;候捷也在其文中提到「源碼之前,了無秘密。」這就是大師的箴言呀。源碼就像是動畫、就像是幻燈片,把書中的招式一一演練給你看。可以說高手的經驗大都是源自代碼。源碼和書一樣,也是要看好的,不要看差的。在此,我推薦看Linux kernel source code 和 Linux tcp/ip source code。這兩套代碼都是開源的,垂手可得。此外,還可以配合著Andrew S.Tanenbaum的《操作系統的設計與實現》(Operating Systems:Design and Implementation)、毛德操 胡希明的《Linux內核 源代碼情景分析》、Jonathan Corbet,Alessandro Rubini,Greg Kroah-Hartman合著的《Linux設備驅動程序》(Linux Device Driver,3e)、W.Richard Stevens《TCP/IP詳解(3部)》 (TCP/IP Illustracted )、W.Richard Stevens《UNIX環境高級編程》(Advanced Programming in the UNIX Environment,新版增加了Linux kernel的內容)等書來看,方便的很當然程序不是看出來的,是寫出來的。我高中的時候每天堅持寫6個小時程序,《數據結構》和排列組合、圖論方面的習題反復做了N遍。到現在雖然已經時隔五六年,很多內容早已淡忘掉,但卻培養了我很強的編碼能力和調試能力,直到現在還對我的工作有很大的幫助。
學習忌貪多、忌浮躁、忌急功近利、忌目中無人。把學習計劃放的長一些,培養一個好的學習方法,一步一步慢慢走,終能成為高手。
⑨ C語言演算法設計主要需要掌握哪些
你如果只問C語言的話,它與其他語言最大的不同就是指針了,很多針對C語言的演算法都會用到它,每種語言雖然大體相同但都有獨特之處的。我們老師常說:
不懂指針的人,就等於不會C/C++
不懂委託、引用的人,就等於不會C#
除此之外就是演算法設計的共同基礎了,像樓上所說的,
你需要熟悉各種數據結構的特性,才能在設計你的演算法時用最適合的方法
你需要熟悉各種變數的結構,C語言是可以手動管理內存的,靈活掌握物理地址與邏輯地址對C語言演算法設計很有幫助
你需要熟悉各種循環控制結構,這才是程序的真諦,讓計算機代替人完成重復性的工作,而演算法就是教機器該如何這樣做的命令集
⑩ 怎麼樣學習c語言演算法才是有效的學習
這個問題問了很多次了,也很籠統。
不知道你是哪個層面的,初學?有一定基礎?還是其它?
如果是初學者,就看我嘮叨幾句.
1、選教材.
如果是真正的初學者,看下國內的教材再看國外教材。講C 的教材網上一搜一大把。
如果有高手指點,可以直接學習國外教材。
2、看視頻。
對教材有一個大概了解,此過程不需要太深入。只要有個初步印象就可以了。如:目錄層次、重點在哪等。
3、看教材。
熟記、熟背基本概念。畢竟C\C++是玩基本概念的。
理解教材,如果還有不能理解的上網查或者請教高手。
4、做練習。
教材中的例題,不管有多麼簡單都要做一次。有一句話說的好,只有自己做出來的東西才是自己的東西。
盡量自己完成教材中的練習,這是對你學習的檢驗。
其它練習。擴展知識面很有用。
4、復習。
這點對一般人很有效,如果你是天才那就算了~~
5、一步一台階,比如:先學C語法再學演算法、WIN程序設計。
6、堅持再堅持。
C\C++給人的感覺是易會不易精,精通很難啊,但是最重要的二個字是「堅持」。
如果你是新人希望你能堅持得住。