1. 程式人生 > >C語言迴圈語句工程用法

C語言迴圈語句工程用法

-迴圈語句分析 

迴圈語句的基本工作方式

                 - 通過條件表示式判斷是否執行迴圈體

                 - 條件表示式迴圈if語句表示式的原則

do、while、for的區別

                 - do語句先執行後判斷,迴圈體至少迴圈一次

                 - while語句先判斷後執行,迴圈體可能不執行

                 - for語句先判斷後執行,相比while更簡潔

三者在使用上的區別:

 1 #include <stdio.h>
 2 
 3 int
f1(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 迴圈體至少執行一次迴圈體