循环结构
while循环
while(条件){
//条件成立就会反复执行这里的代码
}
var count = 0;
while(count < 10){
count++;
document.write("Hello world");
}
死循环: 没有终止条件的循环即为死循环,在代码中应尽量避免死循环
do…while循环
do {
//先执行一遍代码
//while条件成立再继续反复执行
} while (条件)
break和continue关键字
break:跳出循环体,整个循环结束
continue:结束本次循环进入下一次循环体
for循环
for (var i = 0; i < 10; i++) {
console.log(i);
}
区别
while和do…while循环的区别
do…while循环至少会执行一遍,不管条件是否成立,但是while循环如果初始条件不成立一遍也不会执行
三种循环的联系和区别
1、都是会反复执行的代码块
2、大部分情况下可以互相替换
3、do…while至少执行一次,while和for有可能0次,while不太能确定执行次数,for绝大部分情况下都可以确定
循环结构练习
1. 打印100以内的所有奇数
var i = 0;
var num = 0;
while (i < 50) {
num = 2 * i + 1;
document.write(num + " ");
i++;
}
2. 打印一个数的所有因数
var num = Number(prompt('请输入一个数:'));
for (var i = 0; i < num; i++) {
if (num % i == 0) {
document.write(i + " ");
}
}
3. 入职薪水10K,每年涨幅5%,50年后工资多少?
var money = 10000;
var year = 1;
while (year <= 50) {
money *= (1 + 0.05);
year++;
}
document.write('50年后工资为' + money.toFixed(2) + " ");
4. 逢7过游戏,打印1-100,遇到能被7整除或者带7的数字打印“过”代替
var shi, ge;
for (var i = 0; i <= 100; i++) {
shi = parseInt(i / 10);
ge = i % 10;
if (i % 7 === 0 || i % 10 === 7 || shi === 7 || ge === 7) {
document.write('过' + " ");
} else {
document.write(i + " ");
}
}
5. 一张纸的厚度是0.0001米,将纸对折,对折多少次厚度超过珠峰高度8848米(27次)
// for循环
var h = 0.0001;
for (var i = 1; i < 30; i++) {
h *= 2;
if (h > 8848) {
document.write("对折" + i + "厚度超过珠峰高度8848米");
break;
}
}
// while循环 循环次数不确定时,用while比较好
var h = 0.0001;
var count = 0;
while (h <= 8848) {
h *= 2;
count++;
}
document.write("对折" + count + "厚度超过珠峰高度8848米");
6. 打印100以内所有偶数的和
var count = 0;
for (var i = 0; i <= 50; i++) {
count += 2 * i;
}
document.write(count);
7. 求出1-1/2+1/3-1/4……1/100的和
var n = 0
var sum = 0;
for (var i = 1; i <= 100; i++) {
if (i % 2 === 0) {
n = -i;
} else {
n = i;
}
sum += 1 / n;
}
document.write(sum);
8. 打印出1000-2000年中所有的闰年,并以每行四个数的形式输出
var count = 0; // 计数器,记录闰年的个数
for (var i = 1000; i <= 2000; i++) {
if (i % 4 === 0 && i % 100 != 0 || i % 400 === 0) {
document.write(i + " ");
// 这里代表找出一个闰年了
count++;
if (count % 4 === 0) {
document.write("<br />");
}
}
}
9. 打印*三角形
/*
*
**
***
****
*****
规律:
第一行 i = 1 j = 1
第二行 i = 2 j = 1 j = 2
第三行 i = 3 j = 1 j = 2 j = 3
*/
// 循环行数
for (var i = 1; i <= 5; i++) {
// 循环*个数
for (var j = 1; j <= i; j++) {
document.write('*');
}
// 循环完*,换行
document.write("<br>");
}
10. 输出100-200之间所有的素数(只能被1和自己整除的数)
document.write('100-200之间所有的素数: ');
for (var i = 100; i <= 200; i++) {
// 创建一个判断变量,假设全是素数
var flag = true;
for (var j = 2; j < i; j++) {
// 如果i不是素数,设置为flase,并退出循环
if (i % j === 0) {
flag = false;
break;
}
}
// 如果i是素数,则打印
if(flag){
document.write(i + " ");
}
}
11. 打印100–200之间所有能被3或者7整除的数
document.write("100-200之间能被3或者7整除的数有: ");
for (var i = 100; i <= 200; i++) {
if (i % 3 === 0 || i % 7 === 0) {
document.write(i + " ");
}
}
12. 计算100的阶乘
var count = 1;
for (var i = 1; i <= 100; i++) {
count *= i;
}
document.write("100的阶乘为:" + count);
13. 求100-999之间的水仙花数
document.write("100-999之间的水仙花数有: <br>");
var bai,
shi,
ge;
for (var i = 100; i < 1000; i++) {
bai = parseInt(i / 100);
shi = parseInt((i - bai * 100) / 10);
ge = i % 10;
if (i === bai * bai * bai + shi * shi * shi + ge * ge * ge) {
document.write(i + " ");
}
}
14. 打印九九乘法表
/*
1*1=1
1*2=2 2*2=4
1*3=3 2*3=6 3*3=9
1*4=4 2*4=8 3*4=12 4*4=16
*/
document.write("九九乘法表: <br>");
for (var i = 1; i < 10; i++) {
for (var j = 1; j <= i; j++) {
document.write(j + "×" + i + '=' + i * j + " ");
}
document.write('<br>');
}
15. 求1+2!+3!+…+20!的值
var sum = 0;
for (var i = 1; i <= 20; i++) {
// 每次从1开始乘
var count = 1;
for (var j = 1; j <= i; j++) {
count *= j;
}
sum += count;
}
document.write("1+2!+3!+...+20!的值为: " + sum);