程序三大结构
循环结构
-
循环结构,就是根据某些给出的条件,重复的执行同一段代码
-
循环必须要有某些固定的内容组成
- 初始化
- 条件判断
- 要执行的代码
- 自身改变
1、WHILE 循环
-
while,中文叫 当…时,其实就是当条件满足时就执行代码,一旦不满足了就不执行了 -
语法
while (条件) { 满足条件就执行 } -
因为满足条件就执行,所以我们写的时候一定要注意,就是设定一个边界值,不然就一直循环下去了
// 1. 初始化条件 var num = 0; // 2. 条件判断 while (num < 10) { // 3. 要执行的代码 console.log('当前的 num 的值是 ' + num) // 4. 自身改变 num = num + 1 }-
如果没有自身改变,那么就会一直循环不停了 示例:倒序输出 5 4 3 2 1
-
2、DO WHILE 循环
-
是一个和
while循环类似的循环 -
while会先进行条件判断,满足就执行,不满足直接就不执行了 -
但是
do while循环是,先不管条件,先执行一回,然后在开始进行条件判断 -
语法:
do { 要执行的代码 } while (条件)// 下面这个代码,条件一开始就不满足,但是依旧会执行一次 do 后面 {} 内部的代码 var num = 10 do { console.log('我执行了一次') num = num + 1 } while (num < 10)
3、FOR 循环
- 和
while和do while循环都不太一样的一种循环结构 - 道理是和其他两种一样的,都是循环执行代码的
- 语法:
for (var i = 0; i < 10; i++) { 要执行的代码 }
// 把初始化,条件判断,自身改变,写在了一起
for (var i = 1; i <= 10; i++) {
// 这里写的是要执行的代码
console.log(i)
}
// 控制台会依次输出 1 ~ 10
- 这个只是看起来不太舒服,但是用起来比较好用
练习
- 1、正序倒输出1-100的数
<script>
// 1、正序输出1-100的数
for(var i=1;i<101;i++){
console.log(i);
}
// 2、倒序输出1-100的数
for(var i=100;i>0;i--){
console.log(i);
}
</script>
- 2、打印出1-100里所有的偶数
<script>
// 打印出1-100里所有的偶数
for(var i=1;i<101;i++){
if(i%2==0){
console.log(i);
}
}
</script>
- 3、打印100以内能被4整除的数
<script>
// 打印100以内能被4整除的数
for(var i=1;i<101;i++){
if(i%4==0){
console.log(i);
}
}
</script>
累加算法
练习:1、1+2+3+4+...100的和
<script>
//求 1+2+3+4+...100的和
var sum=0
for(var i=1;i<101;i++){
sum=sum+i
}
console.log(sum);
</script>
2、求 2 + 4 + 6 + 8 + 10 的和
<script>
//求 2 + 4 + 6 + 8 + 10 的和
var sum=0
for(var i=1;i<6;i++){
sum=sum+i*2
}
console.log(sum);
</script>
跳转语句
BREAK 终止循环 break
- 在循环没有进行完毕的时候,因为我设置的条件满足,提前终止循环
- 比如:我要吃五个包子,吃到三个的时候,不能在吃了,我就停止吃包子这个事情
- 要终止循环,就可以直接使用
break关键字for (var i = 1; i <= 5; i++) { // 没循环一次,吃一个包子 console.log('我吃了一个包子') // 当 i 的值为 3 的时候,条件为 true,执行 {} 里面的代码终止循环 // 循环就不会继续向下执行了,也就没有 4 和 5 了 if (i === 3) { break } }
CONTINUE 结束本次循环 couninue
- 在循环中,把循环的本次跳过去,继续执行后续的循环
- 比如:吃五个包子,到第三个的时候,第三个掉地下了,不吃了,跳过第三个,继续吃第四个和第五个
- 跳过本次循环,就可以使用
continue关键字for (var i = 1; i <= 5; i++) { // 当 i 的值为 3 的时候,执行 {} 里面的代码 // {} 里面有 continue,那么本次循环后面的代码就都不执行了 // 自动算作 i 为 3 的这一次结束了,去继续执行 i = 4 的那次循环了 if (i === 3) { console.log('这个是第三个包子,掉地下了,我不吃了') continue } console.log('我吃了一个包子') } - document.write('内容') => 将内容显示到页面上 多条语句输出不换行,可以打印br换行标签
- 计数器:定义一个变量,初始值为0 ,如果满足条件值加一
-
练习: 打印出1000-2000年中所有的闰年,并以每行四个数的形式输出(使用document.write()打印)
<script>
/* 打印出1000-2000年中所有的闰年,并以每行四个数的形式输出
(使用document.write()打印) 计数器 */
var count = 0
for (var year = 1000; year < 2001; year++) {
if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) {
document.write(year + ' ')
count++
if (count % 4 == 0) {
document.write('<br>')
}
}
}
</script>
双重for循环
for循环可以重复执行一个操作,当然也可以重复执行另一个循环,即for循环里面嵌套for循环,即双重for循环 循环的嵌套: 外层循环循环一次,内层就要循环完
- 练习: 1、打印图形
<script>
/* 1、打印图形
*
**
***
****
*****
*/
for(var i=1;i<6;i++){
for(var j=1;j<=i;j++){
document.write('*');
}
document.write('<br>')
}
</script>
- 2、打印九九乘法表
<script>
/* 2、 打印九九乘法表
1 x1 = 1
2 x1 = 2 2 x2 = 4
3 x1 = 3 3 x2 = 6 3 x3 = 9
4 x1 = 4 4 x2 = 8 4 x3 = 12 4 x4 = 16
5 x1 = 5 5 x2 = 10 5 x3 = 15 5 x4 = 20 5 x5 = 25
6 x1 = 6 6 x2 = 12 6 x3 = 18 6 x4 = 24 6 x5 = 30 6 x6 = 36
7 x1 = 7 7 x2 = 14 7 x3 = 21 7 x4 = 28 7 x5 = 35 7 x6 = 42 7 x7 = 49
8 x1 = 8 8 x2 = 16 8 x3 = 24 8 x4 = 32 8 x5 = 40 8 x6 = 48 8 x7 = 56 8 x8 = 64
9 x1 = 9 9 x2 = 18 9 x3 = 27 9 x4 = 36 9 x5 = 45 9 x6 = 54 9 x7 = 63 9 x8 = 72 9 x9 = 81
*/
for (var i = 1; i < 10; i++) {
for (var j = 1; j <= i; j++){
document.write(i+'x'+j+'='+i*j+' ');
}
document.write('<br>')
}
</script>
- 3、打印三角形图形
/* 3、 打印三角形图形
*
***
*****
*******
*********
*/
var n = 5
for (var i = 1; i < 6; i++) {
for (var j = 1; j <= n - i; j++) {
document.write(' ');
}
for (var k = 1; k <= 2 * i - 1; k++) {
document.write('*');
}
document.write('<br>')
}
</script>
- 4、入职薪水10K/月,每年涨幅5%,50年后工资多少?(累加求和)
<script>
/*5、入职薪水10K/月,每年涨幅5%,50年后工资多少?(累加求和)
提示:
1年 10000*12
2年 1年 + 1年的涨幅
1年的工资*0.05
求3年后的工资
2年 + 2年的涨幅
*/
var sum=1000*12
for(var year=2;year<51;year++){
sum=sum+sum*0.05
}
document.write('50年后的工资是'+sum.toFixed(2)+'元')
</script>
- 5、1 - 1/2 + 1/3 - 1/4 + 1/5 - 1/6 .... +1/99 - 1/100 和是多少?
<script>
/*6、1 - 1/2 + 1/3 - 1/4 + 1/5 - 1/6 .... +1/99 - 1/100 和是多少?
*/
var sum=1
for(var i=2;i<101;i++){
if(i%2==0){
sum=sum-(1/i)
}
else{
sum=sum+(1/i)
}
}
document.write('和为'+sum)
</script>