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>