初學C語言程序設(shè)計的基本方法和技巧_第1頁
初學C語言程序設(shè)計的基本方法和技巧_第2頁
初學C語言程序設(shè)計的基本方法和技巧_第3頁
初學C語言程序設(shè)計的基本方法和技巧_第4頁
初學C語言程序設(shè)計的基本方法和技巧_第5頁
全文預覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

無論哪所大學的計算機??坪捅究贫夹枰獙W習C語言《,C語言程序設(shè)計》是計算機專業(yè)的一門必修課程,也是學習如何編程的入門課。初學C語言的人都會覺得C語言不好學,感到無從下手。其實,按照我們現(xiàn)在的教學大綱和教學要求,只要同學們掌握一些方法,多讀,多寫,克服心理上畏難情緒,C語言是完全可以學好的并且靈活應(yīng)用的。我總結(jié)了多年的《C語言程序設(shè)計》課程的教學經(jīng)驗和學生在學習過程中常見的一些問題,在些介紹一些C語言的學習和編程技巧,希望給初學C語言的同學有一定幫助。C語言是一門應(yīng)用最廣泛的基礎(chǔ)高級編程語言,有很多語言都是由它發(fā)展而來的,所以學習好C語言之后再學習任何一種編程語言都會輕松上手。1熟記基本知識點學習C語言和學習任何一種語言的方法基本一樣。我們嬰兒期間咿呀學語時,從一個字開始學,然后兩個,接著更多,最后我們能成句,成段,到出口成章。學習C語言的時候也一樣,有些最基本的內(nèi)容必須要記下來。1.1關(guān)鍵字關(guān)鍵字是由C語言規(guī)定的具有特定意義的字符串。它們是寫C語言的基礎(chǔ),如果關(guān)鍵字不記下來,那編程是寸步難行。1.2運算符C語言中的運算符和表達式與我們數(shù)學上的運算符和表達式有相同的,也有不同的。我們在學習的時候就注意記住并弄清楚那些不同的地方?;镜恼Z法表達式及執(zhí)行過程。選擇結(jié)構(gòu)中的if語句和switch語句。循環(huán)語句中的for語句、while語句和do-while語句。這部分就好比是你會了許多詞,然后得把這些詞組成一些句子,語法的作用就是告訴你怎樣說好一句話,表達清楚的意思。1.3常用庫函數(shù)在這里最重要有兩個函數(shù):輸入函數(shù)scanf()和輸出函數(shù)printf()。一個程序如果沒有輸入,那無論運行多少次結(jié)果都一樣,那也就失去了寫程序的目的了。同樣一個程序如果沒有輸出,那運行程序有什么意義呢?當然輸出的形式比較多。在初學C語言的時候主要是從屏幕上輸出結(jié)果。所以這兩個函數(shù)的使用方法也必須要掌握。這兩個函數(shù)已經(jīng)定義在stdio.h這個頭文件中,不用我們自己寫,它們不是C語言中的語句,所以在使用這兩個函數(shù)時在源程序頂部一定要加上#include<stdio.h>。這是為了讓我們在執(zhí)行程序的時候,讓計算機知道scanf()和printf()這兩個函數(shù)怎么用。掌握上面的必須要記下來的內(nèi)容,相當于我們開始學說話時先聽別人說,我們自己跟著學一些最基本的日常語言。這時我們就可以從一些簡單的程序開始讀,能把每一個程序的運行結(jié)果能自己讀程序準確地執(zhí)行出來,那樣我們就可以開始來編寫程序了。2掌握程序的基本結(jié)構(gòu)編寫程序一定要注意程序的結(jié)構(gòu)性。學習寫程序,不能開始就寫代碼。許多人在動手寫程序的時候感到無從下筆。原因主要是:看到一個題目不知道如何去分析,它怎么才能變成一個程序呢?這是初學者在編寫程序的主要問題。我在教學中采用了一種分步式的方法。2.1看到一個題目的時候先別想著編程序,用一個具體的實例想想不用程序你是如何解決這個問題的例如輸入三個數(shù),輸出最小值。我們用3,8,6三個數(shù)來考慮,我們一看就知道3是最小的??墒俏覀冞@一看中其實并不簡單,其中有判斷。我們先看第一個數(shù)3,然后已經(jīng)記在我們頭腦中了,再看第二個數(shù)8,3比8小,那我們還是記住3,再比較第3個數(shù)6,最后確定3是最小的。我們現(xiàn)在就是要把我們頭腦中很快閃過的這些判斷過程想清楚。2.2我們要弄清楚一個程序由哪些部分組成這就好比我們寫一篇文章也有一些結(jié)構(gòu)。一個C程序也有其一般結(jié)構(gòu),我把它歸納成下面格式。#include<stdio.h>main(){定義變量;int,float,char,double輸入數(shù)據(jù);鍵盤輸入scanf();直接賦值;例如x=3;處理數(shù)據(jù);if-else;switch;for;while;do-while;輸入數(shù)據(jù);printf();}第一行代碼表示把標準的輸入輸出頭文件包含在這個程序中。第二行代碼是C程序的主函數(shù),每個C程序中必須有且僅有一個main()函數(shù)。然后是函數(shù)的一對"{}”。定義變量的意思好比買一塊地,有了這塊地就可以在上面蓋房、種莊稼之類的。但是為了便于統(tǒng)一管理,比如城市已經(jīng)規(guī)劃好了,你在郊區(qū)買的地就只能種莊稼,在市中心買的,就只能蓋房,這就是變量類型的含義了。用上面求最小值的例子。我們在三個數(shù)中求最小值。這三個是什么數(shù),是整數(shù)還是小數(shù)?這就必須用變量類型來說明。對于上例應(yīng)該定義三個整型變量用來存放三個整數(shù),還要定義一個整型變量用來存放最小值。如:inta,b,c,min;這行代碼的作用其實是要了一塊內(nèi)存,然后在這塊內(nèi)存里存東西。因為我需要一個整數(shù),所以就用int這個關(guān)鍵字來聲明(相當于用這塊地干什么)。那么變量a,b,c是什么呢?你買了一塊地,總要知道這塊地在哪是吧?不然就白買了,變量就是這樣一個作用。我們需要把數(shù)據(jù)存在計算機中,什么樣的數(shù)就定義什么樣的類型,需要存幾個數(shù)就定義幾個變量。輸入數(shù)據(jù)有兩種方法。第一種從鍵盤輸入,就需要用到scanf()這個函數(shù);第二種是直接賦值。處理數(shù)據(jù)是對于初學者來說最難的一部分,也就是把我們剛才分析過程轉(zhuǎn)換成語句。這需要學好C語言的三種程序結(jié)構(gòu)。(1)順序結(jié)構(gòu);順序結(jié)構(gòu)的程序設(shè)計是最簡單的,只要按照解決問題的順序?qū)懗鱿鄳?yīng)的語句就行,它的執(zhí)行順序是自上而下,依次執(zhí)行。順序結(jié)構(gòu)可以獨立使用構(gòu)成一個簡單的完整程序,不過大多數(shù)情況下順序結(jié)構(gòu)都是作為程序的一部分,與其它結(jié)構(gòu)一起構(gòu)成一個復雜的程序,例如分支結(jié)構(gòu)中的復合語句、循環(huán)結(jié)構(gòu)中的循環(huán)體等。(2)選擇結(jié)構(gòu);對于要先做判斷再選擇的問題就要使用分支結(jié)構(gòu)。選擇結(jié)構(gòu)的執(zhí)行是依據(jù)一定的條件選擇執(zhí)行路徑,而不是嚴格按照語句出現(xiàn)的物理順序。選擇結(jié)構(gòu)的程序設(shè)計方法的關(guān)鍵在于構(gòu)造合適的分支條件和分析程序流程,根據(jù)條件的結(jié)果選擇對應(yīng)的分支語句。選擇結(jié)構(gòu)適合于帶有邏輯或關(guān)系比較等條件判斷的計算,設(shè)計這類程序時往往都要先繪制其程序流程圖,然后根據(jù)程序流程寫出源程序,這樣做把程序設(shè)計分析與語言分開,使得問題簡單化,易于理解。程序流程圖是根據(jù)解題分析所繪制的程序執(zhí)行流程圖。例如上例中,把我們頭腦中很快閃過的這些判斷過程畫成流程圖,根據(jù)流程圖再寫出對應(yīng)的語句就比較容易了。如下所示:min=a;if(min>b)min=b;if(min>c)min=c;學習分支結(jié)構(gòu)不要被分支嵌套所迷惑,只要正確繪制出流程圖,弄清各分支所要執(zhí)行的部分,嵌套結(jié)構(gòu)也就不難了。嵌套只不過是分支中又包括分支語句而已,不是新知識,只要對雙分支的理解清楚,分支嵌套是不難的。下面我介紹幾種基本的分支結(jié)構(gòu)。if(條件){分支體}這種分支結(jié)構(gòu)中的分支體可以是一條語句,此時“{}”可以省略,也可以是多條語句即復合語句。它有兩條分支路徑可選,一是當條件為真,執(zhí)行分支體,否則跳過分支體,這時分支體就不會執(zhí)行。如:要計算x的絕對值,根據(jù)絕對值定義,我們知道,當x>=0時,其絕對值不變,而x<0時其絕對值是為x的反號,因此程序段為:if(x<0)x=-x;if(條件){分支1}else{分支2}這是典型的分支結(jié)構(gòu),如果條件成立,執(zhí)行分支1,否則執(zhí)行分支2,分支1和分支2都可以是1條或若干條語句構(gòu)成。如:求某年的年號是否是閏年。分析:因為當某年號能被4整除但不能被100整除,則這一年是閏年;或者這一年號能被400整除也是閏年。即year%4=0&&year%100!=0llyear%400=0其程序段如下:if(year%4==0&&year%100!=0llyear%400==0)printf"(%disleapyear!”,year);elseprintf"(%disnotleapyear!”,year);}嵌套分支語句:其語句格式為:if(條件1){分支1};elseif(條件2){分支2}elseif(條件3){分支3}elseif(條件n){分支n}else{分支n+1}嵌套分支語句雖可解決多個入口和出口的問題,但超過3重嵌套后,語句結(jié)構(gòu)變得非常復雜,對于程序的閱讀和理解都極為不便,建議嵌套在3重以內(nèi),超過3重可以用switch語句。④switch開關(guān)語句:該語句也是多分支選擇語句,到底執(zhí)行哪一塊,取決于開關(guān)設(shè)置,也就是表達式的值與常量表達式相匹配的那一路,它不同if-else語句,它的所有分支都是并列的,程序執(zhí)行時,由第一分支開始查找,如果相匹配,執(zhí)行其后的塊,接著執(zhí)行第2分支,第3分支……的塊,直到遇到break語句;如果不匹配,查找下一個分支是否匹配。這個語句在應(yīng)用時要特別注意開關(guān)條件的合理設(shè)置以及break語句的合理應(yīng)用。(3)循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)可以減少源程序重復書寫的工作量,用來描述重復執(zhí)行某段算法的問題,這是程序設(shè)計中最能發(fā)揮計算機特長的程序結(jié)構(gòu),C語言中提供三種循環(huán),即while循環(huán)、dowhile循環(huán)和for循環(huán)。三種循環(huán)可以用來處理同一問題,一般情況下它們可以互相代替換,另外還有一種goto循環(huán)語句,因為強制改變程序的順序經(jīng)常會給程序的運行帶來不可預料的錯誤,所以不提倡使用。常用的三種循環(huán)結(jié)構(gòu)學習的重點在于弄清它們相同與不同之處,以便在不同場合下使用,這就要清楚三種循環(huán)的格式和執(zhí)行順序,將每種循環(huán)的流程圖理解透徹后就會明白如何替換使用,就能更好地理解它們的作用。在分析循環(huán)結(jié)構(gòu)的語句時要開清楚,什么時候開始循環(huán)(即循環(huán)的初始值);什么時候結(jié)束循環(huán)(即循環(huán)的終止條件);循環(huán)的時候都做哪些操作(即循環(huán)體的執(zhí)行部分);特別要注意在循環(huán)體內(nèi)應(yīng)包含趨于結(jié)束的語句(即循環(huán)變量值的改變),否則就可能成了一個死循環(huán),這是初學者的一個常見錯誤。在學完這三個循環(huán)后,應(yīng)明確它們的異同點:用while和do-while循環(huán)時,循環(huán)變量的初始化的操作應(yīng)在循環(huán)體之前,而for循環(huán)一般在語句1中進行的;while循環(huán)和for循環(huán)都是先判斷表達式,后執(zhí)行循環(huán)體,而do—while循環(huán)是先執(zhí)行循環(huán)體后判斷表達式,也就是說do—while的循環(huán)體最少被執(zhí)行一次,而while循環(huán)和for就可能一次都不執(zhí)行。順序結(jié)構(gòu)、分支結(jié)構(gòu)和循環(huán)結(jié)構(gòu)并不彼此孤立的,在循環(huán)中可以有分支、順序結(jié)構(gòu),分支中也可以有循環(huán)、順序結(jié)構(gòu),其實不管哪種結(jié)構(gòu),我們均可廣義的把它們看成一個語句。在實際編程過程中常將這三種結(jié)構(gòu)相互結(jié)合以實現(xiàn)各種算法,設(shè)計出相應(yīng)程序,但是要編程的問題較大,編寫出的程序就往往很長、結(jié)構(gòu)重復多,造成可讀性差,難以理解,解決這個問題的方法是將C程序設(shè)計成模塊化結(jié)構(gòu)。輸出數(shù)據(jù)是每一個程序必須包含的部分。在C程序中的輸出通常是從顯示屏上輸出最后的結(jié)果,使用printf()這個函數(shù)。3掌握一些簡單常用的算法編程其實一大部分工作就是分析問題,找到解決問題的方法,再以相應(yīng)的編程語言寫出代碼。這就好比我們學習寫作文段落的時候都有一些經(jīng)典的好詞好句,可以使文章添彩。同樣程序雖然可以實現(xiàn)各種功能,但最基本的一些算法并不是特別多,我們掌握一些簡單的算法,在掌握這些基本算法后,根據(jù)不同的問題,再靈活應(yīng)用。如百錢買百雞的問題,就是用100元錢買100只雞,公雞5元一只,母雞3元一只,小雞1元三只。這種問題用數(shù)學方法可以列出方程:x+y+z=1005*x+3*y+z/3=100按數(shù)學方法三個未知數(shù)兩個方程無解,實際上是可以解的,如果把公雞,母雞和小雞可能的只數(shù)全部代入到方程中檢驗就可以得到最后結(jié)果。這種方法叫窮舉法。如果我們用手算那可能要花上半天的功夫,但讓計算機來算就只需要1秒種。使用算法后分析和處理問題都會簡單很多。當我們能熟練地掌握了簡單算法后就能實現(xiàn)一些比較復雜的編程問題了。任何程序只要有思維,有想法,那么實現(xiàn)程序時就不會覺得無從下手。而要學習這種思維方法就是多做題,多讀程

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論