1、for循环
在程序中,一组被重复执行的语句被称之为循环体,能否继续重复执行,取决于循环的终止条件。由循环体及循环的终止条件组成的语句,被称之为循环语句
for(初始化变量;条件表达式;操作表达式)
{
//循环体
}
1. 输入10句"for循环!"
//基本写法
for(let i = 1; i<=10; i++ )
{
console.log('for循环');
}
// 用户输入次数
let num = prompt('请输入次数:');
for(let i = 1; i<= num ;i++)
{
console.log('for循环');
}
2. 求1-100之间所有整数的累加和
// 求1-100所以的整数和
let sum = 0;
for (let i = 1; i <= 100; i++) {
let sum = sum + i;
}
console.log(sum);
3. 求1-100之间所有数的平均值
// 3.求1-100之间所有数的平均值
let sum = 0;
for (let i = 1; i <= 100; i++) {
let sum = sum + i;
}
console.log(sum / 100);
4. 求1-100之间所有偶数和奇数的和
// 4.求1-100之间所有偶数和奇数的和
let sum1 = 0;
let sum2 = 0;
for (let i = 1; i <= 100; i++) {
if (i % 2 == 0) {
sum1 = sum1 + i;
} else {
sum2 = sum2 + i;
}
}
console.log('偶数和为' + sum1);
console.log('奇数和为' + sum2);
5. 求1-100之间所有能被3整除的数字的和
// 5.求1-100之间所有能被3整除的数字的和
let sum = 0;
for (let i = 1; i <= 100; i++) {
if (i % 3 == 0) {
sum += i;
}
}
console.log(sum);
6. 要求用户输入班级人数,之后依次输入每个学生的成绩,最后打印出该班级总的成绩以及平均成绩。
let num = prompt('请输入班级总的人数:'); // num 班级总的人数
let sum = 0; // 总成绩
let average = 0; // 平均成绩
for (let i = 1; i <= num; i++) {
let score = prompt('请输入第' + i + '个学生的成绩');
//这里接收的是str,必须转换为数值
sum = sum + parseFloat(score);
}
average = sum / num;
alert('班级总的成绩是:' + sum);
alert('班级总的平均成绩是:' + average);
7. 一行打印5个星星
我们采取追加字符串的方式,这样可以打印到控制台上
let star = '';
for (let i = 1; i <= 5; i++) {
star += '☆';
}
console.log(star);
2、双重for循环
循环嵌套是指在一个循环语句中再定义一个循环语句的语法结构,例如在for循环语句中,可以再嵌套一个for 循环,这样的 for 循环语句我们称之为双重for循环。
for(外循环的初始;外循环的条件;外形循环的操作表达式){
for(内循环的初始;内循环的条件;内循环的操作表达式){
需执行的代码;
}
}
- 内层循环可以看做外层循环的语句
- 内层循环执行的顺序也要遵循 for 循环的执行顺序
- 外层循环执行一次,内层循环要执行全部次数
1. 打印五行五列星星
核心:
- 内层循环负责一行打印五个星星
- 外层循环负责打印五行
let star = '';
for(let j = 1;j<=5;j++)
{
for (let i = 1; i <= 5; i++)
{
star += '☆'
}
//每次满5个星星就加一次换行
star +='\n'
}
console.log(star);
2. 打印n行n列的星星
要求用户输入行数和列数,之后在控制台打印出用户输入行数和列数的星星
let star = '';
let row = prompt('请输入行数');
let col = prompt('请输入列数');
for (let j = 1; j <= col; j++) {
for (let i = 1; i <= row; i++) {
star += '☆';
}
star += '\n';
}
console.log(star);
3. 打印倒三角形
- 一共有10行,但是每行的星星个数不一样,因此需要用到双重 for 循环
- 外层的 for 控制行数 i ,循环10次可以打印10行
- 内层的 for 控制每行的星星个数 j
- 核心算法: 每一行星星的个数: j = i ; j <= 10; j++
- 每行打印完毕后,都需要重新换一行
let star = '';
let row = prompt('请输入行数');
let col = prompt('请输入列数');
for (let i = 1; i <= row; i++) {
for (let j = i; j <= col; j++) {
star += '☆';
}
star += '\n';
}
console.log(star);
3、while循环
while(条件表达式){
//循环体代码
}
执行思路:
- 先执行条件表达式,如果结果为 true,则执行循环体代码;如果为 false,则退出循环,执行后面代码
- 执行循环体代码
- 循环体代码执行完毕后,程序会继续判断执行条件表达式,如条件仍为true,则会继续执行循环体,直到循环条件为 false 时,整个循环过程才会结束
注意:
- 使用 while 循环时一定要注意,它必须要有退出条件,否则会称为死循环
- while 循环和 for 循环的不同之处在于 while 循环可以做较为复杂的条件判断,比如判断用户名和密码
1. 打印人的一生
从1岁到99岁
let age = 0;
while (age <= 100) {
age++;
console.log('您今年' + age + '岁了');
}
2. 计算 1 ~ 100 之间所有整数的和
let figure = 1;
let sum = 0;
while (figure <= 100) {
sum += figure;
figure++;
}
console.log('1-100的整数和为' + sum);
4、do while循环
do {
//循环体代码-条件表达式为true的时候重复执行循环一代码
}while(条件表达式);
执行思路:
- 先执行一次循环体代码
- 再执行表达式,如果结果为true,则继续执行循环体代码,如果为false,则退出循环,继续执行后面的代码
- 先执行再判断循环体,所以dowhile循环语句至少会执行一次循环体代码
需求:弹出一个提示框, 你爱我吗? 如果输入我爱你,就提示结束,否则,一直询问
do {
let love = prompt('你爱我吗?');
} while (love != '我爱你');
alert('登录成功');
5、continue 关键字
continue 关键字用于立即跳出本次循环,继续下一次循环(本次循环体中 continue 之后的代码就会少执行一次)。
例如,吃5个包子,第3个有虫子,就扔掉第3个,继续吃第4个第5个包子
for (let i = 1; i <= 5; i++) {
if (i == 3) {
console.log('这个包子有虫子,扔掉');
continue; // 跳出本次循环,跳出的是第3次循环
}
console.log('我正在吃第' + i + '个包子呢');
}
6、break关键字
break 关键字用于立即跳出整个循环
例如,吃5个包子,吃到第3个发现里面有半个虫子,其余的也不吃了
for (let i = 1; i <= 5; i++) {
if (i == 3) {
break; // 直接退出整个for 循环,跳到整个for下面的语句
}
console.log('我正在吃第' + i + '个包子呢');
}