学习内容
- 循环结构,循环思想
- 循环语法
- 循环应用
- 循环的区别
- 无限循环
- 流程控制的关键字
循环结构,循环思想
循环结构: 满足一定条件,重复执行一个动作或一段代码。
循环思想: 三要素
1.从哪里开始
2.到哪里结束
3.步长(步进)
循环语法
实现循环的语句:
while
do while
for
当型循环: 先看条件再做
循环初值;
while(循环条件){
语句组;
步长;
}
直到型循环: 先做再看条件
循环初值;
do{
语句组;
步长;
}while(循环条件);
多功能循环: 只有 for 里面是分号隔开
for(循环初值;循环条件;步长){
语句组;
}
循环应用
// 到:指到什么什么前面,不包含目标位置。
//输出10个HelloWorld
/*
输出: alert() document.write() console.log()
10个:一个一个输出,在重复输出,使用循环,三要素(从1开始,到11结束,++)
输出什么? HelloWorld
*/
//while
var i = 1;
while(i < 5){
console.log('HelloWorld');
i ++;
}
//do while
var i = 1;
do{
console.log('HelloWorld');
i ++;
}while(i < 11);
//for
for(var i = 1;i < 11;i ++){
console.log('HelloWorld');
}
//输出1~100的奇数
/*
输出
1~100 : i = 1;i < 101;i ++
判断奇偶? i % 2
*/
//准备一个变量,用于存储结果
var str = '';
var i = 1;
while(i < 101){
if(i % 2){
str += i + ' '; // '' + 1 + ' ' + 3 + ' ' + 5
//'1 3 5 ……'
}
i ++;
}
document.write(str);
i = 1;
str = ''; //清空变量
do{
str += i + ' ';
i += 2;
}while(i < 101);
document.write('<br>' + str);
for(var i = 1,str = '';i < 101;i ++){
if(i % 2){
str += i + ' ';
}
}
document.write('<br>' + str);
//输出m~n的整数
/*
输出 -- 重复 --循环
m~n
m , n 接收用户输入 prompt parseInt
判断 m 是否大于n
if(m > n){
i = m;i >= n;i --
}else{
i = m ; i <= n;i ++
}
*/
var m = parseInt(prompt('请输入一个整数:'));
var n = parseInt(prompt('请输入一个整数:'));
var str = '';
if(m > n){
for(var i = m;i >= n;i --){
str += i + ' ';
}
}else{
for(var i = m;i <= n;i ++){
str += i + ' ';
}
}
document.write(str);
//求5!(阶乘:从1 乘到它本身)
// 1 * 2 * 3 * 4 * 5
/*
乘 重复 循环
i = 1 i < 6 i ++
*=
*/
for(var i = 1,fac = 1;i < 6;i ++){
fac *= i; //1 * 1 * 2 * 3 * 4 * 5
}
alert(fac);
//解决猴子吃桃的问题(有一只猴子,还有一堆桃子,第一天的时候,吃了一堆桃子中的一半,没忍住,又多吃了一个;第二天的时候,又吃了剩下桃子中的一半,没忍住,又多吃了一个,以后每天如此,直到第10天的时候,只剩下了一个桃子,问第一天的时候有多少个桃子)
/*
1. 第10天,1
var sum = 1;
2. 每天怎么吃? (sum + 1) * 2
3. 第9天: (sum + 1) * 2 = 4
4. 第8天: (sum + 1) * 2 = 10
……
第1 天: 1534
循环: sum = 1,i = 9; i > 0; i --
sum = (sum + 1) * 2
*/
for(var sum = 1,day = 9;day > 0;day --){
sum = (sum + 1) * 2;
}
alert(sum);
//求1+2+3+……+100的和
/*
重复 + 循环
i = 1;i < 101;i ++
+=
*/
for(var sum = 0,i = 1;i < 101;i ++){
sum += i;
}
alert(sum);
//输出1-100中(7的倍数和带7的数除外)的数。
/*
1-100 i = 1;i < 101;i ++
7的倍数和带7的数除外
7的倍数 十位为7的数 个数为7的数
!(i % 7 === 0 || parseInt(i / 10) === 7 || i % 10 === 7)
7的倍数 十位为7的数 个数为7的数
i % 7 && parseInt(i / 10) !== 7 && i % 10 !== 7
*/
for(var str = '',i = 1;i < 101;i ++){
if(!(i % 7 === 0 || parseInt(i / 10) === 7 || i % 10 === 7)){
str += i + ' ';
}
}
document.write(str);
//输出m至n的自然数中的偶数和与奇数和并统计偶数与奇数的个数分别是多少?
/*
m至n 问用户要? prompt() parseInt()
不知道谁大谁小?不能确定循环条件
确保m 小于n
如果m 大于n 交换位置
i = m;i <= n;i ++
if(i % 2){}else{}
偶数和
奇数和
偶数数量
奇数数量
*/
var m = parseInt(prompt('请输入一个整数:'));
var n = parseInt(prompt('请输入一个整数:'));
// 偶数和
var even_sum = 0;
// 奇数和
var odd_sum = 0;
// 偶数数量
var even_count = 0;
// 奇数数量
var odd_count = 0;
//确保m < n
if(m > n){
//交换
var t = m;
m = n;
n = t;
}
for(var i = m;i <= n;i ++){
if(i % 2){
//true,说明是奇数
odd_sum += i;
odd_count ++;
}else{
//false,说明是偶数
even_sum += i;
even_count ++;
}
}
console.log('奇数和:' + odd_sum + '\n奇数数量:' + odd_count + '\n偶数和:' + even_sum + '\n偶数数量:' + even_count);
//入职薪水10K,每年涨幅5%,50年后工资多少?
/*
sum = 10
i = 2; i < 51;i ++
sum += sum * 0.05
*/
for(var sum = 10,i = 2;i < 51;i ++){
sum += sum * 0.05;
}
alert(sum.toFixed(2) + 'K');
循环的区别
/*
while
1. 当型循环,先判断条件,后执行语句
2. 当第一次循环条件为false时,while一次也不执行。
3. 一般使用在循环条件不确定时。
do while
1. 直到型循环,先执行语句,后判断条件
2. 当第一次循环条件为false时,至少执行一次
3. 一般使用在循环条件不确定时。
for
1. 当型循环,先判断条件,后执行语句
2. 当第一次循环条件为false时,for一次也不执行。
3. 一般使用在循环条件确定时。
*/
var i = 3;
while(i === 4){
i ++;
}
alert(i); //3
var j = 3;
do{
j ++;
}while(j === 4);
alert(j); //5
无限循环
无限循环 死循环:条件永远为真
while(1){}
do{}while(1);
for(;1;){}
流程控制的关键字
continue: 跳出本次循环,直接进入一下次循环。
break: 跳出循环。
while(1){
var i = parseInt(prompt('Please input a Int:'));
var ch = prompt('请输入一个算术运算符:');
var j = parseInt(prompt('请输入一个整数:'));
switch(ch){
case '+' : alert(i + j);break;
case '-' : alert(i - j);break;
case '*' : alert(i * j);break;
case '/' : alert(j === 0 ? '除数不能为零!' : (i / j).toFixed(2));break;
case '%' : alert(j === 0 ? '除数不能为零!' : i % j);break;
default : alert('运算符错误!');
}
if(prompt('y:继续 n:退出\n请选择:') == 'n'){
break;
}
}
/*
1. 1111223333444
4 个数:循环4次
每一个数:循环4次
*/
for(var str = '',i = 1;i < 5;i ++){ //i = 1 2
for(var j = 1;j < 5;j ++){ //循环4次
if(i === 2 && (j === 1 || j === 2) || i === 4 && j === 1){
continue;
}
str += i; //1111223333444
}
}
alert(str);