zoukankan      html  css  js  c++  java
  • For循环详解

    for语句

    学过c语言都对循环结构不陌生,尤其是for循环,他是C语言中最有特色的循环语句,使用最为灵活。

    形式

    结构:for(表达式1;表达式2;表达式3){循环体结构}
    

    每部分的作用

    表达式1:一般作为循环变量赋初始值;
    表达式2:循环继续的条件,即能判断出真假的条件,一般为关系表达式;
    表达式3:用于循环变量的的改变,可加=加法,可减法.
    

    执行顺序

    (1)求解表达式1(只执行一次);
     (2) 求解表达式2,如果其值非0,执行表达式3;否则不进入,退出
    (3) 执行循环体语句,并求解表达式3,然后转向表达式2;
    (4)执行for语句的下一条语句.
    

    说完了基本概念,来看看怎么用法

    例子:求1-100之间所有整数的累加和?

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

    是不是觉得太简单,那我们来简化一下代码

    根据for循环语句的执行顺序,可以把条件每次进入循环体之前都会先执行并且判断。可以改为

        for(var i=0,sum=0;i++<100;) sum+= i;//如果循环语句只有一条可以不写大括号
    

    如果觉得不过瘾,其实还可以在简化

    我们知道循环的第三部分,就是变量变化部分,他是在每次循环完成语句块后执行的内容,那么就可将sum写在第三部分

       for(var i=0,sum=0;i<=100;sum+=i,i++);
    

    for 循环的变体的终极-省略三个表达式

        var i=1,sum =0;//相当于表达式1
        for(;;)
        if(i<=100){sum+=i;i++}//相当于表达式2
        else break;//相当于表达式3
    

    说完了for循环的便捷之处,就不难理解说for循环的强大之处,但是并不是所有的循环都用for循环,根据实际情况而定,选取最便捷的方法。比如看下面的需求:

    例子:将自然数反序列输出 12345 ---> 54321

       var a = 12345;
        var i; //末位
        var t=0; //反序列
        while(a>0){
            i=parseInt(a%10);
            t = parseInt(t*10 + i);
            a = parseInt (a/10);
       }
        console.log(t)
    

    这里为什么选择while,而不是for了呢,因为这是5位数,要是几十位我们也不知道执行次数,一眼看不出来,执行次数,while比较合适

  • 相关阅读:
    消息中间件(一)MQ详解及四大MQ比较
    SIP协议
    PAT (Basic Level) Practice 1008 数组元素循环右移问题
    LeetCode-Algorithms 1. 两数之和
    PAT (Basic Level) Practice 1040 有几个PAT
    PAT (Basic Level) Practice 1023 组个最小数
    PAT (Basic Level) Practice 1021 个位数统计
    PAT (Basic Level) Practice 1007 素数对猜想
    PAT (Basic Level) Practice 1006 换个格式输出整数
    PAT (Basic Level) Practice 1004 成绩排名
  • 原文地址:https://www.cnblogs.com/my12-28/p/12543480.html
Copyright © 2011-2022 走看看