C語言迴圈語句工程用法
阿新 • • 發佈:2018-12-15
-迴圈語句分析
迴圈語句的基本工作方式
- 通過條件表示式判斷是否執行迴圈體
- 條件表示式迴圈if語句表示式的原則
do、while、for的區別
- do語句先執行後判斷,迴圈體至少迴圈一次
- while語句先判斷後執行,迴圈體可能不執行
- for語句先判斷後執行,相比while更簡潔
三者在使用上的區別:
1 #include <stdio.h> 2 3 intf1(int n) 4 { 5 int ret = 0; 6 7 if( n > 0 ) 8 { 9 do 10 { 11 ret += n; 12 n--; 13 } 14 while( n > 0 ); 15 } 16 17 return ret; 18 } 19 20 int f2(int n) 21 { 22 int ret = 0; 23 24 while( n > 0) 25 { 26 ret += n; 27 n--; 28 } 29 30 return ret; 31 } 32 33 int f3(int n) 34 { 35 int ret = 0; 36 int i = 0; 37 38 for(i=1; i<=n; i++) 39 { 40 ret += i; 41 } 42 43 return ret; 44 } 45 46 int main() 47 { 48 printf("%d\n", f1(100)); 49 printf("%d\n", f2(100)); 50 printf("%d\n", f3(100)); 51 52 return 0; 53 }
-迴圈語句分析
break和continue的區別
- break表示終止迴圈的執行
- continue表示終止本次迴圈,進入下一次迴圈
思考:
switch能否用continue關鍵字?為什麼?
答:不行,因為continue是用於迴圈的,而switch語句根本不是迴圈。
1 #include <stdio.h> 2 3 void f1(int n) 4 { 5 int i = 0; 6 7 for(i=1; i<=n; i++) 8 { 9 if( (i % 2) == 0 ) 10 { 11 break; 12 } 13 14 printf("%d ", i); 15 } 16 17 printf("\n"); 18 } 19 20 void f2(int n) 21 { 22 int i = 0; 23 24 for(i=1; i<=n; i++) 25 { 26 if( (i % 2) == 0 ) 27 { 28 continue; 29 } 30 31 printf("%d ", i); 32 } 33 34 printf("\n"); 35 } 36 37 int main() 38 { 39 f1(10); 40 f2(10); 41 42 return 0; 43 }
do和while 結合的妙用
例項三:下面的例子為了執行強制free();來防止記憶體洩漏。
1 #include <stdio.h> 2 #include <malloc.h> 3 4 int func(int n) 5 { 6 int i = 0; 7 int ret = 0; 8 int* p = (int*)malloc(sizeof(int) * n); 9 10 do 11 { 12 if( NULL == p ) break; 13 14 if( n < 5 ) break; 15 16 if( n > 100) break; 17 18 for(i=0; i<n; i++) 19 { 20 p[i] = i; 21 printf("%d\n", p[i]); 22 } 23 24 ret = 1; 25 }while( 0 ); 26 27 printf("free(p)\n"); 28 29 free(p); 30 31 return ret; 32 } 33 34 int main() 35 { 36 if( func(10) ) 37 { 38 printf("OK\n"); 39 } 40 else 41 { 42 printf("ERROR\n"); 43 } 44 45 return 0; 46 }
小結:
for迴圈先進入迴圈再進入迴圈體
for迴圈適合於迴圈次數固定的場合
while迴圈先進行判斷再進入迴圈體執行
while迴圈適合於迴圈次數不定的場合
do ... while 迴圈先執行迴圈體再進行條件判斷
do ... while 迴圈體至少執行一次迴圈體