h5循环结构,嵌套

来源:互联网 发布:欧莱雅美发产品淘宝 编辑:程序博客网 时间:2024/05/16 01:45

3 循环结构

While(满足的条件){

当满足条件时执行的内容

}

例:输出100-1000之内的所有的水仙数

var num=100;
while(num<1000) {
var a=Math.floor(num/100);
var b=Math.floor(num/10)%10;
var c=num%10;
   var res="";
    if (num==a*a*a+b*b*b+c*c*c){
        res=num+这个数是水仙花数";
        alert(res);
    }

    num++;
}

 

食堂打饭的叔叔:收钱、询问菜品、打菜、将餐盘递给顾客,重复以上步骤。

水仙花数:

例:判断gdp总值

2009年时chn    49089.82

        Usa    142562.75

中国的增长率是0.08

美国的增长率是0.02

假设增长率不变,什么时候中国超越美国

<script>
    var year=2009;
    var chn=49089.82;
    var Usa=142562.75;
    while(year>=2009){
         var z1=0.08;
         var z2=0.02;
        if (chn>Usa){
            alert(year+"年,中国超越美国");
            break;
        }
        year++;
        var chn=chn*(1+z1);
        var Usa=Usa*(1+z2);
    }
</script>

当我们拿到一个循环的问题的时候应该怎么办?

问自己4个问题:

初始状态是什么

重复的条件是什么

要重复做什么

如何过度到下次循环

例:计算圆周率()

1、初始状态:

Pi=0

Fenzi=1

Fenmu=1

2、重复的条件:

分数的绝对值大于10^-6

3、重复做什么:

将这个分数加到pi里面

4、如何过度到下次循环:

分子=分子*-1

分母=分母+2

1、循环结束之后,圆周率=pi*4

   var pi=0;
    var fz=1;
    var fm=1;
while(Math.abs(fz/fm)>0.000001){
    var fs=fz /fm;
    var pi=pi +fs;
    var fz=fz *(-1);
    var fm=fm +2;
}
alert("圆周率为:"+pi*4);

do-while

do{

重复做的事情

}while()

例:从1加到100

var sum=0;
var num=1;
while(num<=100){//while
   
sum
+=num;
    num++;
}
alert(sum+" "+num);

do{
    sum+=num;
    num++;
}while(num<=100)//do-while
alert(sum+""+num);

do-while与while本质上没有区别,就是做循环的事情。唯一的区别就是do-while先做一次循环的内容然后在去判断条件。

While是先去判断条件再来做循环体里面的内容。

明确的知道循环的次数的时候用for循环更容易理解。

For(初始值;条件;过渡到下次循环){

  循环体(重复做的事)

}

例:求圆周率,(随机数)面积为1的正方形中随机丢一豆子。

(用Math.random()获得随机数)

1、初始状态:

Sum=0

Num=0

2、重复的条件:

Num<10000

3、重复做的事

随机生成两个数

判断这个点是否在园内 如果在sum+1

4、下次循环做准备num++

var res=0;
var num=10000;
for(vari=1;i<=num;i++) {
    var a=Math.random();
    var b=Math.random();
    if (Math.sqrt(a*a+b*b)<=1){
        res++;
    }
}
var pi=4*(res/num);
alert("圆周率:"+pi);

循环的辅助工具

例:素数判断(质数)

用户任意输入一个数,判断这个数是不是素数并打印。

1、初始条件:

Num=用户输入

i=2

假设他是素数isprice=ture

2、循环条件:

i<num

3、要重复做的事

4、判断num是否整除i如果整除了就说明不是素数:isprice=false

var num=Number(prompt("输入任意一个数"));
var isPrime=true;
for(i=2;i<num;i++){
    if (num%i ==0) {
        var isPrime=false;
        break;
    }
}
    if(isPrime){
      alert("输出这个素数:"+num)
    }else{
    alert(num+""+"这个数不是素数")}

break可以配合着循环结构使用,作用是跳出当前循环结构。

Continue:结束本次循环,直接进行下一次循环

例:对100以内即不是3倍数也不是5倍数的数求和。

var num=100;
 var sum=0;
for(i=1;i<num;i++){
    if (i%3!=0&&i%5!=0) {
       sum=sum+i;
    }
}
    alert(sum)     第一种方法
 
 
var sum1=0;
for(varj=1;j<100;j++){
    if(0==j%3||0==j%5){
        continue;
    }
    sum1+=j;
}
alert(sum1);        第二种方法

循环的嵌套

请输入如下图像

********

********

********

********

Document.write(“*”)

Document.write(“</br>”)

 

星星的个数

第一行

8

第二行

8

第三行

8

第四行

8

var row=Number(prompt("输入行数"));
var col=Number(prompt("输入列数"));
for(i=0;i<row;i++){
    for (j=0;j<col;j++) {
        document.write("*");
    }
    document.write("</br>");

*

***

*****

*******

  var row=Number(prompt("输入行数"));
    var col=Number(prompt("输入列数"));
    for(i=0;i<row;i++){
        for(j=0;j<2*i-1;j++){
            document.write("*");
        }
        document.write("</br>");
    }

等腰三角形

     *

    ***

   *****

  *******

var row=Number(prompt("输入行数"));
var col=Number(prompt("输入列数"));
for(i=0;i<row;i++){
    for(z=0;z<row-i;z++){
        document.write("&nbsp");
    }
    for(j=0;j<2*i+1;j++){
        document.write("*");
    }
    document.write("</br>");
}

打印出100以内的所有素数

for(varj=2;j<100;j++){
    var isPrime=true;
    for (vari=2;i<j;i++){
        if (j%i ==0) {
            varisPrime=false;
            break;
        }
    }
    if (isPrime) {
      document.write(i+"&nbsp;");
    }
}

 

原创粉丝点击