JavaScript-5(常见题目-4)

1 假设一个简单的ATM机的取款过程是这样的:
首先提示用户输入密码(password),
最多只能输入三次,超过3次则提示用户“密码错误,
请取卡”结束交易。如果用户密码正确,
再提示用户输入取款金额(amount),
ATM机只能输出100元的纸币,一次取钱数要求最低
100元,最高1000元。
若用户输入的金额符合上述要求,则打印输出用户取得钱数,
最后提示用户“交易完成,请取卡”,否则提示用户重新输入金额。

假设用户密码是111111,请编程实现。

<script type="text/javascript">
    //创造变量k,用于记录输错密码的次数
    var k=1
    //for循环,循环三次
    for(var i = 1;i < 4;i++){
        //通过k记录循环次数
        k++
        //每次循环,都弹出“输入密码”的输入框
        var mima = Number(prompt("请输入密码"));
        //当密码正确时,输入钱数,,并判定钱数是否合乎规范,如果合乎规范打印钱数,然后结束循环,否则弹出“请重新输入金额”。
        if(mima == 111111){
            var money = Number(prompt("请输入您要取款的金额"));
             if(money%100==0 && money>99 && money<1001){
        document.write(money);
        alert("交易成功,请取出卡");
    }else{                                      
        alert("请您重新输入金额");
    }
        break;    
        }
 }    //次数超出三次后,弹出请退卡,结束。
        if(k>3){
          alert("请退卡");
         
 }
   
</script>

2、公园里有一只猴子和一堆桃子,猴子每天吃掉桃子总数的一半,把剩下一半中扔掉一个坏的。到第七天的时候,猴子睁开眼发现只剩下一个桃子。问公园里刚开始有多少个桃子?

思路分析:难点在于逻辑的起点是未知的,可以设定一个无限循环的for语句,来预设起点,然后判断条件满足后,结束循环。

<script type="text/javascript">
	//引入sum,方便计算6天后的桃子剩余数目
    var sum;
    //引入for外循环,将i不断自加1,然后带入下个外循环进行6次乘以0.5再-1的运算
	for(var i=1;i>0;i++){
		sum = i;
		for (var k =1;k<7;k++) {
			sum = sum*0.5-1;
		}
		//判断最后计算结果是否满足还剩1,如果满足,输出i的值,结束循环。
		if(sum == 1){
			document.write(i);
			break;
		}
	}

	
</script>

3、有一个棋盘,有64个方格,在第一个方格里面放1粒芝麻重量是0.00001kg,第二个里面放2粒,第三个里面放4,计算棋盘上放的所有芝麻的重量。

思路分析:思路主要分为两步,第一步计算每一个方格中有多少芝麻,第二步累加。经观察发现第n个方格为2的(n-1)次方,所以第64个方格有2的63次方的数量的芝麻

外层设置一个1~63的循环,然后设置每次循环累乘2,然后从1累加累城的结果。

<script type="text/javascript">
   var p = 1 ;
   var sum = 1;
   for(var i=1;i<64;i++){
   	p=p*2;
   sum = sum+p;
   }
   var zhong = sum*0.00001;
   document.write("芝麻重量:"+zhong+"kg")
   
</script>

4、实现1!+2!+3!+4!+5!+....+n!

思路分析:与棋盘计算芝麻总重的逻辑类似,n!的数值为1x2x3x...n,为1到n的累乘,所以设置一个从1到n的循环,

然后一次循环先累乘,再累加。

<script type="text/javascript">
	var sum = 0;
	var p = 1 ;
	var n = Number(prompt("请输入n的值"));
	for(i=1;i<=n;i++){
		p=p*i;
		sum=sum+p
	}
	document.write(sum);
</script>
5 、假设某人有100,000现金.每经过一次路口需要进行一次交费. 交费规则为当他现金大于50,000时
每次需要交5%;如果现金小于等于50,000时每次交5,000.请写一程序计算此人可以经过多少次这个路口

思路分析:该人的缴费分两种情况,可以通过两个平行的while,每个while里一个相同的记次器,不同的累计公式来完成运算。
<script type="text/javascript">
	var m = 100000;
	var k = 0;
	while(m > 50000){
		k++;
		m = m*0.95;
	}
	while(m <= 50000 && m >=5000){
		k++;
		m = m -5000;
	}
	console.log(k);
</script>
原文地址:https://www.cnblogs.com/zhangrui0328/p/8797325.html