您的位置:首页 > Web前端

【前端】js初学者经典题目

2020-04-07 12:30 1616 查看

js初学者经典题目

1.根据一个数字日期,判断这个日期是这一年的第几天例如: 2016和02和11,计算后结果为42 

1 var y = 2016;//+prompt("请输入年份") ;
2         var m = 2;
3         var day = 11;
4         var aDays = 0;
5         switch (m) {
6             case 12:
7                 aDays += 30;
8             case 11:
9                 aDays += 31;
10             case 10:
11                 aDays += 30;
12             case 9:
13                 aDays += 31;
14             case 8:
15                 aDays += 31;
16             case 7:
17                 aDays += 30;
18             case 6:
19                 aDays += 31;
20             case 5:
21                 aDays += 30;
22             case 4:
23                 aDays += 31;
24             case 3:
25                 if (y % 4 == 0 && y % 100 != 0  ||  y % 400 == 0) {      //判断二月是29天还是28天;
26                     aDays += 29;
27                 } else {
28                     aDays += 28;
29                 }
30             case 2:
31                 aDays += 31;
32             case 1:
33                 aDays += day;
34                 break;
35             default:
36                 console.log("错误的月份")
37                 break;
38
39         }
40         console.log(aDays);

 

 

 

 

2:求出1/1 - 1/2 + 1/3 - 1/4…..1/100的和

    var sum = 0;
var a = 1;
for(var i = 1; i <= 100; i++){
if(i % 2 == 0){      //如果i为偶数,那么则用-
sum = sum  - a / i;
}else{        
sum =  sum + a/i;   //否则就相加
}
}
console.log(sum);

 

  

 

3.篮球从5米高的地方掉下来,每次弹起的高度是原来的30%,经过几次弹起,篮球的高度小于0.1米。

1      var h  = 5;
2         var i = 1;
3         while (true) {
4             h = h * 0.3;
5             if(h < 0.1){
6                 console.log("弹起了" + i + "次");
7                 break;      //当i小于0.1时,中断循环;
8             }
9             i++;
10         }

 

 

 

4.打印出1000-2000年中所有的闰年,并以每行四个数的形式输出(document.write)

1         var n = 0;
2         for(var i = 1000; i <= 2000; i++){
3             if(i % 4 == 0 && i % 100 != 0  ||  i % 400 == 0){
4                 document.write(i + "&nbsp;&nbsp;&nbsp;");
5                 n++;                //纪录次数,递增
6                 if(n % 4 == 0){          //当为4的倍数时,换行;
7                 document.write("<br>");  
8             }
9             }
10         }

 

 

5.打印直角三角形

1         for(var j = 1; j <=6; j++){
2             for(var i = 1; i <= j; i++){
3                 document.write("*");
4         }
5                 document.write("<br>");
6         }

 

 

6.打印正三角形

  //拆分成3个三角形,第一个是倒着的直角三角形,第二个是正三角形,利用空格把三角形往外挤。

1     for(var i=1; i <=7; i++){
2         for(var a = 7; a >i; a--){
3             document.write("&nbsp;&nbsp;");
4         }
5         for(var k = 1; k<i+3; k++){ //加三则按照3 5 7排列;不加则按照 2 4 6排列;
6             document.write("*");
7         }
8         for(var k = 1; k<i; k++){
9             document.write("*");
10         }
11         document.write("<br>");
12     }

 

 

7.计算10的阶乘 //1*2*3*4*。。。*10

1         var cj = 1;
2         for(var i = 1; i <= 10; i++){
3             //console.log(i);
4             cj = cj * i ;
5         }
6         console.log(cj);

 

 

 

8.求100-999之间的水仙花数 //abc = a*a*a + b*b*b + c*c*c 即为水仙花数

1         for(var i = 100; i <= 999; i++){
2             var a = parseInt(i/100);      //获取百位数
3             var b = parseInt(i/10)%10;     //获取十位数
4             var c = parseInt(i%10);       //获取个位数
5             if(i == a*a*a + b*b*b + c*c*c){
6                 console.log(i);
7             }
8         }

 

 

9.有一个棋盘,有64个方格,在第一个方格里面放1粒芝麻重量是0.00001kg,第二个里面放2粒,第三个里面放4,棋盘上放的所有芝麻的重量 用循环嵌套做;

  //规律:

