zoukankan      html  css  js  c++  java
  • JavaScript基础testDemo

    前言

    这篇随笔记录的是一些之前JavaScript基础学习时的逻辑题demo.

    //        1 写出判断一个年份是否闰年的表达式:
    
    //        润年的判定(符合下面两个条件之一):
    //        年份能够被400整除.(比如:2000)
    //        年份能够被4整除但不能被100整除.(比如:2008)
    //
                var year = 2008;
                year % 400 == 0 || (year % 4 == 0 && year % 100 != 0)
    //
    //        2 让用户输入一个年份,如果是润年,则输出true,如果不是,则输出false
                var year = prompt("请输入一个年份");
                if (year % 400 == 0 || (year % 4 == 0 && year % 100 != 0)){
                    console.log(true);
                }else {
                    console.log(false);
                }
       
    //        3 比较3个数字的大小 ,输出最大者(不考虑相等)
    //            思路:先比较其中两个,再用其中教大者和第三个数比较
                var a = 6,b= 7,c=8;
                if (a > b) {
                    if ( a > c) {
                        console.log(a);
                    }else {
                        console.log(c);
                    }
                }else {
                    if ( b > c) {
                        console.log(b);
                    }else {
                        console.log(c);
                    }
                }
    //
    //        4 提示用户输入密码,如果密码是“88888”则提示正确,否则要求再输入一次,如果密码是“88888”则提示正确,否则提示错误,程序结束。
    //            思路:1 让用户输入密码
                    var pwd = prompt("请输入密码");
    //                    2 判断密码是否等于"888888"
                    if (pwd == "888888"){
    //                    3 密码正确,提示正确
                        alert("密码正确");
                    }else {
    //                    4 密码错误,要求重新输入
                        pwd = prompt("密码错误,请重新输入密码");
    //                    5   在判断一次
                        if (pwd == "888888"){
    //                        6   提示正确
                            alert("密码正确");
                        }else {
                            alert("密码错误");
                        }
                    }
    
    //        5 提示用户输入用户名,然后再提示输入密码,如果用户名是“admin”并且密码是“88888”,则提示正确,否则,如果用户名不是admin就提示用户用户名不存在,如果用户名是admin则提示密码错误.
    //            思路:1  接收用户输入的用户名和密码
                var account = prompt("输入用户名");
                var pwd = prompt("输入密码");
    //            2   判断用户名和密码是否正确
                if (account == "admin" && pwd == "888888"){
                    alert("登录成功");
                }else {
                    //如果用户名不是admin就提示用户用户名不存在
                    if (account != "admin"){
                        alert("用户不存在");
                    }else {
    //                    如果用户名是admin则提示密码错误
                        alert("密码错误");
                    }
                }
    //        6 提示用户输入年龄,如果大于等于18,则告知用户可以查看,如果小于10岁,则告知不允许查看,如果大于等于10岁并且小于18,则让用户确认是否查看
    //            思路:1 接收用户输入
                var age = parseInt(prompt("年龄"));4
    //            2   判断处在哪个阶段
                if (age > 18) {
                    alert("可以查看");
                }else if (age > 10) {
                    confirm("你确定要看?");
                }else {
                    alert("不允许查看");
                }
    //
    //        循环结构
    //
    //        1 要求用户输入用户名和密码 用户名只要不是admin 密码不是888888就提示用户一直重新输入
                var account = prompt("请输入用户名");
                var pwd = prompt("请输入密码");
                while (account != "admin" || pwd != "888888"){
                    alert("用户名或者密码错误,请重新输入");
                    account = prompt("请输入用户名");
                    pwd = prompt("请输入密码");
                }
                alert("正确");
    //        2 输入一个数字,输出这个数字的位数
                var number = parseInt(prompt("请输入一个数字"));
                var count = 0;
                if (number == 0){
                    count = 1;
                    console.log("数字的位数是:"+count);
                }else {
                    while (number != 0){
                        number = parseInt(number / 10);
                        count++;
                    }
                    console.log("数字的位数是:"+count);
                }
    
    //        3 输入班级人数,然后依次输入学员成绩,计算班级学员的平均成绩和总成绩
                var sum = 0;
                var count = parseInt("输入人数");
                for (var i = 0; i < count; i++) {
                    var score = parseFloat(prompt("请输入第个"+(i+1)+"同学的成绩"));
                    sum += score;
                }
                var avg = sum / count;
                console.log("总分为"+sum);
                console.log("平均分"+avg);
    //        4	打印1到100的和
                var sum = 0;
                for (var i = 1; i <= 100; i++) {
                    sum += i;
                }
                console.log(sum);
    //        5	求1-100之间所有数的和、平均值
    //            和
                var sum = 0;
                for (var i = 1; i <= 100; i++) {
                    sum+=i;
                }
    //            平均值
                var avg = sum/100;
    //        6	求1-100之间所有偶数的和
                var sum = 0;
                for (var i = 1; i <= 100; i++) {
                      if ( i % 2 == 0){
                          sum += i;
                      }
                }
    //        7	求1-100之间所有所有奇数的和
    //
    
    //        8	找出100-999间的水仙花数
            for (var i = 100; i < 1000; i++) {
                var a = i % 10;
                var b = parseInt(i / 10 % 10);
                var c = parseInt(i / 100)
                if (i == a * a * a + b * b * b + c * c * c) {
                    console.log(i)
                }
            }
    //
    //        9	本金10000元存入银行,年利率是千分之三,每过1年,将本金和利息相加作为新的本金。计算5年后,获得多少钱?
                var money = 10000;
                var rate = 0.003;
                for (var i = 0; i < 5; i++) {
                    money *= rate;
                }
                console.log(money);
    //
    //        10	求斐波那契数列中第12个数字,1,1,2,3,5,8,13,21
    
                function getFBNQ(n){
                    if(n<3){return 1};
                    return getFBNQ(n-1)+getFBNQ(n-2);
                }
                console.log(getFBNQ(7))
    //
    //        11	在网页上打印三角形
                    for (var i = 0; i < 9; i++) {
                        for (var j = 0; j <= i; j++) {
                            document.write("*");
                        }
                        document.write("<br>");
                    }
    //
    //        12	输出九九乘法表
                for (var i = 1; i <= 9; i++) {
                    for (var j = 1; j <= i; j++) {
                        document.write( j + " x " + i + " = " + i*j + "&nbsp;&nbsp;");
                    }
                    document.write("<br>");
                }
    //
    //        13	案例:求1—100之间所有不能被3整除的整数的和,输出第一个大于2000的和并结束程序
                var sum = 0;
                for (var i = 1; i <= 100; i++) {
                    if ( i % 3 == 0){
                        continue;
                    }
                    sum += i;
                    if (sum > 2000){
                        console.log(sum);
                        break;
                    }
                }//
    //        14 	循环录入5个人的年龄并计算平均年龄,如果录入的数据出现负数或大于100的数,立即停止输入并报错.
                    var sum = 0;
    //                标记一下,如果中途出现问题,不需要执行求平均值的操作
                    var flag = true;
                    for (var i = 0; i < 5; i++) {
                        var age = parseInt(prompt("请输入第"+(i+1)+"个人的年龄"));
                        if ( age < 0 || age > 100 ){
                            alert("你输入的年龄有问题");
                            //出现问题之后要把标记更改
                            flag = false;
                            break;
                        }
                        sum += age;
                    }
                    if (flag){
                        var avg = sum / 5;
                        console.log(avg);
                    }
    
    
    //
    //        15	计算1-100之间不能被7整除的数的和
                    var sum = 0;
                    for (var i = 1; i < 100; i++) {
                        if( i % 7 == 0 ){
                            continue;
                        }
                        sum += i;
                    }
    //        16	输出1-100内所有素数
    //            素数:除了1和自己本身不能被其他数字整除
                for (var i = 2; i < 100; i++) {
                    var flag = true;
                    for (var j = 2 ; j < i; j++){
                        if ( i % j == 0){
                            flag = false;
                            break;
                        }
                    }
                    if (flag){
                        console.log(i);
                    }
                }
    
    

    循环

    // 找出100-999间的水仙花数
    // 水仙花数是指一个 n 位数 ( n≥3 ),它的每个位上的数字的 n 次幂之和等于它本身。
       for ( var i = 100 ; i <= 999 ; i++ ) {
    //        在循环内部做的事:
    //            判断一个数字是否水仙花数
    //                1 求出个位十位百位
           var unit = i % 10;
           var ten =  parseInt(i /10) % 10;
           var hun = parseInt(i /100);
    //                2 三个位数的3次幂之和是否等于原来的数字
           if(Math.pow(unit,3)+Math.pow(ten,3)+Math.pow(hun,3) == i){
               console.log(i);
           }
       }
    
    //求斐波那契数列中第12个数字,1,1,2,3,5,8,13,21
    
    //代表的是要求的数字的前两个数字
       var n1 = 1;
       var n2 = 1;
       var n3;
    
       for (var i = 3; i <= 12; i++) {
           n3 = n2 + n1;
           n1 = n2;
           n2 = n3;
       }
       console.log(n3);
    
    
    //输出九九乘法表
       for (var i = 1; i <= 9; i++) {
           for (var j = 1; j <= i; j++) {
               document.write(j + "x" + i + "=" + j*i + "&nbsp;&nbsp;")
           }
           document.write("<br>");
       }
    
    //输出1-100内所有素数
    //    素数:质数 ==》 除了1和自己本身之外不能被其他数字整除
    for (var i = 2; i <= 100 ; i++) {
    //    问:如何证明一个数字是素数?
    //        从2开始到n-1这么多个数字都不能被整除
    
    //    假设法:
    //        先假设这个数字是质数
        var flag = true;
    //            循环的从2开始用这个数字除以每次循环的次数,如果有其中一次能被整除,就证明假设不成立
        for (var j = 2; j <= i - 1; j++) {
            if(i % j === 0){
    //            推翻假设
                flag = false;
                break;
            }
        }
    //            如果一直循环结束之后,假设仍然成立,就证明是质数
        if(flag){
            console.log(i);
        }
    }
    
    ``
    - 数组
    ``js
    //        求数组中元素的和,平均值,最大值,最小值
    //        var arr = [5,89,64,75,23,15];
    //        var sum = 0;
    //        for (var i = 0; i < arr.length; i++) {
    //            sum+=arr[i];
    //        }
    //        console.log(sum);
    //        console.log(sum/arr.length);
    //
    ////        最大值
    ////        1 先默认数组的第0个元素是最大值
    //        var max = arr[0];
    ////        循环的和后面的每一个元素比较,取其大者和后面元素再比较
    //        for(var i = 1;i<arr.length;i++){
    //            if(max < arr[i]){
    //                max = arr[i];
    //            }
    //        }
    //        console.log(max);
    //        根据输入班级人数依次输入每个人成绩,求总成绩和平均值
    //        1 输入班级人数
    //        var count =  parseInt(prompt("输入班级人数"));
    //        从依次、和根据输入的人数可以知道用for循环
    //            在循环里做什么事情?
    //                输入每个人的成绩
    //                    求和
    //        用数组来保存每一个同学的成绩
    //        var arr = [];
    //        var index = 0;
    //        for(var i = 0; i < count ;i++){
    //            var score = parseFloat(prompt("请输入第"+(i+1)+"个同学的成绩"));
    ////            arr[index] = score;
    ////            index++;
    //            arr[arr.length] = score;
    //        }
    //        console.log(arr);
    //        将字符串数组用|或其他符号分割成字符串
    //        ["a","b","c","d"]  ===>  "a|b|c|d"   "a,b,c,d"
    //        var arr = ["a","b","c","d"];
    //        var str = "";
    //        for (var i = 0; i < arr.length; i++) {
    //            if(i == arr.length - 1){
    //                str += arr[i];
    //            }else {
    //                str += arr[i] + ",";
    //            }
    //        }
    //        console.log(str);
    //        去掉数组中重复元素并组成新数组
    //        var arr = [1,2,3,1,2,3,4,5,6,6,7];
    //
    ////        var newArr = [1,2,3,4,5,6,7]
    //
    ////        1 先声明一个新的数组用来装不重复的数据
    //        var newArr = [1,2];
    ////            思路:用旧的数组中的每一个数字跟新数组中的每一个数字比较,如过旧的数组中某一个元素跟新数组中每一个元素都不重复,就把这个元素往新数组中添加
    ////        外层循环取出旧的数组中的每一个元素
    //        for (var i = 0; i < arr.length; i++) {
    ////            内层循环取出新数组中的每一个元素
    ////            假设旧的数组元素跟新数组元素中任意一个都不相等
    //            var flag = false;
    //            for (var j = 0; j < newArr.length; j++) {
    ////                如果任意一个新元素和旧元素相等,证明假设是错的
    //                if ( arr[i] === newArr[j] ){
    //                    flag = true;
    //                    break;
    //                }
    //            }
    //            if(!flag) {
    ////                当假设仍然成立,才会把旧数组加入到新数组中
    //                newArr[newArr.length] = arr[i];
    //            }
    //        }
    //        console.log(newArr);
    //        将数组中大于20的数字放入到一个新的数组中
    
    //        var arr = [2,7,8,15,89,44,56,3,9];
    //        var newArr = [];
    ////        用数组中的每一个元素和20比较,如果大于20就添加到新的数组中
    //        for (var i = 0; i < arr.length; i++) {
    //            if(arr[i] > 20){
    //                newArr[newArr.length] = arr[i];
    //            }
    //        }
    //        console.log(newArr);
    
    //        翻转数组
    //        var arr = [1,2,3,4,5,6,7,8,9];
    //
    //        for(var i = 0; i< arr.length / 2;i++){
    //            var temp = arr[i];
    //            arr[i] = arr[arr.length - 1 -i];
    //            arr[arr.length - 1 -i] = temp;
    //        }
    //        console.log(arr);
    
    //        arr = [9,8,7,6,5,4,3,2,1]
    //        如果不在原来的数组上修改
    //        直接用一个新数组将原来的数组从后开始遍历,往新数组里面存储
    //        var newArr = [];
    //        for (var i = arr.length -1 ; i >= 0; i-- ) {
    //            newArr[newArr.length] = arr[i];
    //        }
    //        console.log(newArr);
    
    //        在原来的数组上修改的
    
    
    //        交换两个变量的值
    //        var a = 10;
    //        var b = 20;
    //        var temp = a;
    //        a = b;
    //        b = temp;
    

    冒泡排序

    //        冒泡排序,从小到大    [15,97,36,13,47,42,88]
            var arr = [15,97,36,13,47,42,88];
    //        1 用外层循环控制比较的轮数
            for (var i = 0; i < arr.length - 1; i++) {
    //            2 用内存循环控制比较的次数
                for (var j = 0; j < arr.length - i - 1; j++) {
    //                如果前一个大于后一个,要调换位置
                    if(arr[j] > arr[j+1]){
                        var temp = arr[j];
                        arr[j] = arr[j+1];
                        arr[j+1] = temp;
                    }
                }
            }
    

    函数

    //        判断一个数是否是素数
           var number = 789;
    
           var flag = true;
           for (var i = 2; i < number; i++) {
               if(number % i === 0){
                   flag = false;
                   break;
               }
           }
           function isPrime(n) {
                var flag = true;
                for (var i = 2; i < n; i++) {
                    if(n % i === 0){
                        flag = false;
                        break;
                    }
                }
                return flag;
                if (flag){
                    return true;
                }else {
                    return false;
                }
            }
    
    //        求斐波那契数列Fibonacci中的第n个数是多少?      1 1 2 3 5 8 13 21...
           function getFibonacci1(n) {
               if(n == 1 || n == 2){
                   return 1;
               }
               var n1 = 1;
               var n2 = 1;
               var n3;
               for (var i = 3; i <= n; i++) {
                   n3 = n1 + n2;
                   n1 = n2;
                   n2 = n3;
               }
               return n3;    
           }
    //        递归
    //            就是函数内部调用自己本身
    //            所有使用递归的时候,一定要有退出递归的条件
            function getFibonacci2(n) {
                if (n == 1 || n == 2){
                    return 1;
                }
               return getFibonacci(n -1) + getFibonacci( n -2 )
            }    
    

    数组练习

            //        将一个字符串数组输出为|分割的形式,比如“刘备|张飞|关羽”。使用两种方式实现
            //        join
            //        var arr = ["a","b","c","d"];
            //        console.log(arr.join("|"));
    
            //        将一个字符串数组的元素的顺序进行反转。["a","b","c","d"] ["d","c","b","a"]。使用两种种方式实现。
            //        reverse
            //            作用是翻转数组,会改变原数组的顺序
            //        var arr = [0,1,2,3,4,5,6];
            //        console.log(arr.reverse());
    
            //        工资的数组[1500,1200,2000,2100,1800],把工资超过2000的删除
            //        splice
            //            用于删除、添加、替换数组的元素
            //            splice(从哪里开始删除,删除多少个)
            //        var arr =[1500,1200,2000,2100,2500,1800];
            //
            //        for (var i = 0; i <arr.length; i++) {
            //            if (arr[i] > 2000){
            //                arr.splice(i,1);
            ////                因为删掉一个之后,后面的元素会往前挪一位,所有要把索引也相应的向前挪一位
            //                i--;
            //            }
            //        }
            //        console.log(arr);
    
            //       ["c","a","z","a","x","a"]找到数组中每一个a出现的位置
    
            //        indexOf
            //            获取某个元素在数组中的索引,如果没找到,返回-1
    //                    indexOf(要查找的元素,从哪个位置开始查找)
            var arr = ["c", "a", "z", "a", "x", "a"];
            var index = -1;
            for(var i = 0;i<arr.length;i++){
                index = arr.indexOf("a",++index);
    //            当index==-1的时候,已经找到了数组的最末尾并且没有这个元素了,没有必要继续循环了
                if(index == -1){
                    break;
                }
                console.log(index);
            }
    
    

    Date对象

    //        获取指定的日期和时间部分
            var date = new Date();
    ////        获取日期
           console.log(date.toDateString());
           console.log(date.toLocaleDateString());
    ////        获取时间
           console.log(date.toTimeString());
           console.log(date.toLocaleTimeString());
    //        获取日期中的每一个部分
            var date = new Date();
            console.log(date.getTime());//得到的是1970年到这个日期的毫秒总数
            console.log(date.getMilliseconds());//得到当前时间的毫秒数 0-999
            console.log(date.getSeconds());
            console.log(date.getMinutes());
            console.log(date.getHours());
            console.log(date.getDay());
            console.log(date.getDate());
            console.log(date.getMonth());//月份也是从0开始的
            console.log(date.getFullYear());
    
  • 相关阅读:
    【jQuery】用jQuery给文本框添加只读属性【readOnly】
    解决embed标签显示在div上层【转藏】
    width:100% 和 max-width:100%; 有区别吗【转藏】
    一位资深程序员的独白
    jQuery 取值、赋值的基本方法【转藏】
    js判断手机端操作系统(Andorid/IOS)
    PhpStrom 和 wamp 配置 xdebug
    php 中 ?? 和 empty 的 区别
    phpSpreadSheet 中 使用的 一些坑
    html td 限制 高度 和 宽度
  • 原文地址:https://www.cnblogs.com/caijunjun/p/6626046.html
Copyright © 2011-2022 走看看