js循環(while循環,do while循環,for循環)相關知識點及練習


08.循環

1.循環!

循環的作用:

  1. 簡化代碼,處理重復執行的代碼

  2. 遍歷數組、json對象、節點集合

2.while循環

語法:

while(循環的條件){

循環體

}

3.循環的五大要素

  1. 循環變量

  2. 循環變量的初始化

  3. 循環的增值

  4. 循環的終止條件

  5. 循環體

eg:在頁面中打印100句“我愛你!!”;

方法一:
var i = 1;   //循環變量 以及 循環變量的初始值
while (i <= 100) {    //循環的終止條件
    document.write("我愛你" + i + "<br>");
    i++;   //循環變量的增值
}
方法二:
var i =1;    //循環變量以及初始值
while(true){
  document.write("我愛你啊" + i + "<br>");
   i++;
   //終止條件
if(i > 100){
  break;
}
}

09.while循環案例

1.怎么實現1-50的和?

<script>
   var i = 1;
var sum = 0;
   while(i <= 50){
       sum += i;
       i++;
  }
   console.log(sum);
</script>

2.打印100以內7的倍數

var i = 1;
while(i <= 100){
if(i % 7 == 0 ){
console.log(i);
}
i++;
}

3.打印100以內的奇數

var i = 1 ;
while(true){
if(i % 2 != 0){
console.log(i);
}
i++;
if( i > 100 ){
break;
}
}

4.打印100以內所有偶數的和

var i = 1 ; 
var sum = 0;
while( i <= 100 ){
   if( i % 2 == 0 ){
       sum += i;
  }
   i++;
}
console.log(sum);

1.案例:輸入分數,判定成績等級 優 良 中 差

var num = 100;
if( num <= 100 && num > 90 ){
   console.log("優")
}else if(num <= 90 && num > 80){
   console.log("liang")
}else if( num <= 80 && num > 70 ){
   console.log("zhong")
}else{
   console.log("差")
}

2.輸入月份,顯示當月的天數 case穿透

分析:1 3 5 7 8 10 12 31天

var month = 2;
switch(month){
// case 1 : console.log("31天");
// break;
// case 2 : console.log("28天");
// break;
// case 3 : console.log("31天");
case 1 :
case 3 :
case 5 :
case 7 :
case 8 :
case 10 :
case 12 :
console.log("31天");
break;
case 4 :
case 6 :
case 9 :
case 11 :
console.log("30天");
break;

case 2 : console.log("28天");
break;
default : console.log("輸入錯誤...");
}

01.do while

while的執行邏輯:

首先先進行變量的判斷,如果不滿足則不進入循環體,如果滿足,則進入循環體,循環執行完畢,變量的增值,再進行條件的判斷...

do while 的執行邏輯:

首先先進入循環體,執行一次,然后再進行變量的自增,然后再次判斷.....

eg: 
var i = 10;
while(i < 15){
console.log(i);
i++;
}
練習:入職薪水10k,每年漲幅5%,50年后工資多少?
var money = 10000;
var year = 1;
do{
//循環體
money *= 1.05;
year++;
}while(year <= 50);
console.log(money);

02.for循環

for循環的執行邏輯:

首先先聲明循環變量,為變量賦值,然后進行條件判斷。如果條件成立則進入循環體,循環體執行完畢,循環變量增值,自增之后再次對條件進行判斷.....

for(語句1,語句2,語句3){
//循環體
}
語句1:循環變量   以及   初始值
語句2:循環的終止條件
語句3:循環變量的增值
eg:
for(var i = 0 ; i < 10 ; i++){
   console.log(i);
}
練習:
1.打印100-200之間所有能被3或者7整除的數
for(var i = 100 ; i <= 200 ; i++){
   if(i % 3 == 0 || i % 7 == 0){
       console.log(i);
  }
}
2.計算100的階乘
var product = 1;
for(var i = 1 ; i <= 100 ; i++){
   product *= i;
}
console.log(product);

03.循環嵌套

