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(" *"); } else { document.write(" "); } } 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(" *"); } else { document.write(" "); } } //每遍历完一行进行换行 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(" *"); } else { document.write("  "); } } 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以内的数 for (var 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>"); } }