當前位置:股票大全官網 - 資訊咨詢 - 如何學好C語言

如何學好C語言

如何學好C語言

教了多年的C程序設計,大多數學生覺得這門課很難學。其實按照我們現在的教學大綱和教學要求,只要學生掌握壹些方法,克服心理恐懼,不輕易放棄,是可以學好的。

C編程的內容非常豐富。按照我們現在的教學大綱,主要的教學內容是基礎知識,四結構編程,函數和數組的應用以及壹些簡單的算法。學生在學習的時候,要以這些部分為重點,通過練習(練習和電腦調試)熟練掌握。當然,初學者在學習C語言時,可能會遇到壹些理解不透徹的問題,或者表達方式與之前的數學學習有所不同(比如運算符等。),這就要求妳不要氣餒,多問多思考自己不懂的地方,鼓足勇氣去學習。學習完後面章節的知識,前面的問題就迎刃而解了。在這方面,我感覺我們同學是最欠缺的,大部分都是因為壹開始遇到困難就放棄了,也和很多同學談過他。答案是沒有,我根本沒上過課。我怎麽能說我不懂呢?相應的,我根本就沒有學習,那怎麽能學好呢?

在學習C語言的時候,我們要時刻記住“曙光在前”,“千金難買回頭看”,這是學習知識的壹個重要途徑,也就是要學習後面的知識,不要忘了回過頭去找出後面留下的問題,加深對前面知識的理解,這是我們學生最難做到的,但卻是最重要的。比如C語言,最典型的思路就是關於結構化編程。無論什麽樣的教材,壹開始就強調這種方法。這個時候妳可能還沒有完全理解,但是當妳學習函數的時候,回去仔細理解壹下,理解起來就沒有那麽難了。學習C語言就是要前後經歷幾次叠代,積累應該掌握的C知識。

那麽,我們如何學好C編程呢?

1.學好C語言的運算符和操作序列。

這是學好C編程的基礎。c語言操作非常靈活,功能非常豐富,操作的類型也遠遠多於其他編程語言。與其他編程語言相比,表達式更簡潔,如自加、自減、逗號運算、三眼運算等,使表達式更簡單。但是初學者往往覺得這個表達式很難讀懂,關鍵原因是沒有完全理解運算符和運算序列。當多種不同的運算組成壹個運算表達式時,即壹個表達式中有多個運算符時,運算的優先順序和組合規則非常重要。在學習中,只要我們把它們合理分類,找出它們與數學中所學運算的區別,記住這些運算並不難。有些運算符理解後會記在心裏,以後用起來得心應手,有些運算符可以暫時放棄,以後用的時候再記。

首先要明確,運營商是按照不同的優先級來分類的。C編程中的運算符可分為15優先級,從高到低,優先級為1 ~ 15。除了第二級、第三級和14級是從右到左組合的,其他都是從左到右組合的,這就決定了同級運算符的運算順序。讓我們用幾個例子來說明:

表達式(1) 5*8/4%10中有三個運算符,是同壹級別的運算符,運算順序從左到右組合。所以先算5 *8=40,再除以4,結果是10,最後是%(余數)運算,所以表達式最終結果是6544。

(2)a = 3;b = 5;c = ++ a* b;d = a++ * b;

對於c=++a*b,按表中所列順序,先執行++後執行*,所以執行++a後,A的值為4。因為++是前置運算,所以運算中涉及了A的值,C的計算公式是4*5=20而不是3*5=15。對於d=a++*b,因為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 & gtb?甲:乙;

示例中的A & gtb?A:b是三眼運算,作用是做關系運算A >;在B部分,如果結果為真,則在問號後取A的值,否則在冒號後取B的值,所以C的值應該為6。這個操作可以用來代替if…else…語句的簡單應用。2.學好C語言的四種程序結構

(1)序列結構

Sequence structure的程序設計是最簡單的,只要按照解題的順序寫出相應的語句,它的執行順序是自上而下的。

比如說;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)分支結構

