<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應用 > 初學C語言程序設(shè)計的基本方法和技巧

          初學C語言程序設(shè)計的基本方法和技巧

          作者: 時間:2014-01-17 來源:網(wǎng)絡 收藏

          是對于初學者來說最難的一部分,也就是把我們剛才分析過程轉(zhuǎn)換成語句。

          這需要學好的三種程序結(jié)構(gòu)。(1)順序結(jié)構(gòu);順序結(jié)構(gòu)的是最簡單的,只要按照解決問題的順序?qū)懗鱿鄳恼Z句就行,它的執(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)的方法的關(guān)鍵在于構(gòu)造合適的分支條件和分析程序流程,根據(jù)條件的結(jié)果選擇對應的分支語句。選擇結(jié)構(gòu)適合于帶有邏輯或關(guān)系比較等條件判斷的

          計算,設(shè)計這類程序時往往都要先繪制其程序流程圖,然后根據(jù)程序流程寫出源程序,這樣做把分析與語言分開,使得問題簡單化,易于理解。程序流程圖是根據(jù)解題分析所繪制的程序執(zhí)行流程圖。

          例如上例中,把我們頭腦中很快閃過的這些判斷過程畫成流程圖,根據(jù)流程圖再寫出對應的語句就比較容易了。如下所示:

          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時,其絕對值不變,而x0時其絕對值是為x的反號,因此程序段為:if(x0)x=-x;

          ②if(條件)

          {分支1}

          else

          {分支2}

          這是典型的分支結(jié)構(gòu),如果條件成立,執(zhí)行分支1,否則執(zhí)行分支2,分支1和分支2都可以是1條或若干條語句構(gòu)成。如:求某年的年號是否是閏年。分析:因為當某年號能被4整除 但不能被100整除,則這一年是閏年;或者這一年號能被4 0 0整除也是閏年。即year%4==0year%100!=0||year%400==0其程序段如下:

          i f(y e a r%4==0y e a r%1 0 0!=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重嵌套后,語句結(jié)構(gòu)變得非常復雜,對于程序的閱讀和理解都極為不便,建議嵌套在3重以內(nèi),超過3重可以用switch語句。

          ④switch開關(guān)語句:該語句也是多分支選擇語句,到底執(zhí)行哪一塊,取決于開關(guān)設(shè)置,也就是表達式的值與常量表達式相匹配的那一路,它不同if…else語句,它的所有分支都是并列的,程序執(zhí)行時,由第一分支開始查找,如果相匹配,執(zhí)行其后的塊,接著執(zhí)行第2分支,第3分支……的塊,直到遇到break語句;如果不匹配,查找下一個分支是否匹配。這個語句在應用時要特別注意開關(guān)條件的合理設(shè)置以及break語句的合理應用。

          (3)循環(huán)結(jié)構(gòu)

          循環(huán)結(jié)構(gòu)可以減少源程序重復書寫的工作量,用來描述重復執(zhí)行某段算法的問題,這是程序設(shè)計中最能發(fā)揮計算機特長的程序結(jié)構(gòu),中提供三種循環(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)應包含趨于結(jié)束的語句(即循環(huán)變量值的改變),否則就可能成了一個死循環(huán),這是初學者的一個常見錯誤。

          在學完這三個循環(huán)后,應明確它們的異同點:用while和do…while循環(huán)時,循環(huán)變量的初始化的操作應在循環(huán)體之前,而for循環(huán)一般在語句1中進行的;while循環(huán)和for循環(huán)都是先判斷表達式,后執(zhí)行循環(huán)體,而d o…while循環(huán)是先執(zhí)行循環(huán)體后判斷表達式,也就是說do…while的循環(huán)體最少被執(zhí)行一次,而while循環(huán)和for就可能一次都不執(zhí)行。

          c語言相關(guān)文章:c語言教程



          上一頁 1 2 下一頁

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();