1.斐波那契数列

①分数

<script type="text/javascript">

   var a = 1
   var b = 1
   var c
   for (i = 3;i<=20;i++) {
    c =a+b
    document.write(b+"/"+c+"、")
    a = b 
    b = c
   } 
  </script>

②整数

<script type="text/javascript">

var a = 1
   var b = 2
   var c
   document.write(a+"、"+b+"、")
   for (i = 3;i<=20;i++){
    
    c = a+b;
    document.write(c+"、")
    a = b
    b = c
   }

 </script>

2.找水仙花数

思路:①水仙花数是三位数

           ②分别找出个位数、十位数、百位数

           ③判断这个数是不是等于a*a*a+b*b*b+c*c*c*

<script type="text/javascript">
   var i,a,b,c
   for (i=100;i<1000;i++) {
    a =  parseInt(i%10) //找出个位数
    b =  parseInt((i/10)%10) //找出十位数
    c =  parseInt(i/100) //找出百位数
    if(i==a*a*a+b*b*b+c*c*c){
     document.write(i+"<br>")
    }
    
   }
  </script>

3.ATM取款机复杂版(老师原创不易)

需求描述:假设一个简单的ATM机的取款过程为:
  *  首先提示用户输入密码(password),假设默认密码为111111,最多只能输入3次,
  *  超过3次则提示用户“密码错误,请取卡”,结束交易。
 
  如果用户密码正确,再提示用户选择金额(amount),
  “请输入0到6中任意数字选择对应钱数:0手动输入金额,1100元, 2300元,
   3500元, 41000元, 53000元, 65000元”。
 
  输入数字如果错误,提示“输入错误,是否继续 Y/N”,选择Y重新提示输入钱数编号,选择N提示“输入错误,请取卡!”。
 
  选择数字为1到6,打印对应钱数, 并提示“是否继续 Y/N”。
 
  选择数字0,ATM机只能输出100元纸币,
 
  自定义钱数要求最低为100元,最高为1000元。
 
  如果用户输入的金额符合上述要求,
  则打印输出用户取的钱数,并提示“取款完成,是否继续Y/N”;否则输出一句话“金额错误,
  是否继续 Y/N”,如果用户输入Y,提示用户重新选择取款金额,如果用户输入 N,
  打印“交易取消,请取卡!”

思路:

1、验证密码
      ① 密码正确,继续执行下面操作;
      ② 密码错误3次,return;
   2、取款操作。全部包含在 while循环内部。
      ① 提示选择编号;
      ② 根据编号,给money赋值。用switch结构实现。
        1~6:直接给money赋固定值,0:手动赋值操作;
      ③ 验证取款是否成功。money-本次取款金额,moneySum-本次取款之前的总金额
        判断moneySum+money是否>20000,3种情况:
            >20000 本次取款超额,但moneySum之前并不足20000,继续下次循环;
            =20000 取完本次money后,刚好满额。money可以加到sum上,然后return;
            <20000 取完本次money后,仍未上限。money可以加到sum上,继续下次循环。
      ④ 验证是否继续,while-if结构实现,有3种情况:
            Y/y 将小循环break,继续执行取款大循环;
            N/n 直接return,停止所有操作;
            其他 continue,继续执行小循环,重复输入Y/N

<script type="text/javascript">
   !function(){
    var IsPwdTrue = false;
    var a = true;
    var b = true
    for (var i = 1;i<=3;i++){
    var pwd = prompt("请输入密码")
    if(pwd == 111111){
     IsPwdTrue = true;
     break;
    }else{
     alert("密码错误");
    }
   }
    if(IsPwdTrue == false){
     alert("密码错误三次,请取卡");
     return;
    };
    
    //取款操作
    var money = 0;
    var moneySum = 0
    while(a){
     console.log("请输入0到6中任意数字选择对应钱数:");
     console.log("0à手动输入金额,1à100元, 2à300元,3à500元, 4à1000元, 5à3000元, 6à5000元");
     var num = Number (prompt("请输入操作序号:")) ;
     switch(num){
      case 0 :
      money = prompt("请输入您的取款金额")
      alert("您的本次取款金额为"+money)
      break;
      
      case 1 :
      money = 100
      alert("您的本次取款金额为"+money)
      break;
      
      case 2 :
      money = 300
      alert("您的本次取款金额为"+money)
      break;
      
      case 3 :
      money = 500
      alert("您的本次取款金额为"+money)
      break;
      
      case 4 :
      money = 1000
      alert("您的本次取款金额为"+money)
      break;
      
      case 5 :
      money = 3000;
      alert("您的本次取款金额为"+money)
      break;
      
      default:
      alert("密码输入有误,请重新输入")
      break;
     }
     
     if(moneySum+money>20000){
      alert("取款金额超过20000,取款失败");
      continue;
     }else if(moneySum+money<20000){
      moneySum +=money;
      alert("取款成功"+(moneySum));
     }else{
      moneySum +=money;
      alert("取款金额超过20000,退出系统")
      break;
     }
     while(b){
      var isGo = prompt("是否继续?(Y/N)");
      if(isGo == "Y" || isGo == "y"){
       break;
      }else if(isGo == "N" || isGo == "n"){
       alert("退出系统");
       a = false;
       b = false;
       break;
      }else{
       alert("输入错误,请重试");
       continue;
      }
     }

}
   }();
  </script>

