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. 使用我的编译器,下面的代码 int i=7; printf("%d\n", i++ * i++); 返回 49?不管按什么顺序计算, 难道不该打印出56吗?

    尽管后缀自加和后缀自减操作符 ++ 和 -- 在输出其旧值之后才会执行运算, 但这里的"之后"常常被误解.没有任何保证确保自增或自减会在输出变量原值之 后和对表达式的其它部分进行计 ...

  2. 特殊的ip地址

    特殊IP地址 一.0.0.0.0 严格说来,0.0.0.0已经不是一个真正意义上的IP地址了.它表示的是这样一个集合:所有不清楚的主机和目的网络.这里的“不清楚”是指在本机的路由表里没有特定条目指明如 ...

  3. Linux 粘着位(sticky bit)

    当设置粘着位时只有root或者owner才能删除.重命名文件. 示例: 用户apple默认组为fruit. [root@titan ~]# id apple uid=1001(apple) gid=1 ...

  4. Mysql 基于日志点的主从复制(实操)

    实现环境: Master 主:192.168.100.165 (Mysql 5.6.36) Slave 从 :192.168.100.156 (Mysql 5.6.36) 步骤1.在主DB服务器上建立 ...

  5. 《Python学习手册》读书笔记【转载】

    转载:http://www.cnblogs.com/wuyuegb2312/archive/2013/02/26/2910908.html 之前为了编写一个svm分词的程序而简单学了下Python,觉 ...

  6. 程序设计中的数学思维函数总结(代码以C#为例)

    最近以C#为例,学习了程序设计基础,其中涉及到一些数学思维,我们可以巧妙的将这些逻辑问题转换为代码,交给计算机运算. 现将经常会使用到的基础函数做一总结,供大家分享.自己备用. 1.判断一个数是否为奇 ...

  7. android studio多渠道多包名多apk打包

    转自  利用 Android Studio 和 Gradle 打包多版本APK 搬砖的道路上,经常会有各种不同的需求,比如今天就碰到过一个打包版本的apk的要求, 比如一个apk给多个客户使用,如张三 ...

  8. visual studio code 调试nodejs 配置简单HTTP服务器

    介绍 Visual Studio Code是一个轻量级的Web集成开发环境on Linux,Mac and Windows,特别是作为前端人员来了, 多了一个可供选择的生产力工具IDE,调试js代码简 ...

  9. MySQL GROUP BY多个字段分组用法详解

    mysql语句中group by 很容易理解 是分组查询.比如 select sum(score) from user group by name 意思是查询每个人的分数总和但是, select su ...

  10. Sql Server数据库使用触发器和sqlbulkcopy大批量数据插入更新

    需要了解的知识 1.触发器 2.sqlbulkcopy 我的用途 开发数据库同步的工具,需要大批量数据插入和数据更新. 方式 使用SqlBulkCopy类对数据进行数据批量复制,将需要同步数据的表新建 ...