1.實現表格:
<style>
   td{
       width:100px;
       height:30px;
       border:2px solid red;
  }
</style>

<script>
   document.write("<table>");
for(var i = 0 ; i < 10 ; i++){
       document.write("<tr>");
       //打印的td
      for(var k = 0 ; k < 10 ; k++){
           document.write("<td></td>");
      }
       document.write("</tr>");
  }
document.write("</table>");
</script>
2.九九乘法表:
for(var i = 1 ; i <= 9 ; i++){
   for(var j = 1 ; j <= i ;j++){
       document.write(j + "*" + i + "=" + i * j + "&nbsp;&nbsp;&nbsp;&nbsp;");
  }
   document.write("<br><br>")
}

04.循環練習

1.打印100以內所有偶數的和
var sum = 0;
for(var i = 1 ; i <= 100 ; i++){
   if(i % 2 == 0){
       sum += i;
  }
}
document.write("sum");
2.打印出1000-2000年中所有的閏年,並以每行四個數的形式輸出(閏年條件:非整百年,被4整除,或者被400整除)
var count = 0;
for(var i = 1000 ; i <= 2000 ; i++){
   if(i % 100 !== 0 && i % 4 == 0 || i % 400 == 0){
       document.write(i + "&nbsp;&nbsp;&nbsp;");
       //每打印一個閏年,計數器加1,當計數器能被4整除的時候,打印一個換行
       count++;
       if(count % 4 == 0){
           document.write("<br>");
      }
  }
}
3.打印直角三角形(5行)
<style>
   *{
       margin:0;
       padding:0;
}
div{
       width:10px;
       height:10px;
       background:red;
       margin:10px;
       display:inline-block;//讓顯示在同一行
  }
</style>
<script>
   for(var i = 1 ; i <= 5 ; i++){
       for(var k = 1 ; k <= i ; k++){
           document.write("<div></div>" + "&nbsp;");
      }
   document.write("<br>");
}
</script>
4.打印等腰三角形:
<style>
   *{
       margin:0;
       padding:0;
}
div{
       width:10px;
       height:10px;
       background:red;
       margin:10px;
       display:inline-block;//讓顯示在同一行
  }
span{
       width:10px;
       height:10px;
       //background:green;
       display:inline-block;
       margin:10px;
  }
</style>
<script>
   //行數
   for(var i = 1 ; i <= 5 ; i++){
       //空的用每一個span把它擠過去
       for(var j = 4 ; j >= i ; j--){
           document.write("<span></span>" + "&nbsp;");
      }
       //等腰三角形的顯示
       for(var k = 1 ; k <= i ; k++){
           document.write("<div></div>" + "&nbsp;");
      }
   document.write("<br>");
}
</script>
5.求100-900之間的水仙花數。abc =a*a*a + b*b*b +c*c*c(次方函數: Math.pow(x,y);  x的y次方)
分析:獲取 個位、十位、百位 上面的數字
369數   取出 3 6 9;
取9 369 % 10;
取6 parseInt(369 / 10) % 10;
取3 parseInt(369 / 100);
拓展:
Math.round();   四舍五入
   Math.random();   隨機數
   Math.pow();     多少平方
   Math.ceil();    向上取整
   Math.floor();   向下取整
for(var i = 100 ; i < 900 ; i++){
   var
  ge = (i % 10),
       shi = (i / 10) % 10,
       bai = (i / 100);
   if(i == Math.pow(ge,3) + Math.pow(shi,3) + Math.pow(bai,3)){
       console.log(i + "是水仙花數");
  }
}
6.求出1-1/2+1/3-1/4+1/5....1/100的結果
for(var i = 1 ; i <= 100 ; i++){
   if(i % 2 == 0){
       sum -= 1 / i;
  }
   if(i % 2 != 0){
       sum += 1/i;
  }
}
document.write(sum);
7.菱形:
//行數
for(var i = 1 ; i <= 5 ; i++){
   for(var k = 4 ; k >= 1 ; k--){
       document.write("<span></span>");
  }
   for(var j = 1 ; j <= 2 * i - 1 ; j++ ){
       document.write("<div></div>");
  }
   document.write("<br>");
}
for(var i = 4 ; i >= 1 ; i--){
   for(var k = 4 ; k >= i ; k--){
       document.write("<span></span>");
  }
   for(var j = 1 ; j <= 2 * i - 1 ; j++){
       document.write("<div></div>");
  }
   document.write("<br>");
}

