程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C >> C語言基礎知識 >> C語言while語句

C語言while語句

編輯:C語言基礎知識
在C語言中,共有三大常用的程序結構:
  • 順序結構:代碼從前往後執行,沒有任何“拐彎抹角”;
  • 選擇結構:也叫分支結構,重點要掌握 if else、switch 以及條件運算符;
  • 循環結構:重復執行同一段代碼。

前面講解了順序結構和選擇結構,本節開始講解循環結構。所謂循環(Loop),就是重復地執行同一段代碼,例如要計算 1+2+3+……+99+100 的值,就要重復進行99次加法運算。

while循環

while循環的一般形式為:

while(表達式){
    語句塊
}

意思是,先計算“表達式”的值,當值為真(非0)時, 執行“語句塊”;執行完“語句塊”,再次計算表達式的值,如果為真,繼續執行“語句塊”……這個過程會一直重復,直到表達式的值為假(0),就退出循環,執行 while 後面的代碼。

我們通常將“表達式”稱為循環條件,把“語句塊”稱為循環體,整個循環的過程就是不停判斷循環條件、並執行循環體代碼的過程。

用 while 循環計算1加到100的值:
#include <stdio.h>
int main(){
    int i=1, sum=0;
    while(i<=100){
        sum+=i;
        i++;
    }
    printf("%d\n",sum);
    return 0;
}
運行結果:
5050

代碼分析:
1) 程序運行到 while 時,因為 i=1,i<=100 成立,所以會執行循環體;執行結束後 i 的值變為 2,sum 的值變為 1。

2) 接下來會繼續判斷 i<=100是否成立,因為此時 i=2,i<=100 成立,所以繼續執行循環體;執行結束後 i 的值變為 3,sum 的值變為3。

3) 重復執行步驟 2)。

4) 當循環進行到第100次,i 的值變為 101,sum 的值變為5050;因為此時 i<=100 不再成立,所以就退出循環,不再執行循環體,轉而執行while循環後面的代碼。

while 循環的整體思路是這樣的:設置一個帶有變量的循環條件,也即一個帶有變量的表達式;在循環體中額外添加一條語句,讓它能夠改變循環條件中變量的值。這樣,隨著循環的不斷執行,循環條件中變量的值也會不斷變化,終有一個時刻,循環條件不再成立,整個循環就結束了。

如果循環條件中不包含變量,會發生什麼情況呢?

1) 循環條件成立時的話,while 循環會一直執行下去,永不結束,成為“死循環”。例如:
#include <stdio.h>
int main(){
    while(1){
        printf("1");
    }
    return 0;
}
運行程序,會不停地輸出“1”,直到用戶強制關閉。

2) 循環條件不成立的話,while 循環就一次也不會執行。例如:
#include <stdio.h>
int main(){
    while(0){
        printf("1");
    }
    return 0;
}
運行程序,什麼也不會輸出。

再看一個例子,統計從鍵盤輸入的一行字符的個數:
#include <stdio.h>
int main(){
    int n=0;
    printf("Input a string:");
    while(getchar()!='\n') n++;
    printf("Number of characters: %d\n", n);
    return 0;
}
運行結果:
Input a string:c.biancheng.net↙
Number of characters: 15

本例程序中的循環條件為getchar()!='\n',其意義是,只要從鍵盤輸入的字符不是回車就繼續循環。循環體n++;完成對輸入字符個數計數。

do-while循環

除了while循環,在C語言中還有一種 do-while 循環。

do-while循環的一般形式為:

do{
    語句塊
}while(表達式);

do-while循環與while循環的不同在於:它會先執行“語句塊”,然後再判斷表達式是否為真,如果為真則繼續循環;如果為假,則終止循環。因此,do-while 循環至少要執行一次“語句塊”。

用do-while計算1加到100的值:
#include <stdio.h>
int main(){
    int i=1, sum=0;
    do{
        sum+=i;
        i++;
    }while(i<=100);
    printf("%d\n", sum);
    return 0;
}
運行結果:
5050
注意while(i<=100);最後的分號;,這個必須要有。
while循環和do-while各有特點,大家可以適當選擇,實際編程中使用while循環較多。
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved