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 循环体至少执行一次循环体

posted @ 2018-12-15 09:57  lemaden  阅读(308)  评论(0编辑  收藏  举报