05.跳出循環

break continue 執行邏輯:

break:直接跳出結束循環,后面的代碼不再執行

continue:跳出當前本次循環,后面的代碼繼續執行

舉例:

1:操場上跑步,預計跑10圈,當跑到6圈 —> 女朋友打電話 -> 停止! break

eg:
for(var i =  1 ; i <= 10 ; i++){
   if(i == 6){
       break;
  }
   console.log(i);
}

eg:
for(var i = 1 ; i <= 10 ;i++){
   for(var k = 1 ; k <= 10 ; k++){
       if(k == 5){
           break;
      }
       document.write(i + "a");
  }
   document.write("<br>");
}

2:斗地主: 3個人 第二個人 炸彈 第三個人出不去,過! 第一個人王炸! continue

eg:輸出1-50 里面不包括33的數字
for(var i = 1 ; i <= 50 ; i++){
   if(i == 33){
       continue;
  }
   console.log(i);
}

任務(相關練習)

1.計算 1+2+3+4+5+...+23+25+...+50  //沒有24
var sum = 0;
for(var i = 1 ; i <= 50 ; i++){
   if(i == 24){
       continue;
  }
   sum += i;
}
document.write(sum);
2.計算100以內不能被6整除的數的和 (用continue完成)
var sum = 0;
for(var i = 1 ; i <= 100 ; i++){
   if(i % 6 == 0){
       continue;
  }
   sum += i;
}
document.write(sum);
3.求1+2!+3!+...+20!的值
var sum = 0 ;
var product = 1;
for(var i = 1 ; i <= 20 ; i++){
   product *= i;
   sum += product;
}
console.write(sum);
4.籃球從5米高的地方掉下來,每次彈起的高度是原來的30%,經過幾次彈起,籃球的高度小於0.1米。   //4次
什么情況下while和for:
  如果當循環次數 不確定的情況下 用while(true);  利用break;
var h = 5;
var count = 0;
while(true){
   h *= 0.3;
   count++;
   if(h < 0.1){
       break;
  }
}
document.write(count);
5.有一個棋盤,有64個方格,在第一個方格里面放1粒芝麻重量是0.00001kg,第二個里面放2粒,第三個里面放4,第四個盤子放6個   棋盤上放的所有芝麻的重量
分析:(找規律)
第一種情況:第四個盤子放6個
   讓從0算起:
   第幾個盤子 幾粒芝麻
  0 1   if(i == 0){num = 1;}
1 2
2 4
3 6
var sum = 0;
var all = 0;
for(var i = 0 ; i < 64 ; i++){
   if(i == 0){
       sum = 1;
  }
   else{
       sum = 2 *i;
  }
   all += sum;
}
console.log(all * 0.00001);

第二種情況:第四個盤子放8個
   讓從0算起:
   第幾個盤子 幾粒芝麻
  0 1
1 2
2 4
3 8
var all = 0;
for(i = 0 ; i < 64 ; i++){
   if(i == 0){
       all = 1;
  }
   all += Math.pow(2,i);
}
document.write(all * 0.00001);
6.輸出100-200之間所有的素數(質數);
分析:素數(質數):除了1和它本身,不能被其它數整除的
for(var i = 100 ; i < 200 ; i++){
var flag = true;  //制定口令
   for(var j = 2 ; j < i ; j++){
       if(i % j == 0){
           flag = false;   //如果不設置口令,它每次只是除了2,對2進行了判斷
           break;
      }
  }
   if(flag){ //如果口令符合則執行
       //允許打印了
       console.log(i + "是素數");
  }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM