JavaScript循环结构练习

19 篇文章 0 订阅

循环结构的练习

题1:输出1+2+3+…+100的值

var sum = 0
var i = 1
while(i<=100)
{
    sum += i
    i++
}
console.log(sum)

输出结果:
运行结果

题2:输出1~100之间所有的奇数和、偶数和

方法一

var sum1 = 0  //奇数和
var sum2 = 0  //偶数和
var i = 1
while(i<=100)
{
    if(i%2!=0)
    {
        sum1 += i
    }
    else
    {
        sum2 +=i
    }
    i++
}
console.log("奇数和:"+sum1)
console.log("偶数和:"+sum2)

输出结果:
运行结果

方法二

var sum1 = 0  //奇数和
var sum2 = 0  //偶数和
var i = 1
while (i<=100) 
{
    sum1 += i
    i = i + 2
}
console.log("奇数和:"+ sum1)

i = 2
while (i<=100) 
{
    sum2 += i
    i = i + 2
}
console.log("偶数和:"+ sum2)

运行结果:
运行结果

题3:水仙花数

水仙花数是一个三位数,每位数字的立方和等于该数

思路:

  • 三位数循环范围:100~999
  • 先找出该三位数个位、十位、百位上的数字
  • 再判断每位数字立方和是否等于该数
var i = 100
var b  //百位
var s  //十位
var g  //个位
while(i<1000)
{
    b = parseInt(i/100)
    s = parseInt((i-b*100)/10)
    g = i-b*100-s*10 
    if(b**3+s**3+g**3==i)
    {
        console.log(i)
    }
    i++
}

输出结果:
运行结果

题4:斐波那契数列

计算斐波那契数列的前20项之和。

斐波那契数列: 1 1 2 3 5 8 13 21…

方法一

var sum = 0
var i = 1
var a = 1
var b = 1
while (i<=10) 
{
    sum += a + b
    a = a + b
    b = a + b
    i++
}
console.log(sum)

输出结果:
运行结果

方法二

var sum = 0
var i = 1
var a = 1
var b = 1
var sum = a + b 
while (i<=18) 
{
    h = a + b
    d = b
    b = h
    a = d
    sum += h 
    i++
}
console.log(sum)

输出结果:
运行结果

题5:判断某数是否为素数

输入一个整数,判断它是否为素数。

素数:除了1和它本身,无法整除其他数字

思路:

  • 输入整数为1或2:是素数
  • 输入其它整数:若能整除 2 ~ (它本身-1)的数,则不是素数;若都不能整除,则是素数
var n = prompt("输入一个整数:")
var i = 2
var b
if(n==1||n==2)
{
    console.log("是素数")
}
while (i<n) 
{
    if(n%i==0)
    {
        console.log("不是素数")
        b = false
        break
    }
    else
    {
        i++
        b = true
    }
}
if(b==true)
{
    console.log("是素数")
}

运行结果:
输入数字
运行结果

题6:输入年月日,输出季节及天数

输入年、月、日,输出: (1)月份属于哪个季节 (2)日期是该年中的第几天

  • 季节:3 ~ 5是春季,6 ~ 8是夏季,9~11是秋季,12、1、2是冬季
  • 大月有31天:1 3 5 7 8 10 12
  • 小月有30天:4 6 9 11
  • 闰年2月有29天,平年2月有28天

思路:

  • 先判断年份是否为平闰年(关系到2月的天数)
  • 通过switch…case判断输入月份所在的季节
  • 天数 =(所输入月份 - 1)前所有月天数相加 + 输入日期(用循环来写)
var year = parseInt(prompt("输入年份:"))
var month = parseInt(prompt("输入月份:"))
var day = parseInt(prompt("输入日期:"))
var y
var t=0
var i =1
var num1=0
var num2=0
var num3=0
var num4=0
// 判断是否为闰年
if(year%400==0||(year%4==0&&year%100!=0))
{
    y = 1 //闰年
}
else
{
    y = 0 //平年
}
//判断季节
switch(month)
{
    case 3: 
    case 4: 
    case 5: console.log("春季")
    break
    case 6: 
    case 7: 
    case 8: console.log("夏季")
    break
    case 9: 
    case 10: 
    case 11:console.log("秋季")
    break
    case 12: 
    case 1: 
    case 2:console.log("冬季")
    break
} 
//判断是该年的哪一天
// 1 3 5 7 8 10 12 大月
// 2
// 4 6 9 11 小月 
while (i<=month-1) 
{
    if(i==1||i==3||i==5||i==7||i==8||i==10||i==12)
    {
        num = 31
    }
    else if(i==4||i==6||i==9||i==11)
    {
        num = 30
    }
    else if(i==2&&y==1)
    {
        num = 29
    }
    else if(i==2&&y==0)
    {
        num = 28
    }
    t += num
    i++
}
var d = day + t
console.log(d)

输出结果:
输入年份

输入月份
输入日期

运行结果

题7:计算 1! + 2! + 3! + … + 10!

计算 1! + 2! + 3! + … + 10!

var i
var sum = 0
for(i = 1;i<=10;i++) //算这十个数
{
    var s = 1 
    for(j = 1 ; j <= i ; j++) //算每个数的阶乘
    {
        s *= j
    }
    sum += s
}
console.log(sum)

输出结果:
运行结果

题8:输出100以内的所有素数

输出100以内的所有素数

思路:

  • 外循环:循环这100个数
  • 内循环:判断该数是否为素数(除了1和它本身,其它数都无法整除)

方法一

var i  
for(i = 1;i<=100;i++)
{
    if(i==1)
    {
        console.log(i)
    }
    var b = true  //不能声明在外循环外面 否则4之后b一直为false无法输出
    for(j=2;j<i;j++)
    {
        if(i%j==0)
        {
            b = false
            break
        }
    }
    if(b==true&&i>1)
    {
        console.log(i)  
    }
}    

输出结果:
运行结果

方法二

for(var i=1;i<=100;i++)
{
    if(i==1)
    {
        console.log(i)
    }
    else
    {
        for(var j=2;j<i;j++)
        {
            if(i%j==0)
            {
                break
            }
        }
        if(j>=i)
        {
            console.log(i)
        }
    }
}

输出结果:
运行结果

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值