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());
    
  • 相关阅读:
    形象理解ERP(转)
    禁用windows server 2008 域密码复杂性要求策略
    How to adding find,filter,remove filter on display method Form
    Windows Server 2008 R2激活工具
    How to using bat command running VS development SSRS report
    Creating Your First Mac AppGetting Started
    Creating Your First Mac AppAdding a Track Object 添加一个 Track 对象
    Creating Your First Mac AppImplementing Action Methods 实现动作方法
    Creating Your First Mac AppReviewing the Code 审查代码
    Creating Your First Mac AppConfiguring the window 设置窗口
  • 原文地址:https://www.cnblogs.com/caijunjun/p/6626046.html
Copyright © 2011-2022 走看看