2021.12.10周五 二阶段 day_05 js笔记

        一、知识点回顾

        //  循环
        //  while            条件复杂的循环语句
        //  do while         至少执行一次
        //  for              已知循环次数

        //  注意
        //  嵌套    外层循环走一下,内层循环走一圈
        //  break  / continue
        
        
        // 100以内所有的质数
        // 思路:
        //    1  把100以内所有的数遍历一遍
        //    2  判断每一个数是不是质数
        //       思路:假设法(假设是一个质数,去找不是质数的证据)
        //    3  每5个换行
        //       思路:给一个计数器,出现一个质数,就计数一次(计数器是5的倍数就换行)




        for(var i = 2 , count = 0 ; i <= 100 ; i++){

        //假设法 假设是质数
        var flag = true ;
        //  找不是的证据 --- 只要能被任何一个数整数就不是
        for(var n = 2 ; n < i ; n++){
            // 只要能被其他数整除
            if(i % n === 0){
                // 说明不是质数,也就是假设被推翻
                flag = false ;
                // 结果已经出来,就不需要继续找证据
                break; 
            }
        }

        //  最终根据flag的值来判断是不是质数
        //  flag ? document.write(i) ; '';
        if(flag){
            document.write(i+'&nbsp;&nbsp;')
            //计数器自增
            count++;
            //判断是不是5的倍数
            if(count % 5 === 0){
                document.write('<br>')
            }
        }    
    }

二、三角形


        // 1111121
        // 11112121
        // 111212121
        // 1121212121
        // 12121212121
        // 212121212121

        //      *
        //     * *
        //    * * * 
        //   * * * * 
        //  * * * * * 

        for(var i = 0 ; i < 6 ; i++){
            for(var j = 0 ; j < 5-i ; j++ ){
                document.write('&nbsp;&nbsp;')
            }
            for(var k = 0 ; k <= i ; k++){
                document.write('*' +'&nbsp;')
            }
            document.write('<br>')
        }

三、阶层之和

        // 1*2*3*4
        //   1*2=2
        //   2*3=6
        //   6*4=24
        var sum = 0 ;
        var jc = 1;   // 乘积1
        for(var i = 1 ; i <= 10 ; i++ ){
            jc *= i;    
            //这个jc实际上就是i的阶乘 
            console.log(jc);

            sum += jc; 
        }
        document.write(sum)

四、水仙花

        // 水仙花  三位数   abc = a * a * a + b * b * b + c * c * c ;  
        //  思路:遍历所有的三位数 
        //       取出百十个,找到满足条件
        
        // for(var i = 100 ;i < 1000 ; i++){
        //     var a = Math.floor(i / 100);
        //     var b = Math.floor(i % 100 / 10);
        //     var c = Math.floor(i % 10);
        //     if( Math.pow(a,3) + Math.pow(b,3) + Math.pow(c,3)=== i){
        //         document.write(i+"&nbsp;&nbsp;");
        //     }
        // }



        //思路 : a b c 三个数字排列组合得到三位数 
        //       找到满足条件的数
        //       数字拼接

        
        for(var a = 1 ; a <= 9 ; a++){
            for(var b = 0 ;b <= 9 ; b++){
                for(var c = 0 ; c <= 9 ; c++){
                        // if( Math.pow(a,3) + Math.pow(b,3)+ Math.pow(c,3)===(a*100+b*10+c)){

                        // }
                        if( Math.pow(a,3) + Math.pow(b,3)+ Math.pow(c,3) ==''+ a + b + c){
                            document.write(''+ a + b + c +'&nbsp;&nbsp;')
                        }
                }
            }
        }

五、百鸡百钱

        // 鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一。百钱买百鸡,问鸡翁、鸡母、鸡雏各几何?
        // 公鸡 5
        // 母鸡 3 
        // 小鸡 1/3

        // 100块钱买100只鸡



        // 公鸡最多20只
        for(var a = 1 ; a <= 20 ; a++){
            // 母鸡最多30只
            for(var b = 1 ; b <= 33 ; b++){
                // 小鸡最多100只    
                for(var c = 1 ; c<=100;c++) {
                    if(a + b + c === 100 && 5 * a + 3 * b + c / 3 === 100){
                        document.write(a+'&nbsp',b+'&nbsp',c+'&nbsp'+'&nbsp;'+'&nbsp'+'&nbsp')
                    }
                }
            }
        }

六、认识函数

  <style>
        .red{
            background: red;
        }
       /* 属性选择器 */
       div[qq ='a']{
            color: blue;
        }
        input[type='text']{
            background: red;
        }
        div[class ='a']{
            background: #ff0;
        }
    </style> 

    <body> 
    <div id="" class="a" qq='a'>qqqqqqqqq</div>
    <p></p>
    <input type="text" name="" id="">
    <input type="button" name="" id="">


    <!-- 自定义标签 -->

    <!-- <qq class = "red">22</qq>

    <h7>22</h7>

    <qewre>22</qewre> -->
 


    <script>

            // function 函数

            // 函数: 把同一个功能的代码块放在一起 
            // 作用: 封装性   +  复用性


            // 函数分类:
            //      系统函数  ()
            //      自定义函数 

            // 函数: 就是个工具
            //    重复使用的
            //    需要被人使用
            //    工具有的有参数,有的没有 Math.random() alert(666)


    </script>

   </body>

