今天主要學習了循環結構學習
格式以下:spa
1 while ( 條件 ) 2 { 3 語句1; 4 語句2; 5 .... 6 }
1)若是條件成立,就會執行循環體中的語句(「循環體」就是while後面大括號{}中的內容)。而後再次判斷條件,重複上述過程,直到條件不成立就結束while循環code
2)while循環的特色:若是while中的條件一開始就不成立,那麼循環體中的語句永遠不會被執行blog
例如:作用域
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行代碼。it
格式以下:for循環
1 do { 2 語句1; 3 語句2; 4 ... 5 } while (條件);
1)注意第5行,後面是加上一個分號;的class
2)當執行到do-while循環時,首先會執行一遍循環體中的語句(「循環體」就是do後面大括號{}中的內容)。接着判斷while中的條件,若是條件成立,就執行循環體中的語句。而後再次判斷條件,重複上述過程,直到條件不成立就結束while循環變量
3)do-while循環的特色:無論while中的條件是否成立,循環體中的語句至少會被執行一遍循環
4)其實do while循環的用法跟while循環是差很少的,這裏就不舉例子了。
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也很常⽤,一般用於不知道循環次數的循環。
前面在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循環
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循環
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循環