1     // 1
2     // 1 * 2
3     // 1 * 2 * 2
4     // 1 * 2 * 2 * 2
5         var sum = 0;
6         for(var k = 1;k<=64;k++){
7             var num = 1;
8             for(var i = 1;i <64; i++){
9                 num = num * 2; //按照规律,每次乘以2;
10             }
11             sum = sum + num;    //每次都把之前的sum进行相加;
12         }
13         console.log(sum * 0.00001);

 

 

10.有一个从小到大排好序的数组。现输入一个数,要求按原来的规律将它插入数组中

  ///第一种,直接添加,用sort排序;
function insert(arr, data) {
arr.push(data);
arr.sort(function(a, b) {
return a - b;
})
  }

   var arr = [3, 4, 5, 7, 8, 9];
   console.log(insert(arr, data))

1       //第二种
      for (var i = 0; i < arr.length; i++) {
2             if (data < arr[i]) {
3                 break;
4             }
5         }
6         // 2.将这个位置到最后的数据,全部再向后挪一位
7         for (var j = arr.length - 1; j >= i; j--) {
8             arr[j + 1] = arr[j];
9         }
10         // 3.将要插入的数据,放在第一步找到的位置处
11         arr[i] = data;
12     }
13     var arr = [3, 4, 5, 7, 8, 9];
14     console.log(arr);
15     insert(arr, 6);
16     console.log(arr);

 11.定义一个30项的数组,数组的每一项要求是1-10的随机数,每间隔5个数字,求出前五个数的平均值

// 定义一个数组
var arr = [];
for(var i= 0; i<30; i++){
arr.push(random(1,10));
}
console.log(arr);

for(var l = 0 ; l<arr.length;l+=5){
console.log(arr.slice(l,l+5));
console.log(avg(arr.slice(l,l+5)));
}

//求平均数
function avg(myArr){
var sum = 0;
for(var j = 0; j<myArr.length;j++){
sum += myArr[j];
}
return sum /myArr.length;
}

//生成随机数
function random(max,min){
return Math.round(Math.random() * (max-min)) + min;
}

13.编写生成4个数字验证码的函数,并生成10次,同时将结果存入数组

function rnumber(){
var arr=  [];
for(var i = 0; i<10; i++){
var a = random(0,9);
var b = random(0,9);
var c = random(0,9);
var d = random(0,9);
arr.push("" + a + b + c + d);
}
return arr;
}
console.log(rnumber());

//生成随机数
function random(max,min){
return Math.round(Math.random() * (max-min)) + min;
}

14.敏感词过滤//代码有问题!!,暂未解决

var arr = ["a", "w", "e", "sv", "qw"];
var str = "aw暖哒e阿大阿sv,请问我去qw";

for (var i = 0; i < arr.length; i++) {
for (var j = 0; j < str.length; j++) {
str = str.replace(arr[i], "*");
}
}

console.log(str);

 15.统计每个字符出现的次数,结果显示{a:2, b:1, c:2, d:1}

var str = "aabccdsdadadadsadadafqdqeqwsqwq";
//定义一个空字符
var newStr = "";
//循环遍历str
for (var i = 0; i < str.length; i++) {
//如果空字符里面没有str[i],那么就会返回-1,
if (newStr.indexOf(str[i]) == -1) {
//并放入空字符中
newStr += str[i];
}
}
console.log(newStr); //拿到去重字符的数组

var newObj = {};
for (var i = 0; i < str.length; i++) {
if (newObj[str[i]]) { //第一次为undefined,所以走else,第二次为1,走第一个。如果newStr里面有str[i],则++,否则
newObj[str[i]]++;
} else {
newObj[str[i]] = 1;
}
}
console.log(newObj);

 16.随机生成一个五位以内的数,然后输出该数共有多少位,每位分别是什么

var fiveNumber = random(0, 99999);
var fiveString = fiveNumber.toString();
console.log("该数是" + fiveString);
console.log("该数共有" + (fiveString.length) + "位");

for (var i = 0; i < fiveString.length; i++) {
numI = parseInt(i);
console.log("第" + (numI + 1) + "位是" + fiveString.charAt(i));
// console.log(fiveString.charAt(i))
}

function random(max, min) {
return Math.round(Math.random() * (max - min)) + min;
}
  • 点赞
  • 收藏
  • 分享
  • 文章举报
我是Superman丶 发布了65 篇原创文章 · 获赞 0 · 访问量 1324 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: