JS 常见循环、分支、嵌套练习

本文最后更新于:1 年前

数字判断:

给出一个不低于两位的数字,判断是否是正整数,如果是将此数字反向输出

思路:
判断是否为一个数字:Number(num)结果不为NaN,说明为数字
判断一个数字为正数:Number(num)>0为正数
判断一个数字为整数:parseInt(num)==parseFloat(num),不是小数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
var num;
while (true){
num=prompt("");
// Number(num)>0 肯定为正数
// parseInt(num)==parseFloat(num) 肯定不是小数
if (Number(num)>0&&parseInt(num)==parseFloat(num)) {
break;
}
}
while (num>0){
var a = parseInt(num%10);
document.write(a);
num=parseInt(num/10);
}

日期判断:

判断是否是闰年

1
2
var year=prompt("输入年份");
document.write(year%4==0&&year%100!=0||year%400==0?"是闰年":"不是闰年");

输入年月日,判断这一天是这一年的第几天

下面两种方法都假设当年是平年,即2月28天。

方法一:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
var year = parseInt(prompt("请输入年份"));
var month = parseInt(prompt("请输入月份"));
var day = parseInt(prompt("请输入日期"));
/*假设都是平年,2月28天*/
var sum=0;
for(var i=1;i<month;i++){
if(i==1||i==3||i==5||i==7||i==8||i==10||i==12){
sum+=31;
}else if(i==4||i==6||i==9||i==11){
sum+=30;
}else if(i==2){
sum+=28;
}
}
if((year%4==0&&year%100!=0||year%400==0)&&month>2){
sum+=(day+1);
}else{
sum+=day;
}
document.write("您输入的"+year+"-"+month+"-"+day+"为该年的第"+sum+"天");

方法二:

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
var year = parseInt(prompt("请输入年份"));
var month = parseInt(prompt("请输入月份"));
var day = parseInt(prompt("请输入日期"));
/*假设都是平年,2月28天*/
var sum=0;
switch (month-1){
case 11: //每个case后没有break,可以实现天数的累加
sum+=30;
case 10:
sum+=31;
case 9:
sum+=30;
case 8:
sum+=31;
case 7:
sum+=31;
case 6:
sum+=30;
case 5:
sum+=31;
case 4:
sum+=30;
case 3:
sum+=31;
case 2:
sum+=28;
case 1:
sum+=31;
case 0:
sum+=0;
}
if((year%4==0&&year%100!=0||year%400==0)&&month>2){
sum+=(day+1);
}else{
sum+=day;
}
document.write("您输入的"+year+"-"+month+"-"+day+"为该年的第"+sum+"天");

图形输出:

利用嵌套循环输出以下图形:

长方形 直角三角形 平行四边形 菱形
****
****
****
****
****
*
**
***
****
*****
*****
 *****
  *****
   *****
    *****
    *
   ***
  *****
*******
  *****
   ***
    *

思路:
1、确定图形一共几行,即为外层的循环次数
2、确定每行有几种元素,代表有几个内层循环
3、确定每种元素的个数,即为每个内层循环的次数

通常,找出每种元素个数,与行号的关系式,即为当前内层循环的最大值(从1开始循环)

长方形:

1
2
3
4
5
6
7
document.write("长方形"+"<br />");
for (i=1;i<=5;i++) {
for (j=1;j<=4;j++) {
document.write("*");
}
document.write("<br />");
}

直角三角形:

1
2
3
4
5
6
7
document.write("三角形"+"<br />");
for (i=1;i<=5;i++) {
for (j=1;j<=i;j++) {
document.write("*");
}
document.write("<br />");
}

平行四边形:

1
2
3
4
5
6
7
8
9
10
document.write("平行四边形"+"<br />");
for (i=1;i<=5;i++) {
for (n=1;n<=i;n++) {
document.write("&nbsp;");
}
for (j=1;j<=5;j++) {
document.write("*");
}
document.write("<br />");
}

菱形:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
document.write("菱形"+"<br />");
for (var i=1;i<=4;i++) {
//输出空格
for(var k=1;k<=4-i;k++){
document.write("<span style='display: inline-block;width: 7px;'></span>");
}
//输出*
for(var j=1;j<=2*i-1;j++){
document.write("*");
}
document.write("<br/>");
}
for (var i=1;i<=3;i++) {
//输出空格
for(var k=1;k<=i;k++){
document.write("<span style='display: inline-block;width: 7px;'></span>");
}
//输出*
for(var j=1;j<=7-2*i;j++){
document.write("*");
}
document.write("<br/>");
}

打印数字等边三角形:

        1
      121
    12321
   1234321
  123454321
12345654321

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
for(var i=1;i<=4;i++){
// 空格
for(var k=1;k<=4-i;k++){
document.write("<span style='display: inline-block;width: 8px;'></span>");
}
var n = 1;
// 递增
for(var j=1;j<=i;j++){
document.write(n);
n++;
}
n-=2;
// 递减
for(var m=1;m<=i-1;m++){
document.write(n);
n--;
}
// 换行
document.write("<br/>");
}

九九乘法表:

img

1
2
3
4
5
6
7
8
9
10
document.write("<table width='700'>")
for(var i=1;i<=9;i++){
document.write("<tr>")
for(var j=1;j<=i;j++){
document.write("<td>"+i+"*"+j+"="+i*j+"</td>");
}
document.write("</tr>")
}
document.write("</table>")
document.write("<br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />");

本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!