JS嵌套循环的典型练习题的更多相关文章

  1. js部分---数组及练习题;

    数据存储--数组: 强类型语言数组 1.同一类型的数据存储的集合,在内存中是连续的 2.定义的时候需要制定长度 弱类型语言数组 1.可以存储任意类型的数据 2.在内存中不连续,不需要制定长度 定义一个 ...

  2. js部分---for循环练习题

    1有一张0.0001米的纸,对折多少次可以达到珠穆朗玛峰的高度8848: <script> /*var h=0.0001; var biao=0; for(;;) { h=h*2; if( ...

  3. MVC、MVP、MVVM、Angular.js、Knockout.js、Backbone.js、React.js、Ember.js、Avalon.js、Vue.js 概念摘录

    注:文章内容都是摘录性文字,自己阅读的一些笔记,方便日后查看. MVC MVC(Model-View-Controller),M 是指业务模型,V 是指用户界面,C 则是控制器,使用 MVC 的目的是 ...

  4. co.js - 让异步代码同步化

    近期在全力开发个人网站,并且又沉淀了一些前后端的技术.近期会频繁更新. 这篇文章首发于我的个人网站:听说 - https://tasaid.com/,建议在我的个人网站阅读,拥有更好的阅读体验. 这篇 ...

  5. 1-7 basket.js localstorage.js缓存css、js

    basket.js 源码分析   api 使用文档: http://t3n.de/news/basketjs-performance-localstorage-515119/       一.前言 b ...

  6. basket.js 源码分析

    basket.js 源码分析 一.前言 basket.js 可以用来加载js脚本并且保存到 LocalStorage 上,使我们可以更加精准地控制缓存,即使是在 http 缓存过期之后也可以使用.因此 ...

  7. JS框架的实现

    众多流行的JS库都不同程度的污染了原生JS,最典型的如Prototype ,Mootools .JQuery则完全例外,一个匿名函数执行后便诞生了集所有API为一身的强大 $ .虽然如此,JQuery ...

  8. 让你弄懂js中的闭包

    目录 闭包 闭包如何产生 闭包是什么 常见的闭包 闭包的作用 闭包的生命周期 闭包的应用 闭包的缺点 内存泄露 内存溢出 闭包面试题 闭包 之前在我执行上下文执行上下文栈这篇文章中,出现了这样一个题目 ...

  9. 【Java EE 学习 56】【酒店会员管理系统技术点总结】

    一.树状菜单加载 这是js的一个典型应用,使用zTree插件能够完成该项任务http://www.ztree.me/v3/main.php 我是用的版本:zTree2.5 使用方法: <%@ p ...

随机推荐

  1. 剑指offer--二叉树的后序遍历

    思路:对于一个二叉树的后序遍历序列来说,最后一个数一定是根节点,然后前面的数中,从最开始到第一个大于根节点的数都是左子树中的数,而后面到倒数第二个数应该都是大于根节点的,是右子树,如果后面的数中有小于 ...

  2. 再起航,我的学习笔记之JavaScript设计模式05(简单工程模式)

    我的学习笔记是根据我的学习情况来定期更新的,预计2-3天更新一章,主要是给大家分享一下,我所学到的知识,如果有什么错误请在评论中指点出来,我一定虚心接受,那么废话不多说开始我们今天的学习分享吧! 前几 ...

  3. UIButton防止被重复点击

    一.避免屏幕内多个 UIButton 被重复点击 1.在 AppDelegate 中添加[[UIButton appearance] setExclusiveTouch:YES]; 2.button. ...

  4. 【待整理】MySQL alter table modify vs alter table add产生state不一样

    MySQL:5.6.35 OS:redhat5.8 今天更新数据库某些表字段,有如下两SQL: ①alter table xx modify xxxx;(表大概是77w) ②alter table s ...

  5. 线程池ThreadPoolExecutor与阻塞队列BlockingQueue应用

    1.线程池介绍 JDK5.0以上: java.util.concurrent.ThreadPoolExecutor  构造函数签名: public ThreadPoolExecutor( int co ...

  6. js实现轮播图动画

    在网页浏览中,可以看到轮播图是无处不在的,这是一个前端工程最基本的技巧.首先看看几个网页的呈现的效果. QQ音乐: 网易云音乐: 天猫: 接下来将从简到难总结几种实现轮播图的方法. 1.样式一:鼠标滑 ...

  7. 分辨率验证工具 - 【Window Resizer】的使用 - Google扩展工具

    # 今天在Firefox上面安装"The Addon Bar"未果,于是转战Google了 # 想说的是http://cn.bing.com/ 简直太好用了 软件名称:Window Resizer 安 ...

  8. C语言极易出错的地方(更新中)

    1 时刻记住C语言风格的字符串是以'\0'结尾,无论是在内存的分配还是字符串的赋值上都需要注意

  9. mac系统读写NTFS格式的移动硬盘

    Mac OS X默认情况下,对于NTFS的移动硬盘只能读不能写,可通过将移动硬盘格式化为exFAT 或者安装NTFS相关的工具,达到可读写的目的,但对于系统的安全性方面,以上方式得不到保证:在Mac ...

  10. C++引用的作用

    引入 C语言中函数有两种传参的方式: 传值和传址.以传值方式, 在函数调用过程中会生成一份临时变量用形参代替, 最终把实参的值传递给新分配的临时变量即形参. 它的优点是避免了函数调用的副作用, 确无法 ...