C語言 第五章 循環結構
- 一、for
- 二、while
- 三、do while
- 四、continue
- 五、break
一、for
請在屏幕上輸出1000個*號
printf("*************************....");
#include "stdio.h" void main() { int i; for(i=1;i<=1000;i++){ printf("*"); } }
for(表達式A;表達式B;表達式C)
{
要重復執行的代碼塊D;
}
1、表達式A先執行,且只執行一次
2、表達式B再執行,如果為真則執行代碼塊D
3、再執行表達式C,再選擇表達式B,回到第2步
4、ABCD都可以省去 for(;i>=100;);
5、表達式1通常用來給循環變量賦初值,一般是賦值表達式i=1 i=-1,j=100
6、表達式2通常是循環條件,一般為關系表達式或邏輯表達式i>=5 i>5&&j<=8
7、表達式3通常可用來修改循環變量的值,一般是復合賦值語句i++,i--, i+=5,j++
8、這三個表達式都可以是逗號表達式,即每個表達式都可由多個表達式組成。三個表達式都是任選項,都可以省略。
#include "stdio.h" void main() { int i,j; for(i=1;i<=10;i++) { printf("%d \n",i); } }
#include "stdio.h" void main() { int i,j; for(i=-10;i<=10;i++) { printf("%d \n",i); } }
#include "stdio.h" void main() { int i,j; for(i=1;i<=10;i=i+3) { printf("%d \n",i); } }
#include "stdio.h" void main() { int i,j; for(i=10;i>0;i--) { printf("%d \n",i); } }
#include "stdio.h" void main() { int i,j; for(i=10,j=1;i>0;i--,j++) { printf("%d + %d = 11 \n",i,j); } }
#include "stdio.h" void main() { int i=1; for(;i<=10;i++) { printf("\n %d",i); } }
#include "stdio.h" void main() { int i=1; for(;i<=10;) { printf("\n %d",i); i++; } }
#include "stdio.h" void main() { int i=1; for(;;) { printf("\n %d",i); i++; if(i>10)break; } }
for語句中的各表達式都可省略,但分號間隔符不能少。如:
for(;表達式;表達式)省去了表達式1。
for(表達式;;表達式)省去了表達式2。
for(表達式;表達式;)省去了表達式3。
for(;;)省去了全部表達式。
在循環變量已賦初值時,可省去表達式1,如省去表達式2或表達式3則將造成無限循環, 這時應在循環體內設法結束循環。
循環體(要重復的語句)可以是空語句。
練習:計算出1-100之間奇數之和。1+3+5+7....99=?
#include "stdio.h" void main() { //練習:計算出1-100之間奇數之和。1+3+5+7....99=? int i,s=0; for(i=1;i<=100;i++) { if(i%2==1){ s=s+i; } } printf("結果:%d",s); }
2500
#include "stdio.h" void main() { //練習:計算出1-100之間奇數之和。1+3+5+7....99=? int i,s=0; for(i=1;i<=100;i=i+2) { s=s+i; } printf("結果:%d",s); }
2500
二、while
while語句的一般形式為:
初值;
while(表達式A)
{
表達式的值為真時要重復的語句塊;B
步長;
}
其中表達式是循環條件
要重復的語句塊和步長都為循環體
while語句的語義是:計算表達式的值,當值為真(非0)時, 執行循環體語句。
1、程序先判斷A是否為真,如果為真則執行循環體B
2、當執行完循環體後再回到第1步
3、當表達式A為假時結束循環
#include "stdio.h" void main() { int i=1; while(i<=10) { printf("%d \n",i); i=i+1; } }
while語句中的表達式一般是關系表達或邏輯表達式,只要表達式的值為真(非0)即可繼續循環
循環體如包括有一個以上的語句,則必須用{}括起來, 組成復合語句。
應註意循環條件的選擇以避免死循環。
練習:
練習:計算出1-100之間奇數之和。1+3+5+7....99=?
/* Note:Your choice is C IDE */ #include "stdio.h" void main() { int i=1,s=0; while(i<=100) { s=s+i; i=i+2; } printf("s=%d",s); }
2500
練習:列出1-1000之間所有能同時被3與7整除的數。
三、do while
do-while語句的一般形式為:
do
{
要重復的語句塊;
}while(表達式);
其中“要重復的語句塊”是循環體
表達式是循環條件
語義是:先執行循環體語句一次,再判斷表達式的值,若為真(非0)則繼續循環,否則終止循環。
/* Note:Your choice is C IDE */ #include "stdio.h" void main() { int i=1,s=0; do { s=s+i; i++; }while(i<=5); printf("%d",s); } //i=1 2 3 4 5 6 //s=0 1 3 6 10 15
15
適用於必須要執行一次的應用,如輸入一個合格的數字。
#include "stdio.h" void main() { int n; do { printf("請輸入1-7之間的數:"); scanf("%d",&n); }while(n<1||n>7); }
四、continue
在for,while,do-while中遇到continue表示結束當次循環,繼續下次循環。
#include "stdio.h" void main() { int i; for(i=1;i<=10;i++) { printf("●"); printf("□"); } }
#include "stdio.h" void main() { int i; for(i=1;i<=5;i++) { if(i%2==0) { continue; //結束當次,繼續下一次 } printf("□"); } //i=1 2 3 4 5 6 □□□ }
五、break
在for,while,do-while,switch中遇到break跳出當前循環。
#include "stdio.h" void main() { int i; for(i=1;i<=5;i++) { if(i%2==0) { break; //結束當前循環 } printf("□"); } }
□
在無條件循環中退出
#include "stdio.h" void main() { int i=1,s=0; while(1) { s=s+i; i++; if(i>100) break; } printf("%d",s); }
C語言 第五章 循環結構