15-循环小demo
05-循环的小demo
1.补0
<script>
// 数字小于10,在前面补0
var num1 = +prompt('请输入0~59的数字');
var result = num1 < 10 ? '0' + num1 : num1;
alert(result);
</script>
2.求出1-100间所有个位数不为3的和(continue)
<script>
//需求:求出1-100间所有个位数不为3的和
// 1.定义一个sum变量来储存和
var sum = 0;
// 2.先获取1-100的所有数
for (var i = 1; i <= 100; i++) {
// 3.10以下个位是3的数字只有一个,10-100之间的数字需要单独获取个位数
if (i >= 10 && i < 100) {
// 4.2位数获取各位数就是对10取模
var ge = parseInt(i % 10);
// 5.如果个位数是3,就打印出来并且跳过
if (ge === 3) {
console.log(i);
continue;
}
// 6.sum加每一个i
sum += i;
}
}
// 7.输出sum,注意10位数以下也有一个个位数是3的数,需要减去
console.log(sum - 3);
</script>
3.求从1开始第35个能被7和3整除的整数
<script>
// 需求:求从1开始第35个能被7和3整除的整数
// 1.定义一个变量储存那个数
var sum = 0,
// 2.定义一个变量计算是第几个
num = 0;
// 3.循环
for (var i = 1; i > 0; i++) {
// 4.能被7整除并且能被3整除
if (i % 7 === 0 && i % 3 === 0) {
// 5.产生一个数就自增1
num++;
// 6.产生一个数就与sum相加
sum += i;
}
// 7.输出第35个
if (num === 35) {
console.log(sum);
console.log(num);
break;
}
}
</script>
4.简易的ATM机
<script>
// - 里面现存有 100 块钱。
// - 如果存钱,就用输入钱数加上先存的钱数, 之后弹出显示余额提示框
// - 如果取钱,就减去取的钱数,之后弹出显示余额提示框
// - 如果显示余额,就输出余额
//1.初始余额 100
var money = 100;
//2.存钱
var save = 0;
//3.取钱1
var get = 0;
while (true) {
var user = +prompt('请输入您要的操作:' + '\n1.存钱' + '\n2.取钱' + '\n3.显示余额' + '\n4.退出');
//存钱
if (user === 1) {
save = +prompt('请输入要存入的金额');
var res = getBalance();
alert('您的余额是' + res);
} else if (user === 2) {//取钱
get = +prompt('请输入要取出的金额');
var res = getBalance();
if (res >= 0) {
alert('您的余额是' + res);
} else {//余额不足
alert('余额不足');
}
} else if (user === 3) {//显示余额
var res = getBalance();
alert('您的余额是' + res);
} else if (user === 4) {//退出
break;
} else {
alert('指令有误,请输入1~4指令');
}
}
function getBalance() {
var balance = money + save - get;
return balance;
}
</script>
5.登录
<script>
// 需求:用户输入用户名和密码,只要不是admin、888888就一直提示用户名或密码错误,请重新输入。
// 1.接收用户输入的用户名
var user = prompt('用户名');
// 2.接收用户输入的密码
var myPass = prompt('密码');
// true:表示while是一个死循环
while (true) {
// 3.如果用户名和密码都正确
if (user === 'admin' && myPass === '888888') {
alert('登陆成功,欢迎回来');
break; //当用户登陆成功之后,跳出循环。
} else if (user !== 'admin') {
alert('用户名错误,请重新输入');
//4.如果用户名错误,重新弹出输入框接收用户名
user = prompt('请重新输入用户名');
} else {
alert('密码错误');
//4.如果密码错误,重新弹出输入框接收密码
myPass = prompt('请重新输入密码');
}
}
</script>
do...while
<script>
// 直到密码正确才停止
do {
var user = prompt('请输入用户名');
var mypass = prompt('请输入密码');
} while (user !== 'admin' || user !== '123456')
</script>
三次机会
<!-- 密码 -->
<script>
// 1.获取用户输入的东东
var uPass = prompt('请输入密码');
// 2.判断
if (uPass !== '88888') {
// 3.三次机会
for (var i = 2; i > 0; i--) {
uPass = prompt('密码错误,您还有' + i + '次机会');
}
alert('登录失败,账号锁定');
} else {
alert('登陆成功');
}
</script>
q强制退出
<script>
// 输入密码,知道密码正确或输入q才停止程序
// 1.获取用户输入的东东
var user = prompt('请输入用户名');
var uPass = prompt('请输入密码');
// 3.进入死循环
while (true) {
// 如果输入正确,出循环
if (user === 'admin' && uPass === '888888') {
alert('登陆成功');
break;
} else {
// 不正确一直重新输入
user = prompt('请重新输入用户名');
uPass = prompt('请重新输入密码');
// 4.输入q强制退出
if (user === 'q' || uPass === 'q') {
break;
}
}
}
</script>
6.录年龄
<script>
//需求:输入5个人的年龄,计算年龄之和和平均年龄,如果年龄为负数或大于100,则提示错误重新输入
// 1.定义sum接收年龄
var sum = 0;
// 2.循环5次
for (var i = 1; i <= 5; i++) {
// 3.定义age接收用户输入的年龄
var age = +prompt('请输入第' + i + '个人的年龄');
// 4.建立一个死循环
while (true) {
// 5.如果用户输入不为空
if (age !== '') {
// 6.sum加上每一个age
sum += age;
// 7.当年龄有误
while (age < 0 || age > 100) {
// 8.减去输错的年龄
sum -= age;
// 9.重新赋值年龄
age = +prompt('第' + i + '个人年龄有误请重新输入年龄');
// 10.重新计算年龄
sum += age;
}
// 最终退出循环
break;
} else {
// 11.如果用户输入为空就让他重新输入
var age = +prompt('输入错误:请重新输入第' + i + '个人的年龄');
}
}
}
alert('年龄总和是:' + sum + '\n平均年龄是:' + sum / 5);
</script>
7.水仙花数
<!-- 水仙花:三位数,且各位上的数立方和等于它本身 -->
<!-- abc = a*a*a + b*b*b + c*c*c -->
<script>
// 1.遍历所有的三位数
for (var i = 100; i <= 999; i++) {
// 2.取每个位上的数值
var ge = i % 10;
var shi = parseInt(i / 10 % 10);
var bai = parseInt(i / 100 % 10);
// 3.判断是否为水仙花
if ((ge * ge * ge + shi * shi * shi + bai * bai * bai) === i) {
console.log(i);
}
}
</script>
8.图形类
正方形
<script>
var start = '';
// 外层循环控制行
for (var i = 0; i < 5; i++) {
// 内层循环控制列
for (var j = 0; j < 5; j++) {
start += '卍';
}
start += '\n';
}
console.log(start);
</script>
正反直角三角形
<script>
// 1.定一个字符串
var start = '';
for (var i = 0; i < 10; i++) {
// 正直角三角形
for (var j = 0; j < i; j++) {
start += '卍';
}
start += '\n';
// 倒直角三角形
for (var j = i; j < 10; j++) {
document.write('卍');
}
document.write('</br>');
}
console.log(start);
</script>
等腰三角形
<script>
// 1.获取要的行
var row = +prompt('你要几行的?');
// 外层行
for (var i = 1; i <= row; i++) {
//前空格
for (var r = row - i; r >= 0; r--) {
document.write(' ');
}
// 卍
for (var j = 1; j <= 2 * i - 1; j++) {
document.write('卍');
}
// 后空格
for (var r = row - i; r >= 0; r--) {
document.write(' ');
}
document.write('</br>');
}
</script>
菱形
<script>
// row = 6
// 菱形上:1, 3, 5, 7, 9,11
// * = 2n-1
var row = +prompt("输入行数");
// 上面一个等腰三角形
for (var i = 1; i <= row; i++) {
// 空格=总行数-当前行,递减
for (var r = row - i; r >= 0; r--) {
document.write(' ');
}
for (var j = 1; j <= 2 * i - 1; j++) {
document.write('卍');
}
document.write('</br>');
}
// 下面一个少一个定边的等腰三角形
// 菱形下:9,7,5,3,1
// 卍 = (2*(6-当前行))-1
for (i = 1; i <= row - 1; i++) {
// _从0开始
for (r = 0; r <= i; r++) {
document.write(' ');
}
for (j = (2 * (row - i)) - 1; j >= 1; j--) {
document.write('卍')
}
document.write('</br>');
}
</script>
9.组数字
<script>
// 有 1 、 2 、 3 、 4 个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
// 1.定义一个count储存个数
var count = 0;
// 2.循环4次百位
for (var a = 1; a <= 4; a++) {
// 3.循环4次十位
for (var b = 1; b <= 4; b++) {
// 4.循环4次个位
for (var c = 1; c <= 4; c++) {
// 5.个位十位百位互不相等
if (a !== b && a !== c && b !== c) {
count++;
console.log(a * 100 + b * 10 + c);
}
}
}
}
console.log('总共有' + count + '个');
</script>
10.判断年月日
<script>
// 输入年月日,判断输入的日期是这一年的第几天
// 1.获取用户输入的东东
var year = parseInt(prompt("请输入年份:"));
var month = parseInt(prompt("请输入月份:"));
var day = parseInt(prompt("请输入日期:"));
// 2.第几天
var sum = 0;
//3. 开关
var flag = true;
// 4.判断用户输入的是否合理范围
if (year > 0 && year < 9999 && month <= 12 && month >= 1 && day <= 31 && day >= 1) {
// 5.遍历月份
for (var i = 1; i < month; i++) {
// 大月
if (i === 1 || i === 3 || i === 5 || i === 7 || i === 8 || i === 10 || i === 12) {
sum += 31;
// 小月
} else if (i === 4 || i === 6 || i === 9 || i === 11) {
sum += 30;
// 二月
} else if (i === 2) {
sum += 28;
}
}
} else {
alert('您输入的日期有误');
// 输入错误,关闭开关,退出选混
flag = false;
}
// 7.闰年的2月有29天,所以2月以后的月份日子都+1
if ((year % 4 === 0 && year % 100 !== 0 || year % 400 === 0) && month > 2) {
sum += (day + 1);
} else {
sum += day;
}
if (flag) {
alert('您输入的日期为' + year + '年' + month + '月' + day + '日' + '\n是这年的第' + sum + '天');
}
</script>
11.翻转数字
<!-- 输入一个数,弹出这个数字的反转数 -->
<script>
var num = prompt('请输入一个数字');
// 反转数
var num1 = 0;
while (num >= 10) {
// 个位
num1 = num % 10;
// 十位
num = parseInt(num / 10 % 10);
alert(num1 * 10 + num);
}
</script>
12.九九乘法表(tabel版本)
<script>
// 套一个表格标签
document.write('<table>');
// 1.外层控制行
for (var i = 1; i <= 9; i++) {
// 每行前都套一个tr
document.write('<tr>');
// 2.内层控制列
for (var j = 1; j <= i; j++) {
// 每列前套一个td
document.write('<td>')
document.write(i + '*' + j + '=' + i * j + ' ');
}
// 列结束套一个td闭合
document.write('</td>')
}
// 行结束后补tr闭合标签
document.write('<tr>');
// 表格标签结尾
document.write('</table >');
</script>