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 + " ");
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(" ");
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;
}