本文目錄一覽:
- 1、c語言入門教學
- 2、如何學習C語言計算?
- 3、如何學習C語言
- 4、中職學校的C語言教學
- 5、怎麼用c語言計算圓周長和面積
c語言入門教學
初學C語言程序設計的基本方法和技巧
C語言是一門應用最廣泛的基礎高級編程語言,有很多語言都是由它發展而來的,所以學習好C語言之後再學習任何一種編程語言都會輕鬆上手。
1 熟記基本知識點
學習C語言和學習任何一種語言的方法基本一樣。我們嬰兒期間咿呀學語時,從一個字開始學,然後兩個,接着更多,最後我們能成句,成段,到出口成章。學習C語言的時候也一樣,有些最基本的內容必須要記下來。
1.1 關鍵字
關鍵字是由C語言規定的具有特定意義的字符串。它們是寫C語言的基礎,如果關鍵字不記下來,那編程是寸步難行。
1.2 運算符
C語言中的運算符和表達式與我們數學上的運算符和表達式有相同的,也有不同的。我們在學習的時候就注意記住並弄清楚那些不同的地方。基本的語法表達式及執行過程。選擇結構中的if語句和switch語句。循環語句中的for語句、while語句和do-while語句。這部分就好比是你會了許多詞,然後得把這些詞組成一些句子,語法的作用就是告訴你怎樣說好一句話,表達清楚的意思。
1.3 常用庫函數
在這裡最重要有兩個函數:輸入函數scanf()和輸出函數printf()。一個程序如果沒有輸入,那無論運行多少次結果都一樣,那也就失去了寫程序的目的了。同樣一個程序如果沒有輸出,那運行程序有什麼意義呢?當然輸出的形式比較多。在初學C語言的時候主要是從屏幕上輸出結果。所以這兩個函數的使用方法也必須要掌握。這兩個函數已經定義在stdio.h這個頭文件中,不用我們自己寫,它們不是C語言中的語句,所以在使用這兩個函數時在源程序頂部一定要加上#include 。這是為了讓我們在執行程序的時候,讓計算機知道scanf()和printf()這兩個函數怎麼用。
掌握上面的必須要記下來的內容,相當於我們開始學說話時先聽別人說,我們自己跟着學一些最基本的日常語言。這時我們就可以從一些簡單的程序開始讀,能把每一個程序的運行結果能自己讀程序準確地執行出來,那樣我們就可以開始來編寫程序了。
2 掌握程序的基本結構
編寫程序一定要注意程序的結構性。學習寫程序,不能開始就寫代碼。許多人在動手寫程序的時候感到無從下筆。原因主要是:看到一個題目不知道如何去分析,它怎麼才能變成一個程序呢?這是初學者在編寫程序的主要問題。我在教學中採用了一種分步式的方法。
2.1 看到一個題目的時候先別想着編程序,用一個具體的實例想想不用程序你是如何解決這個問題的
例如輸入三個數,輸出最小值。我們用3,8,6三個數來考慮,我們一看就知道3是最小的。可是我們這一看中其實並不簡單,其中有判斷。我們先看第一個數3,然後已經記在我們頭腦中了,再看第二個數8,3比8小,那我們還是記住3,再比較第3個數6,最後確定3是最小的。我們現在就是要把我們頭腦中很快閃過的這些判斷過程想清楚。
2.2 我們要弄清楚一個程序由哪些部分組成
這就好比我們寫一篇文章也有一些結構。一個C程序也有其一般結構,我把它歸納成下面格式。
#include
main()
{
定義變量;int,float,char,double
輸入數據;鍵盤輸入scanf();
直接賦值;例如x=3;
處理數據;if-else;switch;for;while;do-while;
輸入數據;printf();
}
第一行代碼表示把標準的輸入輸出頭文件包含在這個程序中。第二行代碼是C程序的主函數,每個C程序中必須有且僅有一個main()函數。然後是函數的一對「{}」。
定義變量的意思好比買一塊地,有了這塊地就可以在上面蓋房、種莊稼之類的。但是為了便於統一管理,比如城市已經規劃好了,你在郊區買的地就只能種莊稼,在市中心買的,就只能蓋房,這就是變量類型的含義了。用上面求最小值的例子。我們在三個數中求最小值。這三個是什麼數,是整數還是小數?這就必須用變量類型來說明。對於上例應該定義三個整型變量用來存放三個整數,還要定義一個整型變量用來存放最小值。如:int a,b,c,min;這行代碼的作用其實是要了一塊內存,然後在這塊內存里存東西。因為我需要一個整數,所以就用int這個關鍵字來聲明(相當於用這塊地幹什麼)。那麼變量a,b,c是什麼呢?你買了一塊地,總要知道這塊地在哪是吧?不然就白買了,變量就是這樣一個作用。我們需要把數據存在計算機中,什麼樣的數就定義什麼樣的類型,需要存幾個數就定義幾個變量。
輸入數據有兩種方法。第一種從鍵盤輸入,就需要用到scanf()這個函數;第二種是直接賦值。
處理數據是對於初學者來說最難的一部分,也就是把我們剛才分析過程轉換成語句。這需要學好C語言的三種程序結構。
(1)順序結構
順序結構的程序設計是最簡單的,只要按照解決問題的順序寫出相應的語句就行,它的執行順序是自上而下,依次執行。順序結構可以獨立使用構成一個簡單的完整程序,不過大多數情況下順序結構都是作為程序的一部分,與其它結構一起構成一個複雜的程序,例如分支結構中的複合語句、循環結構中的循環體等。
(2)選擇結構
對於要先做判斷再選擇的問題就要使用分支結構。選擇結構的執行是依據一定的條件選擇執行路徑,而不是嚴格按照語句出現的物理順序。選擇結構的程序設計方法的關鍵在於構造合適的分支條件和分析程序流程,根據條件的結果選擇對應的分支語句。選擇結構適合於帶有邏輯或關係比較等條件判斷的計算,設計這類程序時往往都要先繪製其程序流程圖,然後根據程序流程寫出源程序,這樣做把程序設計分析與語言分開,使得問題簡單化,易於理解。程序流程圖是根據解題分析所繪製的程序執行流程圖。
例如上例中,把我們頭腦中很快閃過的這些判斷過程畫成流程圖即圖1:
由上面的流程圖再寫出對應的語句就比較容易了。如下所示:
min=a;
if(minb) min=b;
if(minc) min=c;
學習分支結構不要被分支嵌套所迷惑,只要正確繪製出流程圖,弄清各分支所要執行的部分,嵌套結構也就不難了。嵌套只不過是分支中又包括分支語句而已,不是新知識,只要對雙分支的理解清楚,分支嵌套是不難的。下面我介紹幾種基本的分支結構。
①if(條件)
{ 分支體
}
這種分支結構中的分支體可以是一條語句,此時「{ }」可以省略,也可以是多條語句即複合語句。它有兩條分支路徑可選,一是當條件為真,執行分支體,否則跳過分支體,這時分支體就不會執行。如:要計算x的絕對值,根據絕對值定義,我們知道,當x=0時,其絕對值不變,而x0時其絕對值是為x的反號,因此程序段為:if(x0) x=-x;
②if(條件)
{分支1}
else
{分支2}
這是典型的分支結構,如果條件成立,執行分支1,否則執行分支2,分支1和分支2都可以是1條或若干條語句構成。如:求某年的年號是否是閏年。
分析:因為當某年號能被4整除但不能被4整除但不能被100整除,則這一年是閏年;或者這一年號能被400整除也是閏年。即year%4==0year%100!=0||year%400==0
其程序段如下:
if(year%4==0year%100!=0||year%400==0)
printf(「%d is leap year!」,year);
else
printf(「%d is not leap year!」,year);
}
③嵌套分支語句:其語句格式為:
if(條件1) {分支1};
else if(條件2) {分支2}
else if(條件3) {分支3}
……
else if(條件n) {分支n}
else {分支n+1}
嵌套分支語句雖可解決多個入口和出口的問題,但超過3重嵌套後,語句結構變得非常複雜,對於程序的閱讀和理解都極為不便,建議嵌套在3重以內,超過3重可以用switch語句。
④switch開關語句:該語句也是多分支選擇語句,到底執行哪一塊,取決於開關設置,也就是表達式的值與常量表達式相匹配的那一路,它不同if…else 語句,它的所有分支都是並列的,程序執行時,由第一分支開始查找,如果相匹配,執行其後的塊,接着執行第2分支,第3分支……的塊,直到遇到break語句;如果不匹配,查找下一個分支是否匹配。這個語句在應用時要特別注意開關條件的合理設置以及break語句的合理應用。
(3)循環結構
循環結構可以減少源程序重複書寫的工作量,用來描述重複執行某段算法的問題,這是程序設計中最能發揮計算機特長的程序結構,C語言中提供三種循環,即while循環、do while循環和for循環。三種循環可以用來處理同一問題,一般情況下它們可以互相代替換,另外還有一種goto循環語句,因為強制改變程序的順序經常會給程序的運行帶來不可預料的錯誤,所以不提倡使用。
常用的三種循環結構學習的重點在於弄清它們相同與不同之處,以便在不同場合下使用,這就要清楚三種循環的格式和執行順序,將每種循環的流程圖理解透徹後就會明白如何替換使用,就能更好地理解它們的作用。在分析循環結構的語句時要開清楚,什麼時候開始循環(即循環的初始值);什麼時候結束循環(即循環的終止條件);循環的時候都做哪些操作(即循環體的執行部分);特別要注意在循環體內應包含趨於結束的語句(即循環變量值的改變),否則就可能成了一個死循環,這是初學者的一個常見錯誤。
在學完這三個循環後,應明確它們的異同點:用while和do…while循環時,循環變量的初始化的操作應在循環體之前,而for循環一般在語句1中進行的;while 循環和for循環都是先判斷表達式,後執行循環體,而do…while循環是先執行循環體後判斷表達式,也就是說do…while的循環體最少被執行一次,而while 循環和for就可能一次都不執行。
順序結構、分支結構和循環結構並不彼此孤立的,在循環中可以有分支、順序結構,分支中也可以有循環、順序結構,其實不管哪種結構,我們均可廣義的把它們看成一個語句。在實際編程過程中常將這三種結構相互結合以實現各種算法,設計出相應程序,但是要編程的問題較大,編寫出的程序就往往很長、結構重複多,造成可讀性差,難以理解,解決這個問題的方法是將C程序設計成模塊化結構。輸出數據是每一個程序必須包含的部分。在C程序中的輸出通常是從顯示屏上輸出最後的結果,使用printf()這個函數。
3 掌握一些簡單常用的算法
編程其實一大部分工作就是分析問題,找到解決問題的方法,再以相應的編程語言寫出代碼。這就好比我們學習寫作文段落的時候都有一些經典的好詞好句,可以使文章添彩。同樣程序雖然可以實現各種功能,但最基本的一些算法並不是特別多,我們掌握一些簡單的算法,在掌握這些基本算法後,根據不同的問題,再靈活應用。如百錢買百雞的問題,就是用100元錢買100隻雞,公雞5元一隻,母雞3元一隻,小雞1元三隻。這種問題用數學方法可以列出方程:
x+y+z=100
5*x+3*y+z/3=100
按數學方法三個未知數兩個方程無解,實際上是可以解的,如果把公雞,母雞和小雞可能的只數全部代入到方程中檢驗就可以得到最後結果。這種方法叫窮舉法。如果我們用手算那可能要花上半天的功夫,但讓計算機來算就只需要1秒種。使用算法後分析和處理問題都會簡單很多。當我們能熟練地掌握了簡單算法後就能實現一些比較複雜的編程問題了。
任何程序只要有思維,有想法,那麼實現程序時就不會覺得無從下手。而要學習這種思維方法就是多做題,多讀程序,學習別人好的思維方法,多想想一個程序還可不可以有另外一種方法來實現它。這樣久而久之,自然會形成一種自己的思維方法。因此我認為不管學什麼語言都是這樣。
4 培養良好的編程習慣
培養良好的編程習慣要從第一行代碼開始,這也是學好C語言的重要因素。例如編寫程序時用縮進的方式、寫注釋、程序寫到一定的階段時要做一下測試等。這些工作可以幫我們在調試程序時有很大的幫助。程序代碼實現後,錯誤是難免的,所以也要鍛煉自己的調試查錯能力,而良好的編程習慣可以使我們在調試時減小工作量和提高調試效率,也有助於形成自己的編程風格。
C語言教學探討
注重編程細節,培養編程技巧
C語言的規則頗多,編寫C程序得嚴格按照其規則進行程序設計,對初學者而言,常常馬虎大意,所編寫的程序不能正常編譯和執行結果,從而打消學生的學習積極性。因此在教學初期,教師必須強調C的許多細節問題,讓學生的這種不良習慣扼殺於「萌芽」狀態。如學生常常在寫程序時出現以下問題:
3.1 字母大小寫問題
C語言程序嚴格區分字母的大、小寫,此規則一定給學生講清楚,讓其記住那些特例。如用科學計數法表示浮點數中的「E」,弄清該計數法的規則,其中的字母「E」可以不區分大、小寫;再如表示16進制數的符號「0x」,其中字母「x」也可不區分大、小寫等等,在教學過程中,對該類問題進行總結、歸納讓學生一次就掌握並記住。
3.2 標點符號問題
學生在錄入程序時,往往忽略標點符號。問題主要表現在:
(1)忘記錄入標點,C語言中,一條語句的結束需要用符號「;」與另一語句隔開,對初學的學生,他們通常會忽略掉這個細節問題,這需要教師在講授中明確地指出,讓學生弄清楚。另外,強調不同標點符號的作用和區別,如「;」和「,」等等。
(2)標點錄入錯誤,在錄入程序時,很多學生錄入的標點是不正確的。如分號「;」和「;」是有區別的,前者為中文下的標點符號,而後者才是程序中需要的。必須給學生強調程序中所需要的標點符號都應該是英文狀態下的。
3.3 容易混淆的符號
字母符號「o」,「O」與數字符號「0」;字母符號「l」與數字符號「1」;字母符號「z」與數字符號「2」的區別等等。
對於少數學生,教師雖然強調了很多的細節,但還是不能接受,這便通過程序的調試來讓他們明白問題的嚴重性,通過他們自己對程序的調試來糾正問題的所在,這需要教師耐心地為學生指導。如程序xx.c:
#include stdio.h
void main()
{
int a=10
printf(“a=%d\n”,a);
}
編譯時出現以下問題:xx.c(5) : error C2146: syntax error : missing ‘;’ before identifier ‘printf’,給學生講解提示,讓學生通過提示明白問題所在,即該程序第5行的printf語句前缺少「;」,這是學生自己通過實踐證明了問題的所在,使之深受體會。通過程序調試的方法不僅可以為學生解決錯誤,同時也增強了學生調試程序的能力,從而提高編程的經驗和技巧。
4 明確教學目標,任務驅動學習
教師深入分析教學大綱, 在全面了解學生的數學基礎知識狀況的前提下, 根據大綱制定好教學計劃,做好每次教學任務計劃,明確教學目標,選擇適當的練習作業,督促學生不斷深入學習。
在制定計劃的過程中要針對學生的數學知識基礎, 將教材中涉及到的學生未掌握的數學知識類例題進行更換, 避免因數學的方面的問題形成教學障礙, 在課時允許的條件下也可在教學前為學生補充一定的數學方面相關知識。
設計「循環」語句教案時,可以先給學生講清楚學習循環語句的用處及優點,介紹學習重點、難點,要求掌握一些程序設計的算法,讓他們明確該語句的重要性。如實現求等差數列s=1+2+3+…+n的和時,主要介紹使用循環語句求解,並要求學生掌握其求解方法,並按照此方法推廣,以掌握算法思想,然後再通過作業的任務編寫壘加算法的相關程序,如求s=1!+2!+3!+…+n!等,學生通過自己的練習不斷總結編寫循環程序的經驗,體會循環的思想,使得他們對循環語句有更深的理解和認識,從而達到較好的教學效果。
5 改進教學方法,實現教學相長
傳統教學模式的教學方式是:用大量的時間講定義、語法、概念、語句,對學生的要求是注重接受、理解、記憶,講課方式是老師講、學生聽。學生掌握的知識比較抽象、機械、靜止、片面和孤立,他們不知道如何靈活地綜合運用這些知識去解決實際問題。基礎知識固然重要,但利用基礎知識解決實際問題能力的培養是高等教育更為重要的目的。如何使當前的大學生具備紮實基礎知識的同時,又具備解決實際問題、批判性思維和創造性思維,發展合作能力與自主學習能力,是目前急待解決的問題,也是人們進行教學改革的思路。
注重問題求解方法,掌握算法思想。如實現求等差數列s=1+2+3+…+n的和時,該數列的求解方法有多種。除了使用循環語句求解外,還可以通過公式s=(1+n)*n/2進行求,也可以使用函數的遞歸調用進行求解。通過多種方法的介紹,不僅可以鞏固學生的基礎知識,又能培養學生的創造性思維。
在教學中一定要做到培養學生學習興趣,讓學生體驗成功樂趣,改變學習方式,促進教學互動。
6 知識轉變能力培養,注重實踐課教學
計算機科學是一門經驗學科與理論學科相結合的課程,在學習時,不僅要掌握理論知識,而且實踐操作的經驗的積累也非常重要。C語言變成實踐經驗的積累是不斷從編寫程序、調試程序和運行程序結果的過程中總結得出,由此,教師在講授C語言課程時,不能忽視實踐課的教學,尤其是學生上機輔導課的教學。
往往,很多教師認為,上機輔導課就是讓學生自由練習,及時為有疑問的學生解決問題。實際上這種教學輔導方式是不合理的,應該在以下方面進行改進:
1)學生上機應有明確的練習目標,提高編程效率
在每學期的教學調查中,同學們總會提到這樣的問題:上機課不知道該幹什麼;寫程序無從下手;編程很難等。這就要求我們教師在上機課程中要有目的有意識的給同學安排上機的任務。應該從以下幾點來進行上機課程:
(1)結合上課的理論知識,確定上機課要完成的目標。
(2)引入相關的程序實例,逐步分析解決該程序的思路和相關的程序代碼。讓學生了解如何下手去編寫程序。
(3)根據引入的程序實例再擴展開,讓同學們自己動手完成相關的程序代碼。
(4)評講相關的程序代碼,並引出新的程序,讓學生自己獨立的完成。
(5)課程隨時的課堂答疑。
2)激發學生的學習興趣
學生學習的最關鍵的因素是興趣,一定要注意提高學生學習的興趣,如何提高是一個很關鍵的問題。首先要充分的肯定學生,即便是一點點值得肯定的地方也要肯定。其次多評價學生做的作業,讓學生有一定的滿足感。最後多讓枯燥的程序與實際的生活聯繫起來。這樣就可以大大的提高學生的學習興趣。
7 小結
以上就是在學習和教授過程中,對C語言程序設計教學課程的心得體會,希望對廣大的同仁能有一定的參考價值
C語言快速學習技巧(原創)默認分類 2010-03-14 12:09:53 閱讀46 評論0 字號:大中小
從最基本的流程學起,從最基本的語句學起。在學習的過程中,特別注意每個函數的作用,多想想這個函數能怎樣用,用在哪裡,能起到什麼另外的效果!要學會活用!程序,對數學,特別是邏輯的要求把比較高。寫好程序,首先對整個程序的流程有縝密的思考,要求周到,準確,先思考,不要急着寫程序!!這一點請注意!也就是說先算法,先研究程序的結構,是用什麼來實現的,循環?分支?等等。然後再用語言來實現!語言只是編寫程序的工具。所以學語言,先學會程序化的思想。在將算法翻譯成語言的時候,再結合實際情況,逐步求精,有目的的修改,達到最優化。我們學院的C語言,很有特色,英文版,考試也是。我想說的就是,外文版的這本書,它在引領一個不懂編程的人,逐步養成程序、流程、邏輯的思想,是非常優秀的一本書。如果能字字句句閱讀,將會很清楚領會到程序的思想。然而,書太厚,生詞太多,時間太短。我的建議是,看某一本中文版的書,一本不夠,看兩本。先儘快學會程序的思想,也就是用程序來想問題,這樣,就會編程了。然後,考試前幾周,背一背生詞、關鍵詞,就可以考試了。如果你堅持要讀外文版,可以,但要跳讀!然後,還要看你是想只是應付期末考試,還是想學好編程。應付期末考,需要注意書中的重點,也就是考點,這樣就夠了。比如說字符型變量加指針,這樣就夠了,不需要更高級的指針的知識。而你如果想真正學好程序(我不說C語言是因為我說過C語言只是編寫程序的工具之一),肯定是要打好基礎的!任何一個細節,都是不能放過的!而且,這樣的人往往會很鬱悶~因為我們程序真正要求的,考試一般不會涉及到,因為比較難!(不會指針的人,永遠不要說他會C語言!)而考試的內容,恰恰是最無聊的東西,比如格式化輸出printf函數的第一個參數,太繁了,記都記不住。如果學的深的話,只需要知道有這麼一個函數,有這麼一個功能。而要用的時候,查書就行。可是對考試來說,顯然不行。所以要看看你是哪一種~掌握一些簡單的算法 編程其實一大部分工作就是分析問題,找到解決問題的方法,再以相應的編程語言寫出代碼。這就要求掌握算法,根據我們的《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程序設計》的內容很豐富,按照我們現在的教學大綱,教學的主要內容是基礎知識、四種結構的的程序設計、函數與數組的應用和一些簡單的算法。在學習時,同學們應該把主要精力放在這些部分,通過實踐(練習和上機調試等熟練掌握。當然,在初學C語言時,可能會遇到有些問題理解不透,或者表達方式與以往數學學習中不同(如運算符等),這就要求不氣餒,不明白的地方多問多想,鼓足勇氣進行學習,待學完後面的章節知識,前面的問題也就迎刃而解了,這一方面我感覺是我們同學最欠缺,大多學不好的就是因為一開始遇到困難就放棄,曾經和好多同學談他的問題,回答是聽不懂、不想聽、放棄這樣三個過程,我反問,這節課你聽過課嗎?回答又是沒有,根本就沒聽過課,怎麼說自己聽不懂呢?相應的根本就沒學習,又談何學的好?
學習C語言始終要記住「曙光在前頭」和「千金難買回頭看」,「千金難買回頭看」是學習知識的重要方法,就是說,學7a686964616fe58685e5aeb931333262376132習後面的知識,不要忘了回頭弄清遺留下的問題和加深理解前面的知識,這是我們學生最不易做到的,然而卻又是最重要的。比如:在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=ab?a:b;
例中的ab?a:b是一個三目運算,它的功能是先做關係運算ab部分,若結果為真,則取問號後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時,其絕對值不變,而x0時其絕對值是為x的反號,因此程序段為:if(x0) x=-x;
②if(條件)
{分支1}
else
{分支2}
這是典型的分支結構,如果條件成立,執行分支1,否則執行分支2,分支1和分支2都可以是1條或若干條語句構成。如:求ax^2+bx+c=0的根
分析:因為當b^2-4ac=0時,方程有兩個實根,否則(b^2-4ac0)有兩個共軛復根。其程序段如下:
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語言感到無從下手,經常問我同一個問題:究竟怎樣學習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++程序設計語言》theC++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 fucking 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程序,使學生在親身實踐中體會到樂趣;另外,可以通過一些影片向學生介紹一些lT人士的經歷和成功經驗,增強學生學習C語言的信心和動力。
二、選擇適合中職教育的教材與教學方式。合理設置教學目標
中職學生普遍基礎知識不紮實。所以教材內容要強調基礎性,語言表達力求通俗淺顯易懂,以程序設計為主線,以編程應用為驅動,通過案例和問題引出知識重點,重點講解程序設計的思想和方法,穿插講解相關的語言知識,使教學效果既有深度又有廣度,選擇的教材盡量符合初學者的要求。
C語言最主要的教學方式除了教師上課就是讓學生上機實踐。這是很重要的`一個環節。教師講得再好。學生感覺「能看懂」「能聽懂」。卻不動手實踐,仍然掌握不了知識,更談不上運用。在上機過程中,學生可以進一步理解和掌握課堂所講知識,許多不清楚或不理解的問題通過上機操作可迎刃而解。在組織學生上機實踐過程中。教師要適當地設計一些難度適中的作業,激發學生開動腦筋,讓學生自己在有目的的情況下,去尋找解決的方法,讓其真正當學習的主人,最大限度地激勵學生的學習積極主動性。總之。我們應當十分重視動手編寫程序和上機運行程序。
教學目標是學生學習的目的。教學目標的定位,要根據教學對象的特點而定。就中職學生而言,教學目標是提高分析問題、解決問題的能力。重點分析程序設計過程,形成程序設計過程理念。能夠讀程序。編寫一些簡單程序,培養學生良好的編程習慣,逐步提高學生編程能力。C語言的學習只是程序設計的開端,所以我們教師不要設置好高鶩遠的教學目標。
三、分組教學,培養自學能力。注重培養團隊合作精神
由於中職學生自主學習能力、自控能力沒有大學生強,所以中職學生很容易失去上機興趣,也就達不到上機實踐的目的。為此,教師可適當轉變上機實踐的形式:以小組形式上機實踐。上機前分配給每個學習小組不同的學習任務。組長負責分工.讓本組學生利用課餘時間去思考、查詢收集資料,上機時各組分別完成相應任務。然後相互演示成果,分析優劣利弊,再互換任務,最後討論編程體會,取長補短。在此過程中教師適當指導,主要過程可由學生自行解決,讓學生在切磋的過程中自主學習並且培養團結合作的精神。
四、激勵式教學。適當引入考核機制,啟發學生求知慾
在教學中培養學生創造力需要用考核這個手段來激勵、鼓舞學生,考核應從兩個方面入手,可採用「問題式」「階段式的辦法。「問題式」就是根據學生課堂所學知識,在上機實踐課時,讓學生獨立解決一個實際應用題、完成一個小遊戲等。「階段式」就是把一個階段所學知識進行一次考核,但知識點不宜過多。有了考核機制.就能最大限度地激勵學生的學習潛能。
五、課後及時反饋,逐步改進教學方案和方法
要想提升教學業務水平,提高教學效果,就必須聽取多方面的建議與意見。首先要經常聽聽學生的心聲。學生就是上帝。學生的需求就是我們的追求與目標。其次來自教研組和教學檢查組。教研組和教學檢查組的意見具有指導作用。最後是來自企業調研。為了防止知識陳舊過時.我們教師可以通過暑期去軟件公司工作實踐和調研.了解他們的需求,切合實際需要.重新修改教學方案,讓學生能學以致用。
以上是本人在中職學校擔任計算機C語言課程教學的一些體會,我會在以後的教學中細心觀察,不斷地去探索研究.不斷豐富教學經驗,為中職教育事業貢獻一份力量。
論文相關查閱: 畢業論文範文 、 計算機畢業論文 、
怎麼用c語言計算圓周長和面積
代碼如下:
#includelt;stdio.hgt;
int main(){
int radius;
float area,perimeter;
radius=6;
perimeter=2*3.14*radius;
printf(“圓的周長=%f英寸\n”,perimeter);
area=3.14*radius*radius;
printf(“圓的面積=%f平方英寸\n”,area);
return(0);
}
2、c語言計算矩形的周長和面積
#includelt;stdio.hgt;
/*長方形的高和寬,單位為米*/
int width;
int height;
int area;
int perimeter;
int main(){
height=7;
width=5;
perimeter=2*(height+width);
printf(“矩形的周長=%d米\n”,perimeter);
area=height*width;
printf(“矩形的面積=%d平方米\n”,area);
return(0);
}
擴展資料:
使用C語言計算圓周長和面積的優勢:
1、簡潔緊湊、靈活方便
C語言一共只有32個關鍵字,9種控制語句,程序書寫形式自由,區分大小寫。把高級語言的基本結構和語句與低級語言的實用性結合起來。C語言可以像彙編語言一樣對位、位元組和地址進行操作,而這三者是計算機最基本的工作單元。
2、運算符豐富
C語言的運算符包含的範圍很廣泛,共有34種運算符。C語言把括號、賦值、強制類型轉換等都作為運算符處理。從而使C語言的運算類型極其豐富,表達式類型多樣化。靈活使用各種運算符可以實現在其它高級語言中難以實現的運算。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/248095.html