C語言while語句


在C語言中,共有三大常用的程序結構:

  • 順序結構:代碼從前往后執行,沒有任何“拐彎抹角”;
  • 選擇結構:也叫分支結構,重點要掌握 if else、switch 以及條件運算符;
  • 循環結構:重復執行同一段代碼。


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

while循環

while循環的一般形式為:

while(表達式){
    語句塊
}

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

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

用 while 循環計算1加到100的值:

  1. #include <stdio.h>
  2. int main(){
  3. int i=1, sum=0;
  4. while(i<=100){
  5. sum+=i;
  6. i++;
  7. }
  8. printf("%d\n",sum);
  9. return 0;
  10. }

運行結果:
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 循環會一直執行下去,永不結束,成為“死循環”。例如:

  1. #include <stdio.h>
  2. int main(){
  3. while(1){
  4. printf("1");
  5. }
  6. return 0;
  7. }

運行程序,會不停地輸出“1”,直到用戶強制關閉。

2) 循環條件不成立的話,while 循環就一次也不會執行。例如:

  1. #include <stdio.h>
  2. int main(){
  3. while(0){
  4. printf("1");
  5. }
  6. return 0;
  7. }

運行程序,什么也不會輸出。

再看一個例子,統計從鍵盤輸入的一行字符的個數:

  1. #include <stdio.h>
  2. int main(){
  3. int n=0;
  4. printf("Input a string:");
  5. while(getchar()!='\n') n++;
  6. printf("Number of characters: %d\n", n);
  7. return 0;
  8. }

運行結果:
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的值:

  1. #include <stdio.h>
  2. int main(){
  3. int i=1, sum=0;
  4. do{
  5. sum+=i;
  6. i++;
  7. }while(i<=100);
  8. printf("%d\n", sum);
  9. return 0;
  10. }

運行結果:
5050

注意 while(i<=100);最后的分號 ;,這個必須要有。

while循環和do-while各有特點,大家可以適當選擇,實際編程中使用while循環較多。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM