javascript(for)循环语句3.0

6、循环语句—for

(1)、语法:for(定义初始变量;条件;步长【初始变量的操作】) { 循环体;}

练习1-1:

//练习:求10!=1*2*3*4*......*10;(10的阶乘)
var jc = 1;
for (var i=1; i<=10; i++) {
    jc =jc*i;
}
alert(jc);

(2)、循环中常用的两个关键字

break:跳出循环

练习2-1:

var i = 100;
while(i<200) {
    if(i==90) {
        alert("i=90, 循环结束);
        break;
    }
    console.log(i);
    i--;
}

continue:跳出当次循环,后续循环会继续执行

练习2-2:

for(var i=0; i<10; i++) {
    if(i==5) {
        console.warn("跳过5");
        continue; //结束本次循环
    }
    console.log(i);
}

(3)、javascript表格构建

练习3-1:9*9乘法表格打印

document.write("<table width="900" height="450" border="1">);
for(var r=1; r<=9; r++) {
    document.write("<tr>");
        for(var c=1; c<=9; c++) {
        if(r>=c) {
          document.write("<td>"+c+"x"+r+"="+r*c+"</td>");
        }
        }
     document.write("</tr>");
document.write("<table>");    

 

(4)、作业

练习4-1:打印直角三角形

for(var i=0; i<5; i++) {
    //行大于列  显示左下部分的内容
    for(var j=0; j<=i; j++) {
        //输出字符,以做显示   
        document.write("*nbsp;");
    }
    //这里换行  在每次列循环以后进行换行
    document.write("<br>");
}    

练习4-2:打印右三角形

for(var i=0; i<5; i++) {
    for(var j=0; j<5; j++) {
//这里是i(行)大于4-j
        if(i>=4-j) {
            document.write("&nbsp;*");
        }
        else {
            document.write("&nbsp; ");
        }
    }
    document.write("<br>");
}

练习4-3:打印菱形

//菱形的上半部分   前6行是递增显示
for(var row=0; row<6; row++) {
//从左向右  共11列 依次遍历
    for(var i=1; i<=11; i++) {
//对满足条件的坐标进行 显示*号
        if(i==6-row || i==row+6) {
            document.write("&nbsp;*");
        }
        else {
            document.write("&nbsp; ");
        }
    }
//每遍历完一行进行换行
    document.write("<br>");
}

//菱形的下半部分
for(var row=4; row>=0; row--) {
    for(var i=1; i<=11; i++) {
        if(i==6+row || i==6-row) {
            document.write("&nbsp;*");
        }
        else {
            document.write("&nbsp ");
        }
    }
    document.write("<br>");
}

练习4-4:猴子吃桃问题

  猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少?

数学思路:x10 = (x9/2)-1

x9=(x10+1)*2

x8=(x9+1)*2

var before = 0;
var td = 1;
for(var i=10; i>1; i--) {
//上一个值对下一个值有影响
    before = (td+1)*2;
    td = before;
}
document.write(before);

练习4-5:求出1-100之间的所有质数(只能被1和他自身整除的数)

for(var i=2; i<100; i++)  {
//做标记
    var flag = true;
//对每个取到的i  用i/2给除数定制范围  k则在这个范围内取到每个数    除以2是因为  当i大于i/2时   它将不会被任何数除尽
    for(var k=2; k<(i/2)+1; k++) {
//当i被k整除尽
        if(i%k) {
//转换标志  方便后面输出值
            flag = flase;
            break;
        }
    }
    if(flag) {
         document(i);
         document.write("<br>");  
}        

练习4-6:将一个正整数分解质因数。

例如:输入90,打印出90=2*3*3*5;

程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按照下述步骤进行

(1)、如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。

(2)、如果n>k,但n能被k整除,则应该打印出k的值,并用n除以k的商,作为新的正整数n,重复执行第一步。

(3)、如果n不能被k整除,则用k+1作为k的值,重复执行第一步。

var n = 90;
var k = 2; 
document.write(n + "=");
//判断被除数和除数是否相等
if(n!=k) {
//如果n能被k整除掉
    if(n%k==0) {
//记录k的值,并且将新的商赋值给被除数
        document.write(k);
        n=n/k;
    }
//当k为除数不能再往下除时  对除数加1  直到k和n相等为止
    else {
        k++;
    }
}

练习4-7:一个数恰好等于它的因子之和,这个数就称为“完数”。

例如:6=1+2+3,找出1000以内的所有完数

//遍历1000以内的数
forvar i=0 ,i<=1000; i++){
//定义标记
    var flag = true;
//定义一个变量来存放每个质因数的总和
    var sum = 0;
    for(var k=2; k<i; k++) {
//判断达到因数的条件
        if(i%k==0) {
//取到每个质因数相加的和
            sum = k+sum;
        }                
    }
//sum==i成立会返回true,这里是布尔值
    flag = (sum==i);
//满足条件的i
    if(flag) {
        document.write(i + "是完数<br>");
    }
}

 

posted @ 2020-08-12 10:58  上天安排的最大嘛!  阅读(208)  评论(0编辑  收藏  举报