JS嵌套循环的典型练习题
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手动输入金额,1100元, 2300元,
3500元, 41000元, 53000元, 65000元”。
输入数字如果错误,提示“输入错误,是否继续 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嵌套循环的典型练习题的更多相关文章
- js部分---数组及练习题;
数据存储--数组: 强类型语言数组 1.同一类型的数据存储的集合,在内存中是连续的 2.定义的时候需要制定长度 弱类型语言数组 1.可以存储任意类型的数据 2.在内存中不连续,不需要制定长度 定义一个 ...
- js部分---for循环练习题
1有一张0.0001米的纸,对折多少次可以达到珠穆朗玛峰的高度8848: <script> /*var h=0.0001; var biao=0; for(;;) { h=h*2; if( ...
- 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 的目的是 ...
- co.js - 让异步代码同步化
近期在全力开发个人网站,并且又沉淀了一些前后端的技术.近期会频繁更新. 这篇文章首发于我的个人网站:听说 - https://tasaid.com/,建议在我的个人网站阅读,拥有更好的阅读体验. 这篇 ...
- 1-7 basket.js localstorage.js缓存css、js
basket.js 源码分析 api 使用文档: http://t3n.de/news/basketjs-performance-localstorage-515119/ 一.前言 b ...
- basket.js 源码分析
basket.js 源码分析 一.前言 basket.js 可以用来加载js脚本并且保存到 LocalStorage 上,使我们可以更加精准地控制缓存,即使是在 http 缓存过期之后也可以使用.因此 ...
- JS框架的实现
众多流行的JS库都不同程度的污染了原生JS,最典型的如Prototype ,Mootools .JQuery则完全例外,一个匿名函数执行后便诞生了集所有API为一身的强大 $ .虽然如此,JQuery ...
- 让你弄懂js中的闭包
目录 闭包 闭包如何产生 闭包是什么 常见的闭包 闭包的作用 闭包的生命周期 闭包的应用 闭包的缺点 内存泄露 内存溢出 闭包面试题 闭包 之前在我执行上下文执行上下文栈这篇文章中,出现了这样一个题目 ...
- 【Java EE 学习 56】【酒店会员管理系统技术点总结】
一.树状菜单加载 这是js的一个典型应用,使用zTree插件能够完成该项任务http://www.ztree.me/v3/main.php 我是用的版本:zTree2.5 使用方法: <%@ p ...
随机推荐
- linux--软件包管理工具
linux平台软件包管理: RPM/DPKG 两大阵营简介 在 GNU/Linux( 以下简称 Linux) 操作系统中,RPM 和 DPKG 为最常见的两类软件包管理工具,他们分别应用于基于 RPM ...
- js存款计算器原生小demo
大家好,本人是初入前端的一枚程序猿,深知js底层开发的重要性,这也是我的软肋所在(曾经以为),渐渐的明白了一个道理,饭要一口口吃,路要一步步走,这也是我想告诉给所有刚刚进入IT行业的技术员们,沉下心, ...
- springMVC修改用户请求内容
最近在做一个微信相关的网站,很多地方涉及到微信表情的输入,导致内容无法插入到数据库,虽然有用到一个表情过滤的工具类,但是需要过滤的地方比较多,于是想到在过滤器中过滤用户请求的内容. request这个 ...
- Android -- 从源码的角度一步步打造自己的TextView
1,自定义控件一直是我们的痛点,今天就和大家一点点去了解了解,首先一般的自定义控件都是继承于View类,所以我们先来看看view的一些重要的方法,这是官方文档,大家想了解更多也可以去看看,这里我展示对 ...
- VsCode 附加Chorme调试TS方法
命令行进入:[谷歌浏览器安装目录/]/chrome.exe --remote-debugging-port=9222 关闭所有窗口并结束Chorme进程(如果无法附加调试做此操作,可以正常调试请忽略. ...
- jQuery之jquery.lazyload.js插件用法
研究背景:网站中如果图片过多,就会因为加载图片而等待很长时间,此时我们就用到图片延时加载插件jquery.lazyload.js,这个插件可以让我们在向下滚动的时候加载图片.让网页首屏尽可能快的加载进 ...
- brk(), sbrk() 用法详解
brk() , sbrk() 的声明如下: #include <unistd.h> int brk(void *addr); void *sbrk(intptr_t increment); ...
- Windows环境下Mysql如何快速导入或恢复表为innodb的数据
注: 一.这个是对Innodb的数据恢复.MyISAM不需要这么麻烦,只要数据文件存在直接复制过去就可以. 二.该方法只适用于 1:想要恢复或者导入表的ibd文件和frm文件 2:你不仅需有ibd和f ...
- Flask-RESTful接口开发学习笔记一:实现简单的GET请求
1.首先安装需要依赖的第三方包: (1):Flask (2):Flask-RESTful 如何安装就不在啰嗦,pip也好,下载到本地再安装也好,看你随意. 2.我们先实现GET请求. Q:什么是GET ...
- java中Object转String
Object转为String的几种形式 在java项目的实际开发和应用中,常常需要用到将对象转为String这一基本功能.本文将对常用的转换方法进行一个总结.常用的方法有Object.toStri ...