JavaScript 练习题

本文是锻炼编程逻辑思维的一些题的归纳,红色字体是个人认为初学比较难懂的题。

1.日期计算器:用户输入年月日,计算并打印出来是今年的第几天,星期几

 1 function data(){
 2                 //首先输入年月日
 3                 //1900年 1月1日为周一
 4                 var year =Number(prompt("请输入今年是哪一年 :")) ;
 5                 var month =Number(prompt("请输入是哪个月:")) ;
 6                 var day = Number(prompt("请输入今天是几号:")) ;
 7                 var i = 1;
 8                 var sum =0;
 9                 while(i<month){
10                     switch (i){
11                         case 1:
12                         case 3:
13                         case 5:
14                         case 7:
15                         case 8:
16                         case 10:
17                         sum= sum +31;
18                             break;
19                             
20                         case 2:
21                         if(year%400==0 || (year%4==0 && year!=0)){
22                             sum = sum+29;
23                         }else{
24                             sum = sum +28;
25                         }
26                             break;
27                             
28                         case 4:
29                         case 6:
30                         case 9:
31                         case 11:
32                         sum = sum+30;
33                             break;
34                     }
35                     i++;
36                 }
37                 sum = sum + day;
38                 document.write("今天是这一年的第"+sum +"天");
39             
40                 //计算今天周几已知1900的一月一日是周一,计算出1900到现在一共有几天
41                 for(var y=1900;y<=year;y++){ //year是自己输入要查询的年份,在年份到1900之间所有的
42                     //y表示从1900年开始的每一年
43                     if(year%400==0 || (year%4==0 && year!=0)){
44                         sum += 366; //如果是闰年就加366天
45                     }else{
46                         sum += 365;
47                     }
48                 }
49                 //计算今天是周几
50                 var week= sum%7;//取7余数就是周几(如果一月一号正好是周一的话)
51                 switch (week) {
52                     case 0:
53                         console.log("今天星期日");
54                         break;
55                     case 1:
56                         console.log("今天星期一");
57                         break;
58                     case 2:
59                         console.log("今天星期二");
60                         break;
61                     case 3:
62                         console.log("今天星期三");
63                         break;
64                     case 4:
65                         console.log("今天星期四");
66                         break;
67                     case 5:
68                         console.log("今天星期五");
69                         break;
70                     case 6:
71                         console.log("今天星期六");
72                         break;
73                 }
74             } 
75         

2.判断101-200之间有多少个素数,并输出所有素数。

其中定义布尔类型做判断是开关逻辑思想,会常用。

        

3.打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。

 1     
 2         
 3         
 4         

4.将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。 

程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:
(1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。
(2)如果n>k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你n,重复执行第一步。

(3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。


        
        

5.求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。

    
        
        

 

6.猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个 第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下 的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。

 1     
 2         

7.计算用户输入的数字的阶乘,例如用户输入的是5,则计算5的阶乘,5的阶乘为 5*4*3*2*1

        
        
        
        

8.定义一个函数,返回1+1/3+1/5+1/7+....1/n的和


        

9.定义一个函数,打印九九乘法口诀表


        
        

 10.有一张0.0001米的纸,对折多少次可以达到珠穆朗玛峰的高度8848;


        
        

11.羽毛球拍15元,球3元,水2元。200元每种至少一个,有多少可能羽毛球拍最多买13个 球最多买66个 水最多买100个


        
        

 

12.定义函数,去掉数组中重复元素

// 2.定义函数,去掉数组中重复元素
        function unique(arr){

            // 1.循环从arr中取值,i从0,同时创建空数组result
            for(var i=0,result=[];i){
                // 2. 循环遍历result,j从0
                for(var j=0;j){
                    // 3.如果result中当前元素等于arr中当前元素  arr中的这个数在新数组中已经存在
                    if(arr[i]==result[j]){
                        break;//退出循环
                    }
                }// 遍历结束
                // 如果j等于result的length  表示这个元素在新数组中不存在 
                if(j==result.length){
                    // 将arr中当前元素,追加result末尾
                    result[result.length]=arr[i];
                } 
                    
            }// 遍历结束
            return result;// 给出返回值
        }
        function testUnique(){
            var arr=[1,1,2,2,3,4,3,5,6];
            var result=unique(arr);
            console.log(result);
        }

 13.从键盘接受10个整数,求出其中的最大值和最小值。


        

14.输入10个数,保存在一个数组中,在数组中查找某个数字,给出是否找到信息,如果找到了输出该数在数组中所处的位置,如果找不到输出“找不到”


        

15.顾客从超市采购了10件商品,编写一个程序,用于接受每件商品的价格,计算应付的总金额。并分别打印出各个商品的价格以及应付的总金额的小票。

    

 16.编写一个程序,用于产生20个0-10之间的随机数,将这20个随机数存入数组,并通过函数统计这些随机数中某个数出现的次数

思路: 先声明一个数组用来存储所有的随机数的值,然后接受用户输入一个值,依次去比较有没有重复的,有的话计数器(time)加一

 1 

17.将一个数组中的元素逆序输出,即第一个元素和最后一个元素交换,第二个数与倒数第二元素交换…..,

例如:原数组为:9 2 5 7 8,逆序后的数组为:8 7 5 2 9

这个题主要是要用逆向排序的思路典型

先声明一个数组,存储用户输入,然后再逆向输出

 

    

18.对信息加密:每个字符串都转换成Unicode码 保证每一位字符都是五位Unicode码---不够的话用0补上

通过Unicode码解密字符

 1         
 2         
 3         
 4         
81         

19. 有一对幼兔,幼兔1个月后长成小兔,小兔1个月后长成成兔并生下一对幼兔,问几年后有多少对兔子,幼兔、小兔、成兔对数分别是多少。

var a,b,c,sum;
             for(var i=1;i<=12;i++){
                 //第一个月的时候
                 if(i==1){
                     a = 1;
                     b = 0;
                     c = 0;
                    sum = 1;
                 }else{
                     c = c + b;
                     b = a;
                     a = c;
                     sum = a + b + c;
                 }
                document.write(i+"个月后有幼兔:"+a+"对,小兔:"+b+"对,成兔:"+c+"对;一共:"+sum+"对。")

20.实现斐波拉切数列 1 1 2 3 5 8 13 21    特点:每前两个数相加等于第三个数, 前两 个数比较特殊,从第三个数开始。

 

转载于:https://www.cnblogs.com/wangzheng98/p/10864424.html

你可能感兴趣的:(JavaScript 练习题)