黑马程序员--while,do……while和for循环的区别

                                                ------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------

                            while,do……while和for循环的区别


一. while语句的一般形式为while(表达式) {循环体}

                   其中表达式是循环条件,语句为循环体, while为当型循环。
                   while语句的语义是:计算表达式的值,当值为真(非0)时, 执行循环体语句。其执行过程可用下图表示。

                                                                   

                                                           2010082713370723.jpg

      while循环使用注意:

          1、如果while只有一句话,这个时候可以省略大括号

             while (i++ < 100) sum+=i;等价于

               whilei<=100) { sum += i;  //sum = sum+i;    i++;}

          2while空语句问题,会造成死循环

              while (1<3);


   举例应用下while语句:

        计算 1+2+3+.....+100 的和

    //定义一个变量,存储当期执行的次数

    int i=1,sum=0;

    int n=0;

    //假设从键盘上输入一个数,计算1+2+3+....+n 的和

    printf("请输入一个数字:\n");

    //从键盘上接受一个数

    scanf("%d",&n);

    

    while (i<=n) {

        

        //sum的值+i的值

        sum = sum+i;   //i = 1  sum = 1

        //0+1,   (0+1)+2

        

        //让循环条件为假的控制

        //        i=i+1;

        i++;

    }

    

    printf("1+2+3+....+%d=%d\n",n,sum);

    return 0;

}

 

 二.do-while

     下面我们说下do-while

           语句的一般形式为    do{循环体}while(条件);

                                                                        2010082713342840.jpg

      它是直到型循环,先循环后判断,直到不满足条件,跳出循环

      do-while语句之后要有分号结束,在编程中用的很少。

           关于whiledo while对比

 

           1)当循环控制条件第一次判断不为假的时候

 

              while dowhile循环体执行的次数相同

 

           2)当循环控制条件第一次判断为假的时候

 

              while循环的循环体 执行 0

 

              do while 执行1


三.for循环

          我们重点说下for:

                 for循环形式: for(表达式1;表达式2;表达式3)


                                                 2010082713423918.jpg

          语言中的for循环语句使用最为灵活,不仅可以用于循环次数已经确定的情况,而且可以用于循环次数不确定而        只给出循环结束条件的情况,它完全可以代替while语句.
     for(表达式 1;表达式 2;表达式 3)语句
     它的执行过程如下:
                 (1)先求表达式 1.
                 (2)求表达式2,若其值为真(值为非0),则执行for语句中指定的内嵌语句,然后执行下面第三步 做若为

                      假(值为0),则结束循环,转到第5步.
                 (3)求解表达式3
                 (4)转回上面第(2)步骤继续执行;
                 (5)结束循环,执行for语句下面的一个语句;
                      for(循环变量赋初值;循环条件;循环变量增值)语句
                 如

                    for(i=1;i<=100;i++)sum=sum+i;

                 它的执行相当于

                                    int i=1; 
                                     while(1) 
                                 {sum=sum+1; 
                                               i++; 
                                                       }
 

      显然,用for语句更简单、方便。
   说明:
         (1)for语句的一般形式中的"表达式1"可以省略,此时应在for语句之前给循环变量赋初值.注意省略表达式1                  时,其后的分号不能省略.如for(;i<=100;i++){....};
         (2)如果表达式2省略 即不判断循环条件,循环无终止地循环下去,也就是认为表达式2始终为真.

              例如:for(i=1;;i++){.....};
      相当于

                                            i=1; 
                                             while(1) 
                                             {sum=sum+1; 
                                               i++; 
                                                         }

          (3)表达式3也可以省略,但此时程序设计者应另外设法保证循环能正常结束.如:

                        for(i=1;i<=100;) 
                          {sum=sum+1; 
                                  i++; 
                                                }

              这个例子的循环增量没有放在表达式三的位置 而是作为循环体的一部分 其效果是一样的.
         (4)可以省略表达式1表达式3,只有表达式2 即只给循环条件.

                        如

                          for(;i<=100;) 
                                 { 
                                   sum=sum+i; 
                                               i++; 
                                                       } 
                  这个相当于 
                             whlie(i<=100) 
                                { 
                                      sum=sum+i; 
                                            i++; 
                                                     }

                   (5)三个表达式都可以省略,如:for(;;)语句
                         相当于
                        while(1)语句即不设初值 不判断条件(认为表达式2为真值)循环变量不增值,无终止的执行循环体.
                   (6)表达式1也可以是设置循环变量初值的赋值表达式,也可以是与循环变量无关的其他表达式.如:

                       for(sum=0;i<=100;i++) 
                          { 
                             sum=sum+i; 
                                                } 
                        
                                                  <br /------ Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值