循环
循环的目的
- 在实际问题中,有许多具有规律性的重复操作,因此在程序中要完成这类操作就需要重复执行某些语句
js中的循环
在js中,主要有三种类型的循环结构
- for循环
- while循环
- do…while
在程序中,一组被重复执行的语句被称之为循环体,能否继续重复执行,取决于循环的终止条件,由循环体及循环的终止条件组成的语句,被称之为==循环语句==
for循环
-
for 重复执行某些代码,通常跟计数有关系
-
语法结构
for (初始化变量;条件表达式;操作表达式) {
// 循环体
}
-
初始换变量 就是用var 声明的一个普通变量,通常用于作为计数器使用
-
条件表达式 就是用来决定每一次循环是否继续执行 就是终止的条件
-
操作表达式 是每次循环最后执行的代码 经常用于我们计数器变量进行更新(递增或递减)
-
// 重复打印100句 for (var i = 0; i <= 100; i++) { console.log('你好吗'); } // 1.首先执行里面的计数器变量 var i = 1 . 但是这句话在for 里面只执行一次 i就是index // 2. 去 i < = 100 来判断是否满足条件, 如果满足条件 就去执行 循环体 不满足条件退出循环 // 3.最后去执行 i++ i++是单独写的代码 递增 第一轮结束 // 4.接着去执行 i <= 100 如果满足条件 就去执行 循环体 不满足条件退出循环
-
// 重复执行相同的代码 // 我们可以让用户控制输出的次数 var num = prompt('请您输入次数'); for (var i = 1; i <= num; i++) { console.log('你好吗'); }
// for 循环可以重复执行不同的代码 因为我们有计数器变量 i 的存在 i每次循环值都会变化
// 我们想输出一个人 1~100岁
for (var i = 1; i <= 100; i++) {
if (i == 1) {
console.log('这个人今年1岁了,他出生了');
} else if (i == 100) {
console.log('这个人今年100岁了,他死了');
} else {
connsole.log('这个人今年' + i + '岁了');
}
}
-
// 1~100累加 var sum = 0; for (var i = 0; i <= 100; i++) { sum += i; }
-
// 1~100累加和的平均值 var sum = 0; var average = 0; for (var i = 0; i <= 100; i++) { sum += i; } average = sum / 100; console.log(average);
-
// 求1-100偶数和 var even = 0; for (var i = 0; i <= 100; i += 2){ even += i; } console.log(even); // 求1-100奇数和 var odd = 0; for (var i = 1; i <= 100; i += 2){ odd += i; } console.log(odd); // 第二种方法 var even = 0; var odd = 0; for (var i = 0; i <= 100; i++){ if (i % 2 == 0) { even += i; } else { odd += i } } console.log(even, odd); // 求1-100之间所有能被3整除的数字的和 var sum1 = 0; for (var i = 0; i <= 100; i++) { if (i % 3 === 0) { sum1 += i; } } console.log(sum1);
-
// 案例一 求学生平均成绩 var num = prompt('请输入班级总人数'); var sum = 0; //总分 var average = 0; //平均分 for (var i = 1; i <= num; i++) { var score = prompt('请输入' + i + '个学生成绩'); // 因为从prompt去过来的数字是字符串型,需要用parseFloat转换为数字型 sum += parseFloat(score); } average = sum / num; alert('班级总分:' + sum) alert('班级的平均成绩是:' + average)
-
// 案例二 一行输入五颗星星 //追加字符串 var str = ''; for (var i = 1; i <= 5; i++) { str = str + '★' } console.log(str); // 用户自己决定一行几颗星星 var num = prompt('请输入星星的个数'); var str = ''; for (var i = 1; i <= num; i++) { str += '★' } console.log(str);
双重for循环
很多情况下,单层for循环并不能满足我们的需求,比如我们要打印一个5行5列的图形、打印一个倒三角形等,此时就可以通过循环嵌套来实现。
循环嵌套是指在一个循环语句中再定义一个循环语句中再定义一个循环语句的语法结构,例如在for循环语句中,可以再嵌套一个for循环,这样的for语句我们称之为双重for循环。
- 语法结构
for (外层的初始化变量; 外层的条件表达式; 外层的操作表达式) {
for(里层的初始化变量; 里层的条件表达式; 里层的操作表达式) {
//执行语句
}
}
-
我们可以把里面的循环看作是外层循环的语句
-
外层循环循环一次,里面的循环执行全部
-
// 案例一 打印五行五列星星 var str = ''; for (var i = 1; i <= 5; i++) { // 外层循环负责打印五行 for (var j = 1; j <= 5; j++) { //里层循环负责一行打印五个星星 str += '★'; } // 如果一行打印完毕5个星星就要另起一行 加 \n str += '\n' } console.log(str);
-
// 案例二 打印n行n列星星 var str = ''; var row = prompt('请输入行'); var col = prompt('请输入列'); for (var i = 1; i <= row; i++) { for (var j = 1; j <= col; j++) { str += '★'; } str += '\n'; } console.log(str);
-
// 案例三 打印九九乘法表 var str = ''; var m = 0; for (var i = 1; i <= 9; i++) { // 外层循环控制行数 for (var j = 1; j <= i; j++) { // 里层循环控制每一行的个数 j <= i // 1 × 2 = 2 str += j + '×' + i + '=' + i * j + '\t'; } str += '\n'; } console.log(str);
for循环小结
- for循环可以重复执行某些相同的代码
- for循环可以重复执行些许不同的代码,因为我们有计数器
- for循环可以重复执行某些操作,比如算数运算符加法操作
- 随着需求增加,双重for循环可以做更多、更好看的效果
- 双重for循环,外层循环一次,内层for循环全部执行
- for循环是循环条件和数字直接相关的循环
- 分析要比写代码更加重要
- 一些恶核心算法想不到,但要学会,分析它执行过程
- 举一反三,自己经常总结,做一些相似的案例
while循环
while 语句可以在条件表达式为真的前提下,循环执行指定的一段代码,直到表达式部位真时结束循环。
while语句的语法结构如下
while (条件表达式) {
// 循环体代码
}
执行思路:
- 先执行条件表达式,如果结果为true,则执行循环体代码;如果为false,则退出循环,执行后面代码
- 执行循环体代码
- 循环体代码执行完毕后,程序会继续判断执行条件表达式,如果条件仍为true,则会继续执行循环体,直到循环条件为false时,整个循环过程才会结束。