js基础 循环执行(流程控制)

关键字:while循环,do-while循环,for循环,循环嵌套

程序的流程控制:程序 = 数据 + 算法 任何复杂的程序算法都可以通过“顺序”,“分支”,“循环”三种基本的程序逻辑组合实现。

循环结果的两个要素:
       --循环体:就是要重复的相同或者相似的代码
       --循环条件:重复的次数,或者执行循环的条件 

一、while循环
(1)语法

while(boolean表达式){   //循环条件
  循环体语句;
};

二、do-while循环
(1)语法

do{
  //循环体
}while(循环条件);

①通过do执行循环体一次,不管循环条件是否为true,
②判断循环条件是否为true,
       如果循环条件为true,执行循环体
       再次判断循环条件是否为true,直到为false才会终止循环。 

(2)while和do-while的区别

①while语句,先判断,在执行
 ②do-while语句,先执行,在判断
 ③当初始值不满足条件的时候,while不会执行,do-while会执行一次。 

三、for循环
(1)语法

for(表达式1;表达式2;表达式3){
  //循环体
};

表达式1,初始值;
表达式2,循环条件;
表达式3,循环的变化(增加,减小) 

(2)continue和break
continue:跳出本次循环,继续下次循环。
break: 跳出循环,后续不再执行循环。 

四、对比三种循环
while常用于当'...'的时候,优先选择 do-while
如果在业务逻辑中含有“直到...”,优先选择 for
如果在业务逻辑中要获取一个确切的循环 

五、相关联系
(1)打印9~0十个数字
          打印1~10十个数字

//打印9~0十个数字
var i = 9;      //初始化一个值
while(i >= 0){   //跳出条件
  console.log(i);
  i--;
};

//打印1~10十个数字
var i = 1;      //初始化一个值
while(i <= 10){   //跳出条件
  console.log(i);
  i++;
};

(2)使用switch..case模拟ATM机; 取款, 存款, 转账-, 查询, 退出。

while(true){
var service = parseInt(prompt('请输入您的业务需求是:\n 1:取款、2:存款、3:转账、4:查询余额、5:退出系统'));
switch (service){
  case 1:
	  var a = prompt('请问取款金额为?\n 1:500元、  2:1000元、  3:2000元、  4:3000元、  5:5000元');
      var b = prompt('请问你的取款金额是否为:'+ a + '元?\n 是,请输入1,不是,请输入2');
	  if(b == 1){
	     alert('取款中,请稍等...');
	  }else{
	    alert('正在返回...');
	  };
  case 2:
	  var c = prompt('请存放金额:');
      var d = prompt('请问您的存款金额是否为:'+ c + '元?\n 是,请输入1,不是,请输入2');
      if(d == 1){
	     alert('正在存款,请稍等...');
	  }else{
	    alert('正在返回...');
	  };
  case 3:
      var e = prompt('请输入转账账号:');
      var f = prompt('请问转账账号是否为:'+ e + '\n 是,请输入1,不是,请输入2');
      if(f == 1){
	     var g = prompt('请问您的转账金额是:');
         var h = prompt('请问您的转账金额是否为:'+ g + '元?\n 是,请输入1,不是,请输入2');
         if(h == 1){
	     alert('正在转账,请稍等...');
	     }else{
	        alert('正在返回...');
	     };
	  }else{
	    alert('正在返回...');
	  };
  case 4:
	  alert('正在查询余额,请稍等...'); 
  case 5:
	  var i = prompt('请问是否要退出系统 \n 是,请输入1,不是,请输入2');
      if(i == 1){
	     alert('正在退出系统,请稍等...');
	     }else{
	       false;
	     };
};
};

(3)猜数字游戏,先产生一个数字在弹出的提示框中输入一个数字,如果值大于数字,弹出警示窗口,告知:“big”,然后继续弹出提示框,如果值小于数字,弹出警示窗口,告知:“small”,直到值和数字完全一致才会退出(不再弹出提示框)。

//思路及正确解法
①初始值;②死循环while(true);③每次输入完值,和初始值进行比较;④如果初始值和输入值一致,强制退出循环。

var num1 = 9;
while(true){   //死循环
  var num2 = prompt('请输入数字进行比较');
  if(num2 > num1){   //输入值和初始值比较
      alert('big');
  }else if(num2 < num1){
      alert('small');
  }else{
	  alert('right');
    break;      //猜对了,终止循环
  };
};

(4)先初始一个值,弹出提示框,如果值相等,弹出“login success”并且结束循环(break),否则继续弹出提示框。

var num1 = 9;
do{
  var num2 = prompt('输入数值');
}while(num1 != num2);
alert('login success!');

//第二种方法,等同于以上效果
var num1 = 9;
do{
  var num2 = prompt('输入数值');
  if(num1 == num2){
    alert('login success!');
	break;
  };
}while(true);

(5)计算1加到100的和

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

(6)计算1~100之间所有基数的和,并打印结果。

var sum = 0;
for(var i=1;i<=100;i++){
  if(i%2 !=0){
	  sum += i;
  };
};
console.log(sum);

(7)计算1~20之间所有偶数相乘的结果。

var mul = 1;
for(var i=1;i<=20;i++){
  if(i%2 ==0){
	  mul *= i;
  };
};
console.log(mul);

(8)循环输出5个*,成一行展示。

var i=1,sum='';
for(i;i<=5;i++){
  sum +='*';  
};
console.log(sum);

(9)循环输出九九乘法表的第五行。

var i=5,j=1,sum='';
for(i;j<=5;j++){
  sum += j +'*'+i+ '=' + i*j+' ';
};
console.log(sum);

(10)计算从1到100的和,当总和大于4000的时候,退出循环,输出总和。

var i=0,sum=0;
for(i;i<=100;i++){
  sum += i;
  if(sum>4000){
    break;
  };  
};
console.log(sum);

(11)计算1~100之间,不能被3整除的数字,并打印出来。

for(var i=1;i<=100;i++){
  if(i%3==0){
    continue;
  };
  console.log(i);
};

(12)打印出2000~2100年之间所有的闰年

for(var year=2000;year<=2100;year++){
  if(year%4==0 && year%100!=0 || year%400==0){
    console.log(year);
  };
};

(13)本金10000元,每年的利息是4%,计算5年后一共有多少钱?

var money=10000;
for(var i=1;i<=5;i++){
  money =money +money*0.04;
};
console.log(money);

(14)循环的嵌套(while,do-while,for三者都可以相互嵌套)

//打印5行5列
var i=1,j=1,sum='';
for(i;i<=5;i++){
  for(j;j<=5;j++){
    sum +='* ';  
  }
console.log(sum);
};
//打印5行,每行递增
var i=1,j=1,sum='';
for(i;i<=5;i++){      //第一层控制行数,第二行控制列数
  for(j;j<=i;j++){
    sum +='* ';  
  }
console.log(sum);
};

(15)打印九九乘法表

for(var i=1;i<=9;i++){
  var sum='';
  for(var j=1;j<=i;j++){
    sum += j+'*'+i+'='+j*i+'  ';
  };
  console.log(sum);
};
上一篇: js基础 选择执行(流程控制)
下一篇: js基础 自定义函数
作者邮箱: 203328517@qq.com