js基础算法题

  1. 根据用户输入的年份,打印是否是闰年。
    思路
`// 1). 获取用户输入的年份
  let year = parseInt(prompt("请输入年份:"));
		if(!isNaN(year)){
 // 2). 根据闰年的条件,判断是否是闰年,
 // 可以被4整除但是不能被100整除,可以被400整除*/
        if((year % 4  ==0) && (year%100!=0) || (year % 400 ==0)){
            document.write(year + "是闰年");
           } else{
                	document.write(year + "不是闰年");
	            }
		        } else{
		            alert("请输入合法的年份");
		        } 	
  1. 凑钱1元,2元,5元凑20元钱有多少种可能,分别打印出来
let num1; //一元的个数
        let num2; //二元的个数
        let num3; //五元的个数
        let count1 = 0; //用于记录多少种方式
        for(num1 = 0;num1<=20;num1++){
            for(num2=0;num2<=10;num2++){
                for(num3=0;num3<=4;num3++){
                    if(num1 + num2*2 + num3*5 == 20){
                        count1 ++;
                        document.write("20元由" + num1 + "个一元," + num2 + "个二元," +num3 + "个五元组成 
"
); } } } } document.write("20元的组成方式一共有" + count1 + " 种");
  1. 通过for循环实现百钱买百鸡的题:公鸡5元每只,母鸡3元每只,小鸡3只1元,100元买一百只鸡多少种办法
document.write("百钱买百鸡");
        let count2 = 0;
        for(let gj = 0;gj<=20;gj++){ //公鸡
            for(let mj = 0;mj<=33;mj++){ //母鸡
                for(let xj=0;xj<=100;xj++){ //小鸡
                  if((gj*5 + mj*3 + 1/3 *xj == 100) && (gj + mj + xj == 100)){
                      count2 ++ ;
                        document.write("公鸡数量:" + gj + ",母鸡数量" + mj + ",小鸡数量:" + xj + "
"
); } } } } document.write("百钱买百鸡的方式一共有:" +count2 +"种");
  1. 公园里有一只猴子和一堆桃子,猴子每天吃掉桃子总数的一半,把剩下一半中扔掉一个坏的。 到第七天的时候,猴子睁开眼发现只剩下一个桃子。问公园里刚开始有多少个桃子?
document.write("猴子和桃子");
     /*     天数 1     2           3                4           5
            桃子 1   (1+1)*2=4  (4+1)*2 = 10    (10+1)*2=22     
    */
        let peach = 1; //第一天的桃子数
        // i=1代表的第二天,i=6就是第七天也就是公园里最开始的时候
        for(let i = 1;i<=6;i++){
            peach = (peach + 1)*2;
        }
        document.write("公园里最开始有" + peach + "个桃子
"
);
  1. 打印出所有的 "水仙花数 ",所谓 "水仙花数 "是指一个三位数, 其各位数字立方和等于该数本身。
    例如:153是一个 "水仙花数 ",因为153=1的三次方+5的三次方+3的三次方。
document.write("水仙水花数");
        // 思路:
        // 首先:三位数
        // 其次:该三位数各位数上的数字立方和等于该数字
        for(let i = 100;i<1000;i++){
            let a = i%10;  //个位
            let b = parseInt(i/10)%10; //十位
            let c = parseInt(i/100); //百位

            // 该三位数各位数上的数字立方和等于该数字
            /* if(a*a*a + b*b*b + c*c*c == i){
                document.write(i + "
"); } */
// Math.pow(x,y) 求x的y次方 if(Math.pow(a,3) + Math.pow(b,3) + Math.pow(c,3) == i){ document.write(i + "
"
); } }
  1. 有一对幼兔,幼兔1个月后长成小兔,小兔1个月后长成成兔并生下一对幼兔, 问第1月到第13月每个月,幼兔、小兔、成兔对数分别是多少。
// 斐波那契数列 
        // 月份  1    2   3   4   5   6   7
        // 幼兔  1    0   1   1   2   3   5
        // 小兔  0    1   0   1   1   2   3
        // 成兔  0    0   1   1   2   3   5
        //  总数  1   1   2   3
        
        // 成兔 = 上个月小兔 + 上个月成兔
        // 小兔 = 上个月幼兔
        // 幼兔 = 这个月成兔```
let youngR = 1; //幼兔
        let smallR = 0; //小兔
        let adultR = 0; //成兔
        // 从第一个月到第十三个月
        for(let i = 1; i<=13; i++){
            if(i == 1){ //第一个月
                document.write("第" + i + "月,幼兔数量" + youngR + ",小兔数量" + smallR + ",成兔数量" + adultR +"
"
); } else{ adultR = smallR +adultR; smallR = youngR; youngR = adultR; document.write("第" + i + "月,幼兔数量" + youngR + ",小兔数量" + smallR + ",成兔数量" + adultR +"
"
); } }

你可能感兴趣的:(js基础算法题)