久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 1855|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

初學(xué)C語(yǔ)言程序設(shè)計(jì)的基本方法和技巧

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:107189 發(fā)表于 2016-3-5 17:01 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
無(wú)論哪所大學(xué)的計(jì)算機(jī)專科和本科都需要學(xué)習(xí)C語(yǔ)言《,C語(yǔ)言程序設(shè)計(jì)》是計(jì)算機(jī)專業(yè)的一門(mén)必修課程,也是學(xué)習(xí)如何編程的入門(mén)課。初學(xué)C語(yǔ)言的人都會(huì)覺(jué)得C語(yǔ)言不好學(xué),感到無(wú)從下手。其實(shí),按照我們現(xiàn)在的教學(xué)大綱和教學(xué)要求,只要同學(xué)們掌握一些方法,多讀,多寫(xiě),克服心理上畏難情緒,C語(yǔ)言是完全可以學(xué)好的并且靈活應(yīng)用的。我總結(jié)了多年的《C語(yǔ)言程序設(shè)計(jì)》課程的教學(xué)經(jīng)驗(yàn)和學(xué)生在學(xué)習(xí)過(guò)程中常見(jiàn)的一些問(wèn)題,在些介紹一些C語(yǔ)言的學(xué)習(xí)和編程技巧,希望給初學(xué)C語(yǔ)言的同學(xué)有一定幫助。

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


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 久久久天堂| 伊人伊成久久人综合网站 | 亚洲一区二区三区福利 | 日韩中文不卡 | 日韩高清中文字幕 | 日韩电影a | 日韩激情在线 | 国产亚洲精品久久情网 | 精品国产乱码久久久久久闺蜜 | 久久久99精品免费观看 | 日韩在线综合 | 一区二区三区免费在线观看 | 欧美一区二区三区大片 | 日韩中文字幕免费在线 | 天天操天天射天天 | 毛片在线免费 | 91免费福利在线 | 亚洲一区二区在线视频 | 91精品在线播放 | 久久久爽爽爽美女图片 | 九色一区| 日本久久精品视频 | 一区二区三区视频在线观看 | 99热欧美 | 九九热精品在线视频 | 黄色片av | 国产精品福利视频 | 九九久久精品视频 | 色婷婷影院| 国产丝袜一区二区三区免费视频 | 国产精品日本一区二区在线播放 | 日本三级电影在线免费观看 | 三区在线 | 久久国产精品偷 | 久久狠狠| 欧美1区2区 | 午夜精品久久久久久久星辰影院 | 精品久久电影 | 成年人在线观看 | 欧美高清dvd | 成人中文字幕在线 |