c语言之循环

所谓的循环就是某些代码会被重复执行

循环的分类: for      while        do......while

for

1.格式  for (1; 2; 3)

        语句a;   执行流程 1----2---语句a-----3----2----。。。。。 3执行完一次代表循环一次的结束

2.最简单的for 用法

      for(i = 1; i<=10; i++)

           sum = sum + i;

3. if 与 for嵌套

#include <stdio.h>

int main (void)

{

 int i, sum=0;

for (i=3; i<=10; i++)

{

  if (i%3 == 0) //i 能被3整除 

  sum = sum +i;

  printf("sum = %d
",  sum);

 } 

return 0;

}

------------实验结果-------------------------------//for 语句的范围和if 的范围只能控制一句,所以printf的执行次数与for循环有关,与if 无关

sum = 3

sum = 3

sum = 3

sum = 9

sum = 9

sum = 9

sum = 18

sum = 18

4.多个 for 循环的嵌套问题

  1) for (1; 2; 3)

        for (4; 5; 6)

             a;

             b;

1----2-(成立)-----4------5--(成立)---a------6------5--(成立)----a---......5---(不成立)----3-----2---(成立)---4---a-----6---........----3----2---(不成立)-----b

 即 5不成立才会执行3,2不成立才会执行b,整体算两个语句

2) for (1; 2; 3)

       for (4; 5; 6)

            { a;

              b;

              }   整体算一个语句

3) for (1; 2; 3)

   { a;

     b;

       for (4; 5; 6)

             c;

      }  整体算一个语句

4) for (1; 2; 3)

      for (7; 8; 9)

        { a;

           b;

           for (4; 5; 6)

              c;   

         }   整体算一个语句

  

while循环

1.执行顺序

 格式: while (表达式)

               语句;

表达式----语句----表达式-------语句。。。。。

2.与for的比较

 i=0;                          

while (i < 101)

{

 sum = sum + 1;

  ++i; 

  }           //for 和while 可以相互转换,相比较for 逻辑性更强,更不易出错

3.举例(判断回文数的程序)

 1 # include <stdio.h>
 2 
 3 int main (void)
 4 {
 5     int val;
 6     int m;
 7     int sum = 0;
 8 
 9    printf("请输入您要判断的数字: ");
10    scanf("%d", &val);
11 
12    m = val;
13    while (m)
14   {
15     sum = sum *10 + m%10;
16     m /= 10;
17     }
18     
19     if (sum == val )
20     printf("yes!
");
21      else
22      printf("no!
");
23 
24     return 0;
25  }

试数过程

1> m=123成立

    sum= 0*10+123%10=3

     m= m/10=12

 2>m=12成立

    sum= 3*10+12%10=32

     m= m/10=1

3>m=1成立

    sum= 32*10+1%10=321

     m= 1/10=0

4>m=0 不成立

最终 sum=321 

4.应用场合

do.....while   主要是用于人机交互

格式: do

{

   ........

  } while (表达式); 分号不能省

 while 和 for的表达式为假时,循环语句一次都不执行,而 do....while 里的语句至少执行一次,为先执行后判断真假。

例子:在 一元二次方程中的应用 (人机交互,用户输入决定是否结束)

 1  # include <stdio.h>
 2 
 3  int main (void)
 4  {
 5      double  a, b, c;
 6      double delta;
 7      double x1, x2;
 8      char c;
 9 
10   do
11   {
12       printf("请输入一元二次方程的三个系数:
");
13       printf("a = ");
14       scanf("%lf", &a);
15       
16       printf("b = ");
17       scanf("%lf", &b);
18 
19       printf("c = ");
20       scanf("%lf", &c);
21 
22       delta = b*b - 4*a*c;
23 
24        if (delta > 0)
25       {
26         x1 = (-b + sqrt(delta)) / (2*a);
27         x2 = (-b - sqrt(delta)) / (2*a);
28     
29         printf ("有两个实数解,x1 = %lf, x2 = %lf
",  x1,  x2);
30  
31       }
32 
33    
34         else if (delta == 0)
35       {
36           x1 = x2 = - b / (2*a);
37 
38          printf ("有唯一实数解,x1 = x2 = %lf
",  x1);
39  
40         }
41  
42          else
43        {
44            printf("无实数解!
");
45         }
46      
47        printf("您想继续吗 (Y/N): ");
48        scanf(" %c", &ch );   //%c前面必须要有一个空格,原因比较复杂
49      } while ('y' == ch || 'Y' == ch );   //单个字符加单引号
50   
51     return 0; 
52  }

            

原文地址:https://www.cnblogs.com/wanliqingkong/p/3751429.html