迴圈結構 <!--EndFragment--> <!--EndFragment--> 【寫在開頭:】 『 生活中的迴圈: C語言中的迴圈: 迴圈結構是程式中一種很重要的結構。其特點是,在給定的條件成立時,反覆執行某程式段,直到條件不成立為止。 C語言中提供了多種迴圈語句: 1)goto語句和if構成 ...
迴圈結構
--------------------------
--1-- 結構迴圈1.1 while迴圈1.2 do…while迴圈1.3 for迴圈--2-- break和continue2.1 break關鍵字2.2 continue關鍵字
--------------------------
【寫在開頭:】
『
生活中的迴圈:
C語言中的迴圈:
迴圈結構是程式中一種很重要的結構。其特點是,在給定的條件成立時,反覆執行某程式段,直到條件不成立為止。
C語言中提供了多種迴圈語句:
1)goto語句和if構成迴圈(已經被摒棄)
2)while語句
3)do-while語句
4)for語句
構成迴圈的幾個條件:
一般來說一個迴圈需要以下幾部分構成
1)迴圈控制條件
迴圈退出主要依據
2)迴圈體
迴圈過程中重覆執行的代碼塊。
3)能夠讓迴圈結束的語句(遞增、遞減、真、假等)
』
--1-- 結構迴圈
1.1 while迴圈
1)語法格式
while(條件)
{
語句1;
語句2;
…
語句n;
}
2)while迴圈執行特點
當條件成立時一直執行程式體。
3)示例
從鍵盤上輸入一個數n,計算1+2+3…+n的值。
//定義變數 int i = 1, n = 0, sum = 0; //接受鍵盤輸入n並賦值給變數n printf("請輸入累加上限:\n"); scanf("%d",&n); //while迴圈條件小於n while (i <= n) { sum += i; //累加 i++; } printf("從1累加到%d的值是:%d\n",n,sum);
4)補充
scanf的原理:如果輸入緩衝區不為空,則不會讓用戶再次輸入內容,而直接沖緩衝區中繼續獲取。
最簡單的死迴圈:while(1);
1.2 do…while迴圈
1)語法格式
do{
語句1;
語句2;
…
語句n;
}while(條件);
2)do…while迴圈的特點:
不管while中的條件是否成立,至少會執行一次迴圈體。
3)while和dowhile的迴圈類型不同
while迴圈是一個當型迴圈,當條件滿足時再執行迴圈體;
do…while迴圈是直到型迴圈,先執行迴圈體,再判斷條件,直到條件為假時結束。
4)do...while示例
int x = -3; do{ printf("do...while\n"); x--; }while (x > 0); //do...while迴圈 無論條件是否滿足,迴圈體都會執行一次
1.3 for迴圈
1)for語法格式
C語言中for語句的使用最為靈活,完全可以代替while語句
一般形式:
for(表達式1;表達式2;表達式3){
語句塊;
}
2)for迴圈執行過程
執行順序:
1)先求表達式1,給i初始化
2)求解表達式2,若其值為真(非0),則執行for語句中指定的內嵌語句-->表達式3
3)執行表達式4
-->迴圈完一遍之後執行第二步,再依次往下
註意:步驟1)在整個迴圈中只執行一次
3)for迴圈的其他形式
1)表達式1省略
int i = 0; for (; i < 5; i++){ printf("%d", i); }
2)表達式1、3省略
int i = 0; for (; i < 5;){ printf("%d", i); i++; }
3)表達式1、2、3省略
int i = 0; for(;;){ if (i < 5){ printf("%d", i); i++; } else{ break; } }
4)最簡單的for迴圈
for (; ; );
5)for迴圈的嵌套使用
列印圖形
* * * * *
* * * * *
* * * * *
* * * * *
* * * * *
分析:
內層迴圈列印一行,外層迴圈5次列印5行
for (int j = 0; j < 5; j++) { for (int i = 0; i < 5; i++) { //內層列印行 printf("*\t"); } printf("\n"); }
--2-- break和continue
2.1 break關鍵字
break和continue都可以用在迴圈中,用來跳出迴圈/結束迴圈
break用法
break語句通常用在迴圈和開關語句中。
註意:
1)break對if-else不起作用。
2)break用於跳出當前迴圈(結束當前迴圈)。
3)break影響的是當前的這個迴圈,對外層迴圈不起作用
示例
計算r=1到r=10時圓的面積,直到面積大於100為止
分析:
圓的面積 area = 3.14 * r * r;
//計算r=1到r=10時圓的面積,直到面積大於100為止 for (int r = 1; r <= 10; r++) { double area = 3.14 * r * r; if (area > 100) { break; //面積大於100 結束迴圈 } printf("area = %.2f\n", area); }
2.2 continue關鍵字
continue用於結束本次迴圈,繼續下次迴圈
continue只用在for、while、do-while等迴圈體中,常與if語句一起使用,用來加速迴圈
示例
把100-200之間不能被3整除的數輸出。
分析:
被3整除時結束本次迴圈進入下一次
//把100-200之間不能被3整除的數輸出 for (int i = 100; i <= 200; i++) { if (i % 3 == 0) { continue; //整除則跳出本次迴圈 } printf("i = %d\n", i); }
總結:
從上面可以看出:
break跳出迴圈後迴圈就結束了,而continue跳出迴圈後還繼續下一次迴圈。這就是最大的區別。
【寫在結尾:】
『下雨了,滴答滴答,從小最喜歡的,就是聽雨的聲音...』