序列結構的程序雖然可以解決計算和輸出的問題,但在選擇之前無法判斷。對於選擇前需要判斷的問題,要用分支結構。分支結構的執行是按照壹定的條件選擇執行路徑,而不是嚴格按照語句出現的物理順序。分支結構編程方法的關鍵在於構造合適的分支條件和分析程序流程,並根據不同的程序流程選擇合適的分支語句。分支結構適用於邏輯或關系比較等有條件判斷的計算。設計這類程序時,往往需要先畫出其程序流程圖,再根據程序流程編寫源程序,將程序設計分析從語言中分離出來,使問題簡單易懂。程序流程圖是根據問題解決分析繪制的程序執行流程圖。

學習分支結構不要被分支嵌套所迷惑,只要流程圖繪制正確,每個分支要執行的功能明確,嵌套結構並不難。嵌套只是包含分支語句的分支,並不是新知識。只要對雙分支理解清楚,分支嵌套並不難。我來介紹幾個基本的分支結構。

①如果(條件)

{

分支

}

這個分支結構中的分支可以是壹個語句,在這種情況下可以省略“{}”,也可以是多個語句,即復合語句。它有兩條分支路徑可供選擇。壹種是當條件為真時執行分支,否則跳過分支,不執行分支。比如計算x的絕對值,根據絕對值的定義,我們知道當x >;=0,其絕對值保持不變,而x

②如果(條件)

{分行1}

其他

{分支2}

這是典型的分支結構。如果條件成立,執行分支1,否則執行分支2、分支1和分支2,分支2可以由1或幾個語句組成。比如求ax ^ 2+bx+c = 0的根。

分析:因為當B 2-4ac >時;=0,方程有兩個實根,否則(b 2-4ac

d = b * b-4 * a * c;

if(d & gt;=0)

{ x 1 =(-b+sqrt(d))/2a;

x 1 =(-b-sqrt(d))/2a;

printf("x1=%8.4f,x2=%8.4f\n ",x1,x2);

}

其他

{ r =-b/(2 * a);

I = sqrt(-d)/(2 * a);

printf(" x 1 = % 8.4f+% 8.4 fi \ 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分行}

嵌套分支語句可以解決多個入口和出口的問題,但是經過三重以上的嵌套後,句子結構變得非常復雜,對於程序的閱讀和理解極其不方便。建議在triple內嵌套,超過triple就可以使用下面的語句。

④switch語句:該語句也是多分支選擇語句。執行哪個塊取決於開關設置,即表達式的值與常量表達式匹配的路徑。它不同於if…else語句,它的所有分支都是並行的。程序執行時,第壹個分支開始搜索,如果匹配,則執行後續的塊,然後執行第二個分支和第三個分支的塊,直到。如果不匹配,找出下壹個分支是否匹配。在應用該語句時,要特別註意switch條件的合理設置和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程序=主函數+子函數。所以在函數的定義、調用、返回值上要特別註意理解和應用,通過計算機調試鞏固。

3.掌握壹些簡單的算法。

其實編程工作很大壹部分就是分析問題,尋找問題的解決方案,然後用相應的編程語言編寫代碼。這需要掌握算法。按照我們C程序設計的教學大綱,只需要掌握壹些簡單的算法就可以了。掌握了這些基本算法後,就很容易完成問題的分析了。比如兩個數的交換,三個數的比較,選擇排序,冒泡排序,這就需要我們明確這些算法的內在含義,其中選擇排序和冒泡排序是有點難度的,但是只要了解了排序的具體過程,理解代碼就不難了。如果用選擇法對10個不同的整數進行排序(從小到大),選擇法的排序思想是:有10個元素a[1]~a[10],a[1]和A [2] ~ A [65438+]如果a[2]~a[10]中的壹個小於a[1],則最大在第二輪中,a[2]與a[3]~a[10]進行比較,剩余9個數中最小的a[i]與a[2]進行交換,a[2]是a[2]中存儲的10個數中第二小的數。以此類推,* * *進行9輪比較,a[1]到a[10]已經按降序存儲。即在每壹輪中找出最小的剩余數,代碼如下:

for(I = 1;我& lt=9;i++)

for(j = I+1;j & lt=10;j++)

if(a[I]& gt;a[j]

{ temp = a[I];

a[I]= a[j];

a[j]= temp;

}

結論:當我們抓住了以上幾個方面,只要同學們能克服畏難情緒和厭學情緒,上課註意聽課,在電腦上做練習和調試,其實C語言並不難學。