計數式重複敘述 for 迴圈 P37 01010 10101 01010 10101 01010 10101
結構化程式設計—流程控制結構 循序結構 選擇結構 重覆結構
重複結構 依某些條件決定是否重複執行某些敘述 for 巢狀 for while do...while
重複結構 依某些條件決定是否重複執行某些敘述 for 巢狀 for while do...while
計數式重複敘述的使用時機 當某段程式需要被重複執行 程式中有些運算大都不變,只有運算式中的一些變數的值作改變(只有程式中的某一個或幾個值會依一定的規律來增、減)
計數式重複敘述 計算21,22,23,24,25,26,27,28,29 只有乘數的數字做改變,每次都增加1 設計一個運算式, 2 i 每次計算完這個運算式,i都會加1 i的起始值是1,最後結束時的值是9
流程圖 設定測試條件變數初始值 迴圈結束條件判斷 重複執行程式區塊 測試條件變數增減 int i= 0; i = 1 false true c=2*i; i++; 測試條件變數增減 sum = 1;
for迴圈 語法 int i; for (初值運算式;測試運算式;增減量運算) { 迴圈內指令區塊; } … 起始值設定 i=1 判斷迴圈結束的條件 i<=9 遞增(減)變數 i = i + 1 (簡寫i++ ) false:結束迴圈 true:執行迴圈內指令 int i; for (初值運算式;測試運算式;增減量運算) { 迴圈內指令區塊; } … print 2*i
int sum,i =0; sum = 0 ; i=i+2 ; sum=sum+I; 計算2+4+6+8+…+100 50次 2 20 ? 6 12 8 6 4 2 ? i=i+2 ; sum=sum+I; 1A00 sum i 1A02 i=i+2 ; sum+=i; i=i+2 ; sum+=i; i=i+2 ; sum+=i; for (i=2 ; i<=100; i+=2) sum+=i; i=i+2 ; sum+=i;
判斷迴圈範圍 i-- i=i-1 增減量加1=>「i=i+1」可以用「i++」取代 … for( i = 1 ; i < 100 ; i++ ) printf("%d\n", i); return 0; 增減量加1=>「i=i+1」可以用「i++」取代 那減1呢?__________可以用_______取代。 迴圈的大括號不可省略,除非迴圈內只有一行指令 start end 迴圈外部第一行 i-- i=i-1
EX1:印出1~50的所有奇數 #include <stdio.h> int main( ) { int i; for( i = ; i < ; ) printf("%d\n", i); return 0; } 1 3 i<=49 i<51 49 1 50 i=i+2 5 49 3 ? 1 51 i
終止條件 i>=0 , i ? 終止條件 i>0 , i ? EX2:孫悟空在天庭閒逛,到蟠桃園看到蟠桃,忍不住就偷吃了蟠桃園中20顆蟠桃,第2天到蟠桃園中吃了18顆,此後孫悟空每天都到蟠桃園吃比前一天少兩顆的蟠桃,最後蟠桃園的蟠桃被吃光了,孫悟空總共吃了幾顆蟠桃? #include <stdio.h> #include <stdlib.h> int main() { int peach=0,i; //宣告蟠桃變數為peach //利用for迴圈算出第1天、第2天、第3天……直到蟠桃被吃完的peach數量 for( ; ; ) peach=peach+i; } printf("%d\n",peach); system("pause"); return 0; i=20 i>=0 i>0 i=i-2 20 20+18+…+2+0 38 20+18+…+2 54 -2 18 20 ? 16 終止條件 i>=0 , i ? peach i 終止條件 i>0 , i ?
注意事項-1 無窮迴圈 使用變數前宣告 for (int i = 1 ; ; i++ ) 初值設定、測試運算式、增減量運算,任何一個都可各自省略,但分號不可省略 三個運算式皆省略,則測試結果永遠是真,為無窮迴圈
EX3:輸入一整數值,計算出1+…+該整數值之和(含正/負整數) 如果整數值為負數則由1+0+(-1)…+(該數);如果整數值為正數則由1+2+3…+(該數) #include<stdio.h> #include<stdlib.h> int main() { int i,num,sum=0; scanf("%d",&num);
if (num >=1) { for( ) sum=sum+i; } else for( ) printf("1+ if (num >=1) { for( ) sum=sum+i; } else for( ) printf("1+...+(%d)=%d\n",num,sum); system("pause"); return 0; i=1; i<=num ;i++ i=1; i>=num ;i--
注意事項-2 在「初值運算式」,可初始化0個或多個變數 在「測試運算式」,可以有0個或是多個判斷式 之間以 , 隔開 for ( i = 0 ,j = 10 ; 測試運算式 ; 增減量運算 ) 在「測試運算式」,可以有0個或是多個判斷式 for ( 初值運算式 ; i > 10 , j< 20 ;增減量運算) 在增減量運算,可以增減0個或是多個變數的值 for (初值運算式 ; 測試運算式 ; i++ , j-- ) 之間以 , 隔開 之間以 , 隔開 之間以 , 隔開