for循环结构
简单执行的顺序
-
for循环
for (var i = 0 ; i < 10 ; i++ ){ document.write("a") } //10行a -
执行顺序
1. var i = 0 ; //声明并赋值 i = 0 2. if(i<10){ document.write("a")} ; // 条件判断 3. 执行 i++; i变成1 4. if(i<10){ document.write("a")} ; // 条件判断 5. 执行 i++; i变成2 总结 有一次不成立直接跳出循环体 for(;;;)可以不写内容,但是必须要有引号 1. var i= 0; 2. for (;i<10;){ document.write("a") i++; }
简单执行的顺序
-
for 循环求和
var count = 0 ; for (var i = 0 ; i < 10 ; i++ ){ count+=i; document.write(count) } -
能被3或者5整除的数
var count = 0 ; for (var i = 0 ; i < 10 ; i++ ){ if(i % 3 == 0 || i % 5 == 0){ document.write(i +" " ) } } //0 3 5 9
while for
循环简化的for循环,前后不写东西
-
while 循环
var i = 0 ; while (i < 10 ){ document.write(count) i++; } -
while 逢7跳出 和7 的倍数
var i = 0 ; while (i < 100 ){ if(i % 7 == 0 ||i % 10 == 7 ){ document.write(i + "<br>") } i++ } //除10 余 7 -
do while 循环,不管存不存在都执行一次
var i = 0 ; do { document.write(i + "") }while (i < 100 )
switch case 循环,不管存不存在都执行一次
-
基本语法
<script type="text/javascript"> var n=3 switch(n){ case 1: console.log('a'); case 2: console.log('b'); case 3: console.log('c'); } </script> -
与switch匹配
<script type="text/javascript"> // Math.sqrt() 的使用减少循环次数但是1既不是质数也不是合数 var n = true switch(n){ case true: console.log('a'); case 2: console.log('b'); case 3: console.log('c'); } </script>极其不负责打印结果a b c
解决办法 加入break
<script type="text/javascript">
// Math.sqrt() 的使用减少循环次数但是1既不是质数也不是合数
var n = true
switch(n){
case true:
console.log('a');break;
case 2:
console.log('b');break;
case 3:
console.log('c');break;
}
</script>
-
break 终止循环
1.1在switch中减少耦合度
<script type="text/javascript"> var n = true switch(n){ case true: case 2: console.log('a');break; case 3: } </script> //值为a1.2 终止循环,直接跳出
-
continue 跳出本次循环,继续下次循环
<script type="text/javascript"> for(var i = 0 ; i< 100; i++){ if(i%7==0||i%10==7){ continue; } console.log(i) } </script>
习题1.1: 计算2 的n 次幂,n可输入, n 为自然数
var n = parseInt(window.prompt('input')) //输入数字
var count= 1 ;
for(var i = 0 ; i < n ; i++){
count * = 2;
}
document.write(count)
习题1.2: 计算 n 的阶乘,n可输入
var n = parseInt(window.prompt('input'))
var count= 1 ;
for(var i = 1 ; i<=n; i++){
count*=i;
}
document.write(count)
习题1.3: a,b,c三数字比较大小,返回最大值
<script type="text/javascript">
var a = parseInt(window.prompt('input'))
var b = parseInt(prompt('input'))
var c = parseInt(prompt('input'))
if(a>b){
if(a>c){
document.write(a)
}else{
document.write(c)
}
}else{
if(b>c){
document.write(b)
}else{
document.write(c)
}
}
document.write(count)
</script>
习题1.4:输入三个正整数,反向输出值
var n = Number (prompt("input")) // 把获取的数值转换为数字类型,方便计算
var a = n%10 // 获取个位数
var b = n%100 - n%10 // 获取十位数
var c = n - b - a // 获取百位数
var newa = c/100 // 新的个位数
var newb = b // 新的十位数
var newc = a*100 // 新的百位数
var sum = newa + newb + newc
document.write(sum)
习题1.5:斐波那契数列 first+second=third
<script type="text/javascript">
var n = parseInt(window.prompt('请输入数字'))
var first =1;
second =1 ;
third=0;
// 减去两圈
// i是循环次数
if(n>2){
alert(111)
for(var i = 0 ; i <n-2;i++){
third = first+second;
first = second;
second = third;
}
document.write(third)
}else{
document.write(1)
}
</script>
习题1.5:打印100以内的质数
<script type="text/javascript">
// 判断质数的算法
var i = 1;
var count = 0;//用来计数
for (; i < 100; i++) {
// i都除一遍
for (var j = 1; j <= i; j++) {
// 将所有j除一遍
if (i % j == 0) {
count++;
}
}
// 都除以2遍,才会使质数
if (count == 2) {
document.write(i + "<br>")
}
count = 0
}
</script>
升级版
<script type="text/javascript">
// Math.sqrt() 的使用减少循环次数但是1既不是质数也不是合数
var count = 0;
for (var i = 2; i < 100; i++) {
for (var j = 1; j <= Math.sqrt(i); j++) {
if (i % j == 0) {
count++;
}
}
if (count == 1) {
document.write(i)
}
count = 0
}
</script>