天天看點

分析C語言中常見的三種循環語句

目錄

​​(一)引言​​

​​(二)利用while語句實作的循環​​

​​(三)利用do…while語句實作的循環​​

​​(四)while語句和do…while語句對比            ​​

​​(五)利用for語句實作的循環​​

​​(六)如何選擇循環​​

(一)引言

       在c語言的學習中,我們會學習到循環結構的程式設計,對于循環結構我們常見的有while循環語句、do…while循環語句和for循環語句這三種,當然我們或許還會見到if和goto搭配使用的循環語句。這裡我們就簡單提一下後者這種語句。

首先,goto我們能從表面知道是“去到”這樣的意思,其實我們可以簡單的了解為“傳回”。下面我們來看一組代碼:

#include<stdio.h>
main(void)
{    int i,sum=0;
     i=1;
loop:if(i<=100)
    {sum+=i;
    i++;
    goto loop;
    }
printf("%d\n",sum);
}      

 上述代碼是簡單的求和程式,i的初始值為1,在if條件下,完成求和,當完成循環變量增值這一步之後,若i的值仍然滿足i<=100時,則繼續執行循環體,直到不再滿足條件時,程式運作結束。(loop在if與goto構成的循環中起到語句标号的作用)。值得一提的是,該類型循環語句屬于無條件轉移語句,但是為什麼我們還要學習另外的三種語句呢?原因是因為語句标号的條件和goto語句的不友善性:

  1. 不能用整數作為語句标号;
  2. 隻能出現在goto函數當中,且唯一;
  3. 标号隻能加在可執行語句前面;
  4. 限制使用goto語句(盡量不用),goto語句在一個程式中使用多次必然會使人眼花缭亂。

下面這段代碼可以作為了解,感受一下if與goto構成的循環語句。

#include<stdio.h>
main()
{    int number,sum=0;
read_loop:scanf("%d",&number);
        if(!number)goto print_sum;
        sum+=number;
        goto read_loop;
print_sum:printf("The total sum is %d\n",sum);
}      

當然,也不能全否定goto語句,在某些特定情況下,使用goto語句還是非常友善的。下面就說一下C語言中常用的三種循環語句。

(二)利用while語句實作的循環

while語句循環的一般形式:while(expression)

                                                    statement;

statement部分可以是簡單語句,也可以是花括号括起來的複合語句。

分析C語言中常見的三種循環語句

如果表達式為真(簡單地說就是非零),執行語句部分一次,然後判斷表達式。在表達式假(0)之前,循環的判斷和執行将會一直重複。而每次循環都被成為一次疊代。

while語句循環的終止

在建構while語句中,有一個非常重要的一點,那就是保證測試值有變化,表達式最終要為假。否則,循環将會一直進行下去。例如下面這段程式:

index=1;
while(index<5);
    printf("Good morning!\n");      

上述程式段的運作結果是:出現無限個Good morning!。那麼原因是什麼呢?沒錯,就是因為在循環中index的值從未發生改變(一直是1)。我們簡單的對上述代碼進行修改如下:

index=1;
while(--index<5)
    printf("Good morning!\n");      

第二段代碼雖然改變了index的值,但是與第一段代碼相比,并沒有多大的改進,但是至少當此段代碼在index減少到其類型可容納的最小負值并變成最大正值時終止循環。

說明:

  • 循環體可能一次也不執行
  • 循環體可為任意類型語句
  • 下列情況退出while循環:<1>條件表達式不成立(為零)
  • <2>循環體内遇到break,return,goto
  • 無限循環while(l)

                           循環體;//進入死循環 

注意:使用while時,要牢記一點,隻有在測試條件後的單獨語句(簡單語句或者複合語句)才是循環語句。

(三)利用do…while語句實作的循環

do…while語句循環的一般形式:do

                                                      statement

                                                  while(expresssion);

分析C語言中常見的三種循環語句

do while語句是一種出口條件循環,即在執行完循環體後才根據測試條件決定是否再次執行環。 do while循環在執行完循環體後才執行測試條件,是以至少執行循環體一次;該類循環适用于那些至少要疊代一次的循環。比如:輸入我們在登陸賬号輸入密碼的環節。

(四)while語句和do…while語句對比            

分析C語言中常見的三種循環語句
分析C語言中常見的三種循環語句
  • 結論:當while後面的表達式的第一次的值為“真”時,兩種循環得到的結果相同;否則,

             兩者結果不相同(指兩者具有相同的循環體的情況)。

(五)利用for語句實作的循環

for語句的一般形式:for(initialize;test;update)statement

在test為假或0之前,重複執行statement部分。

示例:

for (initialize; test; update)
    printf("%d%d\n",n,2*n+1);      
分析C語言中常見的三種循環語句

 注意:for語句中的三個語句需要用";"分隔開。initialize表達式在執行for語句之前隻執行一次;然後對test表達式求值,如果表達式為真,則執行循環一次,接着對update表達式進行求值,并再次檢驗test表達式。for語句可能一次都不執行。

for語句和while語句的轉換:

  • 可以改寫為while語句如下:

for(initialize;test;update)statement可以改寫為while語句如下:

initialize;

while test;

{

statement

update

}

二者無條件

(六)如何選擇循環

首先,需要确定選擇出口條件循環還是入口條件循環。一般而言,入口條件循環使用的比較多,理由如下:

  • 一般原則是在執行循環之前進行測試條件比較好;
  • 測試放在循環開頭,使程式的可讀性更高;
  • 在許多應用中,要求在一開始不滿足測試條件時就直接跳過整個循環。

繼續閱讀