JavaScript04
1.循环
循环是一遍又一遍执行相同或者相似的代码
循环的两个要素
循环条件:控制循环是否要继续执行
循环体:要执行的相同或者相似的代码
(1)while循环
while(循环条件){ 循环体}
/*
//循环10次 1~10
//初始化
var i = 1;
while(i<=10){ //循环条件
//循环体
console.log('涛哥跑了一趟超市',i);
//增量
i++;
}
//练习:打印30~21之间所有的整数
//初始值
var i = 30;
while(i >= 21){//循环条件
//循环体
console.log(i);
//增量
i--;
}
console.log('循环结束后i='+i);
//练习:循环打印70 65 60 55 50
//初始值
var i = 70;
while(i >= 50){//循环条件
//循环体
console.log(i);
//增量
i -= 5;
}
//练习:打印1~100之间所有的偶数,结合if判断
//初始值
var i = 1;
while(i <= 100){//循环条件
//循环体
//i代表所有整数
//判断i是否为偶数
if(i % 2 === 0){
//i代表偶数
console.log(i);
}
//增量
i++;
}
//练习:计算1~100之间所有整数的和
//初始值
var i = 1;
//声明变量,用于保存总和
//初始值为0
var sum = 0;
while(i <= 100){//循环条件
//循环体
//i代表1~100之间所有整数
//把产生的每一个整数加到sum
//每次是在原来的基础之上加
//sum = sum + i; //0 + 1 + 2 + 3..+100
sum += i;
//console.log(sum);//每次加一个数字打印一次
//增量
i++;
}
//循环结束后,打印最终的sum
console.log(sum);
*/
//计算1~100之间所有偶数的和
var i = 1;//初始值
var sum = 0;//声明变量,用于保存总和
while(i <= 100){//循环条件
//循环体
//i代表所以的整数
//判断i是否为偶数
if(i % 2 === 0){
//i是偶数
sum += i;
}
i++;//增量
}
console.log(sum);
(2)break
在循环体中使用,用于强制结束循环。
/*
//打印1~100之间所有的整数
var i = 1;
while(true){
//循环体
console.log(i);
//当i为100的时候,强制结束
if(i === 100){
break;
}
//增量
i++;
}
*/
//练习:使用死循环的方式计算11~20之间所有整数的乘积
var i = 11;
var s = 1;//声明变量,用于保存所有整数的乘积
while(true){
//i代表所有的整数 11~20
//console.log(i);
//求乘积,把每个数字乘以到s中
s *= i;
//如果i是20,强制结束循环
if(i === 20){
break;
}
i++;
}
//循环结束后,打印最终的结果
console.log(s);
continue
var i = 1;
while (i<10) {
//增量
i++;
//当i为100的时候,强制结束
if (i === 5) {
continue;
console.log("i是5");
}
//循环体
console.log(i);
}
(3)do-while循环
do{ 循环体}while(循环条件);
/*
//循环打印1~10之间所有的整数
var i = 1;//初始值
do{
//循环体
console.log(i);
//增量
i++;
}while(i <= 10);//循环条件
//
//练习:使用循环打印80~71之间所有的整数
//初始值
var i = 80;
do{
//循环体
console.log(i);
//增量
i--;
}while(i >= 71);//循环条件
//练习:打印1~100之间所有的奇数
//循环产生所有整数
var i = 1;
do{
//i代表所有的整数
//判断i是否为奇数
if(i % 2 === 1){
console.log(i);
}
i++;
}while(i <= 100);
//练习:计算1~100之间所有奇数的和
var i = 1;
var sum = 0;//声明变量用于保存总和
do{
//i代表所有整数
if(i % 2 === 1){
//i代表所有的奇数
//把所有的奇数加到sum中
sum += i;
}
i++;
}while(i <= 100);
//循环结束后,打印最终的总和
console.log(sum);
*/
//练习:假设有一张纸厚度是0.0001米,折叠多少次以后能达到珠穆朗玛峰的高度(8848米)
//声明变量记录纸的厚度(折叠一次,厚度乘以2)
var height = 0.0001;
//声明变量记录次数
var count = 0;
do{
//循环体
//折叠一次,厚度乘以2
height *= 2;
//折叠一次,查看厚度
console.log(height);
//折叠一次,次数加1
count++;
}while(height < 8848);
//循环条件(判断是否达到了8848米,如果不满8848继续循环)
//循环结束后,查看折叠的次数
console.log(count);
练习:声明变量记录银行卡的密码’123456’,死循环弹出提示框,要求用户输入密码,如果密码输入正确,则警示框弹出’login success’,并强制结束循环;如果次数达到了3次,警示框弹出’more than three’,并强制结束循环。
05_dowhile.js 05.html
//练习:声明变量记录银行卡的密码'123456',死循环弹出提示框,要求用户输入密码,如果密码输入正确,则警示框弹出'login success',并强制结束循环;如果次数达到了3次,警示框弹出'more than three',并强制结束循环。
/*
var pwd = '123456';
//声明变量记录次数
var count = 0;
do{
//获取用户输入的密码
var str = prompt('input password');
//如果密码输入正确
if(str === pwd){
alert('login success');
break;
}
//每输入一次记录一次
count++;
//如果次数为3,吞卡
if(count === 3){
alert('more than three');
break;
}
}while(true);
*/
var pwd = '123456';
do{
//用户输入的密码
var str = prompt('input password');
}while(str !== pwd);
//如果输入正确 —— false,要结束循环
//如果输入错误 —— true,继续循环
(4)for循环
for(初始值; 循环条件; 增量){ 循环体}
/*
//循环打印1~10之间所有的整数
for(var i = 1;i <= 10;i++){
//循环体
console.log(i);
}
//练习:打印1~100之间所有能被3整除的数字
for(var i = 1;i <= 100;i++){
//i代表所有整数
//判断i是否能被3整除
if(i % 3 === 0){
console.log(i);
}
}
//练习:计算1~100之间所有能被7整除的数字的和
for(var i = 1,sum = 0;i <= 100;i++){
//判断是否能被7整除
if(i % 7 === 0){
sum += i;
}
}
console.log(sum);
//多个循环条件后边会覆盖之前的
for(var i=1,j=10;j>=1,i<=20;i++,j--){
console.log(i,j);
}
//练习:计算以下运算的结果
// 1/30 + 3/28 + 5/26 + 7/24 + 9/22 + 11/20 + 13/18
for(var i=1,j=30,sum=0;i<=13;i+=2,j-=2){
//console.log(i,j);
//把i和j相除的结果加到sum
sum += i/j;
}
console.log(sum);
*/
//12345
//1*5= 2*5= 3*5= 4*5= 5*5=
//1*5=5 2*5=10 3*5=15 4*5=20 5*5=25
//循环打印出12345
for(var i = 1,str = '';i <= 5; i++){
//console.log(i);
//每次循环产生的数字i,拼接到str
//str = str + i; //''+1+2
str += i+'*5='+(i*5)+' ';
}
console.log(str);
(5)break和continue
break 强制结束循环,后续不再执行任何循环中代码
continue 跳过剩余的循环体,后续还会执行其它代码
/*
//打印1~10之间所有整数,不包含5
for(var i = 1;i <= 10;i++){
console.log(i);
//如果i为5
if(i === 5){
//break; //强制结束循环
continue; //跳过剩余循环体
}
}
*/
//练习:打印出1~100之间所有的整数,遇到能被3或者4整除就跳过
for(var i = 1;i <= 100;i++){
//判断i是否能被3或者4整除
if(i % 3 === 0 || i % 4 === 0){
continue;
}
console.log(i);
}
(6)循环嵌套
在任意一个循环体中,包含了其它的循环。
任意两个循环都可以相互嵌套
//循环产生*****
for(var j = 1;j <= 5;j++){
//循环体中的内容重复执行
//内层:控制每一行循环的列数
//* <=1
//** <=2
//*** <=3
//循环条件:由每一行的行数j决定
for(var i = 1,str = '';i <= 5;i++){
//console.log('*');
//每循环一次,拼接一个*
str += '*';
}
console.log(str);
}
//外层:控制循环的行数
for(var j = 1;j <= 9;j++){
//循环体中的内容重复执行
//内层:控制每一行循环的列数
//* <=1
//** <=2
//*** <=3
//循环条件:由每一行的行数j决定
for(var i = 1,str = '';i <= j;i++){
//console.log('*');
//每循环一次,拼接一个*
str += '*';
}
console.log(str);
}
课后任务
①打印出2000~2100之间前10个闰年
//①打印出2000~2100之间前10个闰年
//声明变量记录闰年的个数
for(var i = 2000,count = 0;i <= 2100;i++){
//i代表所有的年份
//判断是否为闰年
if(i % 4 === 0 && i % 100 !== 0 || i % 400 === 0){
console.log(i);
//闰年的个数加1
count++;
//判断闰年的个数是否为10
if(count === 10){
//强制结束循环
break;
}
}
}
//循环结束后,打印闰年的个数
console.log(count);
②声明变量保存任意一个数字,查看该数字是否为素数(质数),如果是打印‘是素数’,否则打印‘非素数’
素数:除了1和自身以外不能被其它的数字整除。
//②声明变量保存任意一个数字,查看该数字是否为素数(质数),如果是打印‘是素数’,否则打印‘非素数’
//素数:除了1和自身以外不能被其它的数字整除。
//1以上的整数中
var n = 2;
//查找1~n之间(不包含1和n这两个数字),是否有能被n整除的数字,如果有说明不是素数
//不包含1,初始值只能是2
//不包含n,循环条件 <n
//声明变量用于记录能被整除的个数
for(var i = 2,count = 0;i < n;i++){
//i代表1~n之间所有的整数
//判断是否有能被n整除的数字
if(n % i === 0){
//数量加1
count++;
}
}
//循环结束后,如果count的值还是0,说明中间没有能够整除的数字,也就说明是素数
if(count === 0){
console.log('素数');
}else{
console.log('非素数');
}
*/
③使用循环嵌套打印九九乘法表
//③使用循环嵌套打印九九乘法表
/*
1*1=1
1*2=2 2*2=4
1*3=3 2*3=6 3*3=9
*/
//外层循环:控制循环的行数,i代表行数
for(var i = 1;i <= 9;i++){
//内层循环:控制每一行循环的列数,j代表列数
//循环条件是由所在的行数i决定
for(var j = 1,str = '';j <= i;j++){
//每次循环产生一列,拼接一列
str += j + '*' + i + '=' + (i*j) + ' ';
//如果是第3行或者第4行,并且是第2列,再继续拼接一个空格
if((i === 3 || i === 4) && j === 2){
str += ' ';
}
}
//当每一行循环结束,打印拼接的这些列
console.log(str);
}