for循环,while循环,switch case

339 阅读3分钟

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>
            //值为a
    

    1.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>