第7课 - 循环语句

第7课 - 循环语句

1. 循环语句分析

(1)循环语句的基本工作方式

  • 通过条件表达式判定是否执行循环体
  • 条件表达式遵循 if 语句表达式的原则

(2)do、while、for的区别

  • do 语句先执行后判断,循环体至少执行一次
  • while 语句先判断后执行,循环体可能不被执行
  • for 语句先判断后执行,相比while更简洁

2. 循环的回顾

  

【三种循环语句使用对比】

 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));  // 5050
49     printf("%d\n", f2(100));  // 5050
50     printf("%d\n", f3(100));  // 5050
51     
52     return 0;
53 }

3. break和continue的区别

(1)break表示终止循环的执行,跳出整个循环

(2)continue表示终止本次循环,进入下次循环

【break和continue的区别】

 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);  // 1
40     f2(10);  // 1 3 5 7 9
41     
42     return 0;
43 }

【do...while(0)和break的妙用】

 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;  // 注意这里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);    // 在任何情况下,free(p)都会被执行,不会泄露内存
30     
31     return ret;
32 }
33 
34 int main()
35 {
36     if( func(4) )
37     {
38         printf("OK\n");
39     }
40     else
41     {
42         printf("ERROR\n");
43     }
44 
45     return 0;
46 }

 

posted @ 2019-11-13 22:44  Hengs  阅读(264)  评论(0编辑  收藏  举报