C語言學習-while循環、do-while、for循環


今天主要學習了循環結構

循環結構1-while循環

 

格式如下:

1 while ( 條件 )
2 {
3     語句1;
4     語句2;
5     ....
6 }

1)如果條件成立,就會執行循環體中的語句(“循環體”就是while后面大括號{}中的內容)。然后再次判斷條件,重復上述過程,直到條件不成立就結束while循環

2)while循環的特點:如果while中的條件一開始就不成立,那么循環體中的語句永遠不會被執行

例如:

 1 /*
 2 輸出十次hello world
 3 */
 4 int main(){
 5     
 6     int  i = 0;
 7 
 8     while (i < 10) {
 9        
10         printf("Hello world!----%d\n",i);
11         i++;
12   
13      }
14 
15 }

如果省略第11行的i++,count就一直是i,那么i<10一直都是成立的,這個while循環將會陷入“死循環”,一直在重復執行第10行代碼。

循環結構2-do while循環

格式如下:

1 do {
2     語句1;
3     語句2;
4      ...
5 } while (條件);

1)注意第5行,后面是加上一個分號;的

2)當執行到do-while循環時,首先會執行一遍循環體中的語句(“循環體”就是do后面大括號{}中的內容)。接着判斷while中的條件,如果條件成立,就執行循環體中的語句。然后再次判斷條件,重復上述過程,直到條件不成立就結束while循環

3)do-while循環的特點:不管while中的條件是否成立,循環體中的語句至少會被執行一遍

4)其實do while循環的用法跟while循環是差不多的,這里就不舉例子了。

循環結構3-for循環

for循環是所有循環結構中最復雜的。

1 for (語句1; 條件; 語句2) {
2     語句3;
3     語句4;
4     ...
5 }

1)for循環開始時,會先執行語句1,而且在整個循環過程中只執行一次語句1

2)接着判斷條件,如果條件成立,就會執行循環體中的語句(“循環體”就是for后面大括號{}中的內容)

3)循環體執行完畢后,接下來會執行語句2,然后再次判斷條件,重復上述過程,直到條件不成立就結束for循環

例如 :

 1 int main(){
 2 /*
 3 利用循環輸出:
 4   1
 5   1 2
 6   1 2 3
 7  */
 8     for (int i =1 ; i <= 3; i++) {
 9        for (int j = 1; j <= i; j++) {
10             printf("%d ",j);
11         }
12         printf("\n");
13         
14     }
15     
16     return 0;  
17 }

輸出結果為:

1
1 2
1 2 3

需要注意的是:變量i的作用域是第8~14行。一旦離開了這個第一層for循環,變量i就失效了,變量j的作用域是9~11行,一但離開內部for循環,變量j就失效了。

 總結:

 1.for最常用,通常用於知道循環次數的循環。

 2.while也很常⽤,通常用於不知道循環次數的循環。

 

break和continue

1.break

前面在switch語句中已經用到了break,它的作用是跳出switch語句。它也可以用在循環結構中,這時候它的作用是跳出整個循環語句。

這里以for循環為例子,break也可以用在while循環、do-while循環中。

1 for (int i = 0; i<5; i++) {
2     printf("i=%d \n", i);
3     
4     if (i>2) {
5         break;
6     }
7 }

上面代碼的意思是當i>2時,就跳出整個for循環,也就是結束for循環,所以輸出結果是:

i=0 
i=1 
i=2 
i=3

for循環嵌套

先來看一個for循環嵌套的例子,嵌套的意思就是:for循環內部又一個for循環

1 for (int x = 0; x<2; x++) {
2      for (int y = 0; y<2; y++) {
3          printf("x=%d, y=%d \n", x, y);
4      }
5  }

 

輸出結果是:

 x=0, y=0 
 x=0, y=1 
 x=1, y=0 
 x=1, y=1 

這個時候如果在for循環中加入一個break,那么這個break究竟是跳出里面還是外面的for循環呢?

1 for (int x = 0; x<2; x++) {
2      for (int y = 0; y<2; y++) {
3          printf("x=%d, y=%d \n", x, y);
4          
5          break;
6      }
7  }

注意第5行的break,這個break的作用是跳出里面的for循環,並非外面的for循環。所以輸出結果是:

x=0, y=0 
x=1, y=0 

 

如果改變一下break的位置

1  for (int x = 0; x<2; x++) {
2      for (int y = 0; y<2; y++) {
3          printf("x=%d, y=%d \n", x, y);
4      }
5     
6      break;
7  }

注意第6行的break,這個break的作用是跳出外面的for循環,並非里面的for循環。所以輸出結果是:

x=0, y=0 
x=0, y=1 
 
        

規律已經很明顯了:break只會影響它所在的那個for循環

2.continue

continue只能使用在循環結構中,它的作用是跳過這一次循環,直接進入下一次循環。

這里以for循環為例子,continue也可以用在while循環、do-while循環中。

1 for (int x = 0; x<10; x++) {
2      if (x%2==0) {
3          continue;
4      }
5     
6      printf("x=%d \n", x);
7  }

注意第2行,當x%2==0,也就是當x是2的倍數時,就跳過這次循環,不執行第6行語句,直接進入下一次循環。輸出結果:

x=1 
x=3 
x=5 
x=7 
x=9 

跟break一樣,continue只會影響它所在的那個for循環

 


免責聲明!

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



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