七、求和

        // var a = 2 ;
        // var b = 3 ;

        // console.log(a + b);


        // var c = 3 ;
        // var d = 4 ;
        // console.log(c + d);

        //  函数的语法
        //     function 函数名(参数){
                // 功能是怎么实现的 
        //     }
        //  函数名(参数)   --- 函数必须调用

        //  说明书
        //  函数的功能:求两个数的和
        //  参数说明:
        //      第一个参数是一个数字
        //      第二个参数也是一个数字
            function sum(a , b){
                console.log(a+b);
            }

            sum(2,3)

            
            sum(2)    // NaN

八、打印三角形封装

        // *
        // **
        // ***
        // ****

        // for(var i = 0 ; i < 4 ; i++){
        //     for(j = 0 ; j <= i ; j++){
        //         document.write('*')
        //     }
        //     document.write('<br>')
        // }        


        // 函数封装的步骤
        // 1 普通的实现这个功能
        // 2 装个壳子  function
        // 3 取个名字
        // 4 考虑是否需要参数 --- 参数可有可无
        // 5 一定要调用函数!!!
        // 6 附上说明书 

        // 函数的功能:打印三角形
        // 函数的参数:
        //   第一个参数是数字   number  --- 打印几行三角形
        //   第二个参数是字符串   string  ---  打印的内容
        
        function star(n, m){
            for(var i = 0 ; i < n ; i++){
                for(j = 0 ; j <= i ; j++){
                    document.write(m)
                }
                document.write('<br>')
            }        
        }    


        star(3,'*')
        star(13,'$')

九、九九乘法表的封装


        // for(var i = 1; i <= 9 ;i++){
        //     for(var j = 1;  j<=i; j++){
        //         document.write(j + '*' + i + '=' + i * j +'&nbsp;&nbsp;')
        //     }
        //     document.write('<br>')
        // }


        // 函数声明的地方   形参
        // 函数调用的地方   实参

        // n和m叫做形式参数 ---- 形参
        function abc(n , m) {
            for(var i = 1; i <= n ;i++){
                for(var j = 1;  j<=i; j++){
                    if(m === '*'){
                        document.write(j + '*' + i + '=' + i * j +'&nbsp;&nbsp;')
                    }
                    else if(m === '+'){
                        document.write(j + '+' + i + '=' + (i + j) +'&nbsp;&nbsp;')
                    }
                }
                document.write('<br>')
             
            }
            
        }


     


        // 4 +   叫做实际参数  --- 实参

        abc(4 , '+' )
        document.write('<br>')
        abc(6 , '*')

十、输出100以内的质数

   //函数: 输出min-max之间的质数 每五个一换行
   function zhi(min,max){
    var count = 0 ;
    for(var i = min ; i <= max;i++){
        //假设法
        var flag = true ;
        //找不是的证据 --- 只要能被任何一个数整数就不是
        for(var j = 2 ; j < i ;j++){
           //只要能被其他数整除
           if(i % j === 0){
                // 说明不是质数,也就是假设被推翻
                flag = false;
                // 结果已经出来,就不需要继续找证据
                break;
           } 
        }
        
        //判断flag是不是质数
        // flag ? document.write(i+'&nbsp;&nbsp'):'';
        if(flag){
            document.write(i+'&nbsp;&nbsp;')
            count++;
            if(count % 5 === 0 ){
                document.write('<br>')
            }

        }   

    }
   }


   zhi(600,1500)

十一、求和

        // 函数的返回值 --- 函数最终执行的结果
        //   函数的返回值也是可有可无的 


        // a b 形参
        function sum( a , b){
            // 只是在控制台打印了这个结果
            // console.log(a + b)
            var result = a + b

            // result是在函数内部定义的,在外面无法使用
            // console.log(result);
            
            // document.write(result)

            return result;
        }

        // 2 3 实参
        var n = sum(2,3)
        document.write(n)
        // document.write(result);//报错,因为访问不到函数的内部变量




        // var m = sum(2,3);
        // console.log(m);   //控制台打印出5



        //  var n = Math.random();
        //  console.log(n);  //函数会得到一个结果 

        var res = alert(666)
        console.log(res);  // 没有结果

十二、封装随机数

        // Math.round(Math.random()*(max-min))+min 


        // 封装随机生成min-max范围内的数 
        function rand(min , max){
            // var n = Math.round(Math.random()*(max-min))+min ;
            // return n ;
            return Math.round(Math.random()*(max-min))+min ;
        }


        var m = rand(0,10);

        document.write(m);

        //  document.write(rand(0,10))


         //判断一个数是不是质数
       
        function isZhi(x){
            var flag = true ;
            for(var i = 2 ; i < x ; i++){
                if(x % i === 0){
                    flag = false;
                    break;
                }
            }

            //   if(flag){
            //     return true
            // } else {
            //     return false;
            // }
            return flag;
         } 


         var r1 = isZhi(5) ; // true   5是质数 
         var r2 = isZhi(6) ; // false  6不是质数
         console.log(r1 , r2);



         // 函数定义的时候是形参
         // 函数调用的时候是实参
         var r3 = isZhi(m);
         console.log(r3);
         //判断随机数是不是质数



         // 100以内所有质数

         for(var i = 2 ; i <= 100 ; i++){
             var r4 = isZhi(i);
             if(r4) {
                 document.write(i)
             }
         }

