game

九九乘法表与do{}while()和while(){}

1
在讲九九乘法表之前,先讲下js写入标签的方法之一。(可选择不看,如果你已经会了的话)

for循环写入标签

有时候标签是可以在js里添加的,以下是方法之一

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>

</head>
<body>

</body>
<script type="text/javascript">
//document 运行缓慢
document.write("<table border='1'>");
for (var i=0;i < 5 ; i++) {
//大循环
document.write("<tr>");
for (var j=0;j < 5 ; j++) {
//小循环 大循环循环一次,小循环循环5次 共循环5*5
document.write("<td>"+j+"</td>");
}
//小循环结束后结果是<td>0</td><td>1</td><td>2</td><td>3</td><td>4</td>
document.write("</tr>")
}
/*两循环结束后结果是<tr><td>1</td><td>2</td><td>3</td><td>4</td></tr>*5 */
document.write("</table>");
//解决方案:字符串拼接(table的写入也是很慢的)
var str ="<table border='1'>";
for (var i=0;i < 5 ; i++) {
str+="<tr>";
for (var j=0;j < 5 ; j++) {
str+="<td>"+j+"</td>";
}
str+="</tr>";
}
document.write(str + "</table>");

九九乘法表

1
2
3
4
5
6
7
8
9
10
11
12
13
最经典的例子就是九九乘法表,可谓是程序猿必经之路,以下纯属个人想法

九九乘法表思路

九九乘法表中是1-9*1-9
一个1-9就可以设置一个循环1,然后1-9里各乘一遍1-9,就可以再在循环1里设置循环2。
循环1第一遍循环时是i=1输出<tr>
然后进入循环2,循环2第一遍循环时是j=1,二者相乘可获得九九乘法表第一个<td>1*1=1</td>,输出<tr><td>1*1=1</td>
然后循环2 j=2 未达到退出循环条件,所以会继续循环,这时 i=1 ,j=2,如果按上一步的执行就会得出<td>1*1=1</td><td>1*2=2</td>,这样输出来就是在同一行内
而在九九乘法表内第一行只有一个1*1,所以我们需要在1*1的的后面输入空的td,也就是<td></td>,这时候就需要判断了,可是判断的标准是什么呢?
所以我们可以看一下九九乘法表的排布规律,九九乘法表中,每当第二个数大于第一个数时,就会输出空,所以判断的标准就是当j>i时,就输出<td></td>;
好了,接下来就是j>9,退出里面的循环时输出的是<tr><td>1*1=1</td>(<td></td>)*8</tr>
这时循环1的 i ++ 也就是i=2,循环1继续,i=2进入循环2,循环2执行完成后<tr><td>1*2=2</td><td>2*2=4</td>(<td></td>)*7</tr>

如此反复,最后得出九九乘法表。

看代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
</body>
<script type="text/javascript">
var str ="<table border='1'>";
for (var i=1;i <= 9; i++) {
/*循环1 循环一次得出的内容为一列tr,tr里包含循环2循环结束后的内容*/
str += "<tr>" ;
for (var j = 1 ; j <= 9; j++) {
//循环2 循环结束后得出的内容为一行td
if(j>i ){
//当j大于i时,输出空的空格
str+="<td></td>";
}else{
//否则输出内容
str += "<td>" ;
str += j + "*" + i + "=" + (i*j);
str += "</td>" ;
}

}
str += "</tr>" ;
}
str += "<table>";
document.write(str);
</script>

</html>
1
2
3
do{}while()和while(){}
do{}while()先执行再判断,最少执行一次
while(){}先判断在执行

看代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
</body>
<script type="text/javascript">
/*for (var i=0;i <= 1000; i++) {
if (i%7==0 && i%13==0) {
document.write(i);
document.write("<br/>");
}
}*/

//获取一个可以同时整除 任意三个数的最小值

//方法1
function a (num1,num2 ,num3){
//定义函数,输入三个数可以获取同时整除这三个数的最小值
for (var i=1;i <=(num1*num2*num3); i++) {
/*三个数的积一定可以同时整除这三个数,所以可以在这个积的范围内寻找最小值*/
if (i%num1==0 && i%num2==0 && i%num3==0){
//判断是否可以同时整除这三个数
//是就写入,并退出循环
document.write("可以同时整除"+num1+","+num2+","+num3+"三个数的最小值是"+i);
document.write("<br />");
break;
}
}
}
//调用函数
a(7,13,5);

//方法2,使用while,思路与上一个相似
var i = 0;
function b (num1,num2 ,num3){
while(true){
//死循环
i++;
if (i%num1==0 && i%num2==0 && i%num3==0) {
document.write("可以同时整除"+num1+","+num2+","+num3+"三个数的最小值是"+i);
document.write("<br />");
break;//找到后退出死循环
}
}
}
b(7,13,15);
/*do{}while()先执行再判断,最少执行一次 while(){}先判断在执行*/
var j = 0;
while(j<0){
j++;
document.write(j+"我是while(){}");
}
do{
j++;
document.write(j+"我是do{}while()");
}while(j<0)
</script>

</html>