十三、调用函数

        产生100-200之间的随机数是:<input type="text" name="" id="inp1"><br>
        判断它是否为质数<input type="text" name="" id="inp2">

        <script src="js/tools.js"></script>
        <script>

        // 1 产生一个100-200以内的随机数,判断是不是质数

        var n = rand(100,200); //用变量n接收rand函数的返回值

        var res = isZhi(n); //用变量res接收isZhi函数的返回值

        console.log(n , res);


        // 把随机生成数放在一个输入框
        // 把判断是否为质数放在一个输入框
        var oInp1 = get('inp1');
        var oInp2 = get('inp2');

        oInp1.value = n ;  //把生成的随机数n赋值给输入框1

        // n2.value = res; //把判断的结果res赋值给输入框2

        if(res){
            oInp2.value = '是一个质数'
        }
        else{
            oInp2.value = '不是一个质数'
        }
      

        //随机生成两个数  并用简易计算器计算
        var n1 = rand(0,100) ;
        var n2 = rand(0,100) ;
        var res2 = jSq(n1 , n2 , '*');
        
        console.log(n1,'*',n2, '=',res2);

十四、函数注意点

        // alert(666)  直接调用函数,并且传了一个参数
        // var n = Math.random()  调用函数并使用一个变量接收这个结果


        // 参数
        // 返回值
        //       ---函数执行的结果
        //       ---提前结束整个函数 

        function get(id){
            return document.getElementById(id);
        }

        // return 提前结束函数

        function isZhi(n){
            for(var i = 2; i < n ; i++){
                if(n % i === 0){
                    return false;
                }
            }
            return true;
        }

        var res = isZhi(4);
        console.log(res);

十五、简化写法

        var x = '123';
        console.log(isNaN(x)); //false


        var res = isNaN(x);
        console.log(res);   // false 

        var res = isZhi(4);  //判断4是不是质数
        console.log(res);
        // console.log(isZhi(4));

        // var n = Math.random()* 100 ; // 0-100
        // n = Math.round(n); //取整

        // Math.random()的执行结果变成了 Math.round这个函数的实参
        // var n = Math.round(Math.random()*100);


        var n = rand(0,100);
        var res = isZhi(n);

        // var res=isZhi(rand(0,100));

        console.log(n,res);

十六、简易计算器

     <script src="js/tools.js"></script>
    <script>

        // 获取元素
        var oInp1  = get('inp1')  ;
        var oInp2  = get('inp2')  ;
        var oResult= get('result');
        var oBtn   = get('btn')   ;
        var oFuHao = get('fuHao') ; 

        // 函数不能没有名字
        // function (a,b){
        //     console.log(a+b);
        // }

        // 事件处理函数 --- 函数只能被点击的时候调用(系统调用)
        oBtn.onclick = function(){
            var n1 = oInp1.value;  
            var n2 = oInp2.value;
            var f  = oFuHao.value;
            // console.log(n1,n2,f);
            var res = jSq(n1 * 1,n2 * 1,f);
            //因为n1,n2是输入框的值,为字符串,因此得做隐式转化
            oResult.value = res; //把通过计算器函数返回的res值,赋给结果框


            //也可以写成这样
            // oResult.value = jSq(n1 * 1, n2 * 1 , f);
            
            //也可以写成这样
            // oResult.value = jSq(oInp1.value * 1 , oInp2.value * 1 ,oFuHao.value)

            //也可以写成这样
            // oResult.value = jSq(get('inp1').value * 1 ,get('inp2').value * 1 ,get('fuHao').value)
        }

写在名为tools.js的文件中 

// 功能:随机生成一个某个范围内的整数
// 参数:
//   min  number  范围最小值
//   max  number  范围最大值
// 返回值:
//   number
function rand(min , max){
    return Math.round(Math.random()*(max-min)+min)
}

// 判断一个数是不是质数 
// 参数:
//     number
// 返回值:
//     boolean
function isZhi(x){
    // var flag = true;
    for(var i = 2 ; i < x ; i++){
        if(x % i === 0){
            // flag = false;
            // break;
            return false;
        }
    }
    // return flag;
    return true;
}

// 根据id找到元素
function get(id){
    return  document.getElementById(id);
 
}


//简易计算器
function jSq (a,b,f){
    //  return 3
    //  return 提前结束整个函数 ,也就是说 return后面的代码永远不会执行
    
    switch(f){
        case '+' : return a + b ;
        case '-' : return a - b ;
        case '*' : return a * b ;
        case '/' : return a / b ;
    }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值