0


59道JS常见逻辑算法程序题(附带题目和答案)

  1. 输出10到1的偶数
  2. 输出1-100间能被7整除的数
  3. 输出1-21之间不能被7整除数的累加和
  4. 输出1-10与5相乘的结果
  5. 计算1-100的和并输出结果
  6. 把100-200之间不能被3整除的数输出
  7. 将1998-2008之间的闰年年份输出
  8. 求乘积等于100的所有乘数和被乘数(以一对的方式输出)
  9. 求斐波那契数列40个数,这个数列的特点为:第1,2两个数为1和1,从第三个数开始,该数是前面两个数的和,即1,1,2,3,5,8,13,21......
  10. 求数组中所有元素的和
  11. 求数组中所有元素的平均值
  12. 求数组中所有元素的最大值
  13. 倒序遍历输出数组
  14. 把数组中的每一个元素用&拼接到一起并输出
  15. 去掉数组中重复的0,并把其他的数据放在一个新的数组中
  16. 反转数组
  17. 冒泡排序:将一个数组按照从小到大的顺序进行排列
  18. 冒泡排序:将一个数组按照从大到小的顺序进行排列
  19. 请输入1-100之间能够被5和6整除或者能被7整除的数
  20. 打印输出100以内的不带7和7的倍数
  21. 打印一个分数(几分之几例如 2/1 3/2 .....)
  22. 打印输出100以内的 3的倍数和7的倍数
  23. 用do while 求 3! 3x2x1+2x1+1x1=9
  24. 100以内偶数与奇数相加
  25. 一个直角三角形
  26. 100以内不带7和7的倍数
  27. 求1-n的累加和
  28. 圆的面积
  29. 求两个数中的最大值
  30. 求三个值中的最大值
  31. 判断一个随机输入数是不是素数
  32. 函数写阶乘
  33. 求任意个数的最大值
  34. 求任意个数的和
  35. 求斐波那契数列Fibonacci中的第n个数是多少? 1 1 2 3 5 8 13 21...
  36. 输入一个年份,判断是否是闰年[闰年:能被4整数并且不能被100整数,或者能被400整数]
  37. 输入某年某月某日,判断这一天是这一年的第几天?(方法一)
  38. 输入某年某月某日,判断这一天是这一年的第几天?(方法二)
  39. 自己实现输入一个数获取长度
  40. 设计一个函数,输入行数和列数,生成相应表格
  41. 判断水仙花 例:153=111+555+333
  42. 使用1块,2块,5块钱,凑出20块钱的所有可能
  43. 请使用代码在页面上的效果
  44. 请使用代码实现,去掉一个最高分,去掉一个最低分之后求平均分是多少?
  45. **设计一个函数,让用户输入一个数字,然后反转输出该数字 例:2891 -》 1982 **
  46. 求10-20之间的随机数
  47. 随机生成rgb的颜色
  48. 将当前的时间格式化输出,封装成一个函数完成此操作 格式:2021年12月8日,17时21分15秒
  49. 随便输入两个时间戳/毫秒值判断相差 天 时 分 秒
  50. 截取字符串"我爱中华人民共和国",中的"中华"
  51. "abcoefoxyozzopp"查找字符串中所有o出现的位置
  52. 把字符串中所有的o替换成!
  53. **判断一个字符串中出现次数最多的字符,统计这个次数 **
  54. 将一个字符串数组输出为|分割的形式,比如“刘备|张飞|关羽”。使用两种方式实现
  55. 将一个字符串数组的元素的顺序进行反转。["a", "b", "c", "d"] -> [ "d","c","b","a"]。使用两种种方式实现。提示:第i个和第length-i-1个进行交换
  56. 数组[1500, 1200, 2000, 2100, 1800],把超过2000的删除
  57. ["c", "a", "z", "a", "x", "a"]找到数组中每一个a出现的位置
  58. **编写一个方法去掉一个数组的重复元素 **
  59. 判断输入的一个11位数的电话号码...要求是前3位是"010"然后跟着一个"-"...后面剩余个数都是数字

1.输出10到1的偶数

for(var a = 10;a >= 1;a--){
    if(a % 2 == 0){
    console.log(a)
    }
}

2.输出1-100间能被7整除的数

for (var a = 1;a <= 100; a++) {
    if(a % 7 == 0){
        console.log(a)
    }
}

3.输出1-21之间不能被7整除数的累加和

var s = 0
for (var a = 1; a <= 21; a++) {
    if (7 % a != 0) {
        s = a+s
        console.log(s)
    }
}

4.输出1-10与5相乘的结果

var a=1
while(a<=10){
    var b=5
     b*=a
     console.log(a+"与5相乘的结果为:"+b)
     a++
}

5.计算1-100的和并输出结果

var c=1
var d=0
while(c<=100){
    d+=c
    c++
}
console.log("1-100的和并输出结果为:"+d)

6.把100-200之间不能被3整除的数输出

var e=100
while(e<=200){
    if(e%3 != 0){
       console.log("100-200之间不能被3整除的数有:"+e)
    }
   e++
} 

7.将1998-2008之间的闰年年份输出

while(f<=2008){
    if(f%4==0 && f%100!=0 || f%400==0){
    console.log("1998-2008之间的闰年年份有:"+f)
    }
    f++
}

8.求乘积等于100的所有乘数和被乘数(以一对的方式输出)

for(var t=-100;t<=50;t++){
    for(var y=-100;y<=100;y++){
        if(t*y==100){
            console.log("乘积等于100的所有乘数和被乘数有:"+t,y);
        };
    };
};

9.求斐波那契数列40个数,这个数列的特点为:第1,2两个数为1和1,从第三个数开始,该数是前面两个数的和,即1,1,2,3,5,8,13,21......

var o=1;
var l=1;
var c;
var z=1;
while(z<=40){
    c=o+l;
    o=l;
    l=c;
    console.log("六-斐波那契数列"+z+"个数为:"+o);
    z++;
};

10.求数组中所有元素的和

var a=[1,2,3,4,5];
var sum=0;
for(var i=0;i<=a.length-1;i++){
    sum+=a[i];
};
console.log(sum);

11.求数组中所有元素的平均值

var b=[3,4,5,6,7];
var sum=0;
for(var i=0;i<=b.length-1;i++){
    sum+=b[i];
};
var z=sum/b.length;
console.log(z);

12.求数组中所有元素的最大值

var c=[5,8,9,6,3,];
var r=c[0]; //5
for(var i=1;i<=c.length-1;i++){
    if(r<c[i]){
        r=c[i];
    };
};
console.log(r);

13.倒序遍历输出数组

var f=[1,2,3,4,5];
var d=[];
var o=0;
var i=f.length-1;
while(i>=0){
    d[o]=f[i];
    o++;
    i--;
};
console.log(d);

14.把数组中的每一个元素用&拼接到一起并输出

var arr1=[10,20,30,40,50];
var sum="";
for(var i=0;i<=arr1.length-2;i++){
    sum+=arr1[i]+"&";
};
console.log(sum+arr1[arr1.length-1]);

15.去掉数组中重复的0,并把其他的数据放在一个新的数组中

var arr2=[11,0,3,21,32,0,2,0];
var nuw=[];
for(var i=0;i<=arr2.length-1;i++){
    if(arr2[i]!=0){
        nuw[nuw.length]=arr2[i];
    };
};
console.log(nuw);

16.反转数组

var eiu=[10,20,30,40,50];
var temp;
var o=0;
for(var i=eiu.length-1;i>=2;i--){
    temp=eiu[o];
    eiu[o]=eiu[i];
    eiu[i]=temp;
    o++;
};
console.log(eiu);

17.冒泡排序:将一个数组按照从小到大的顺序进行排列

var temp;
for(var i=0;i<=arr.length-1;i++){    //外层循环一次
      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;
        };
    };
};

18.冒泡排序:将一个数组按照从大到小的顺序进行排列

var arr=[8,6,4,7,5];
var temp;
for(var i=0;i<=arr.length-1;i++){    //外层循环一次
    for(var j=0;j<=arr.length-i-1;j++){        //内层循环
        if(arr[j]<arr[j+1]){
            temp=arr[j];
            arr[j]=arr[j+1];
            arr[j+1]=temp;
        };
    };
};
console.log(arr);

19.请输入1-100之间能够被5和6整除或者能被7整除的数

for(var a=0;a<=100;a++){
    if(a%5==0 && a%6==0 ||a%7==0){
        console.log(a);
    };
};

20.打印输出100以内的不带7和7的倍数

for(var i=0;i<=9;i++){
    for(var o=1;o<=9;o++){
        if(i!=7 && o!=7 && (10*i+o)%7==0){
            var sum=10*i+o;
            console.log(sum);
        };
    };
};

21.打印一个分数(几分之几例如 2/1 3/2 .....)

var temp=Number(prompt("请输入你要输入的数字"));
var temp1; 
var a=1;
var b=1;
for(var i=1;i<=temp;i++){
    temp1=a+b;
    a=b;
    b=temp1;
    var sum=a+"/"+temp1;
    console.log(sum);
};

22.打印输出100以内的 3的倍数和7的倍数

for(var i=1;i<=100;i++){
    if(i%3==0 || i%7==0){
        console.log(i);
    };
};

23.用do while 求 3! ,结果为 3x2x1+2x1+1x1=9

var i=3; 
var sum=0;
do{
    var o=i; //2
    var som=1;
    while(o>=1){
        som*=o;
        o--;
    }
    sum+=som;
    i--;
}while(i>=1);
console.log(sum);

24.100以内偶数与奇数相加

var sum=0;
var sum1=0;
function arr(a){    
    for(var i=1;i<=a;i++){
        if(i%2==0){
            sum+=i;
        }else{
            sum1+=i;
        };
    };
    console.log("偶数为"+sum);
    console.log("奇数为"+sum1);
};
arr(100);

25.一个直角三角形

function arr1(b){
    for(var i=0;i<=b;i++){
        document.write("<br />");
        for(var o=1;o<=i;o++){
            document.write(o+"*"+i+"="+o*i+"&nbsp;"+"&nbsp;"+"&nbsp;");
        };
    };
};
arr1(9);

26.100以内不带7和7的倍数

function arr3(c){
    for(var n=0;n<=c;n++){
        for(var k=1;k<=c;k++){
            if(n!=7 && k!=7 && (n*10+k)%7==0){
                console.log(n*10+k);
            };
        };
    };
};
arr3(9);

27.求1-n的累加和

function arr1(i,n){
    var sum = 0;
    for(;i<=n;i++){
        sum+=i;
    }
    console.log(sum);
}
arr1(1,100);

28.圆的面积

function arr3(r){
    S = 3.14*r*r;
    console.log(S);
}
arr3(10);

29.求两个数中的最大值

function arr4(a,b){
    if(a>b){
        console.log(a);
    }else{
        console.log(b);
    }
}
arr4(1,2);

30.求三个值中的最大值

function arr5(a,b,c){
    if(a>b && a>c){
        console.log(a);
    }else if(b>a && b>c){
        console.log(b);
    }else{
        console.log(c);
    };
};
arr5(5,2,3);

31.判断一个随机输入数是不是素数

var num=prompt("请输入你想判断的数值");
var temp=true;
for(var i=2;i<num;i++){
    if(num % i==0){
        //判断为不是质数
        //document.write(num+"不是质数");
        temp=false;
    };
};
if(temp){
    document.write(num+"是质数");
}else{
    document.write(num+"不是质数");
};

32.函数写阶乘

function arr2(n){
    var sum=0;
    for(var o=1;o<=n;o++){
        var som=1;
        for(var i=1;i<=o;i++){
            som*=i;
        };
        sum+=som;
    };
    console.log(sum);
};
arr2(3);

33.求任意个数的最大值

function arr(a,b,c,d){
    var temp = arguments[0];
    for(var i=0;i<=arguments.length-1;i++){
        if(temp<arguments[i]){
            temp = arguments[i];
        };
    };
    return temp;
};
console.log(arr(1,2,3,4,5)); //5

34.求任意个数的和

function arr1(a,b,c,d){
    var sum = 0;
    for(var i=0;i<=arguments.length-1;i++){
        sum+=arguments[i];
    };
    return sum;
};
console.log(arr1(1,2,3,4,5)); //15

35.求斐波那契数列Fibonacci中的第n个数是多少? 1 1 2 3 5 8 13 21...

function arr2(a,b,c,d){
    for(var i=1;i<=d;i++){
        c = a+b;
        a = b;
        b = c;
        console.log(a);
    }
}
arr2(1,1,0,1000);

36.输入一个年份,判断是否是闰年[闰年:能被4整数并且不能被100整数,或者能被400整数]

function arr5(){
    arr6 = prompt("请输入你要判断的年份");
    if(arr6%4==0 && arr6%100!=0 || arr6%400==0){
        console.log("该年份是润年哦~");
    }else{
        console.log("该年份是平年哦~");
    };
};
arr5();

37.输入某年某月某日,判断这一天是这一年的第几天?(方法一)

function arr0(sum,svm,som){
    arr7 = prompt("请输入年份");
    arr8 = prompt("请输入月份");
    sem = Number(prompt("请输入日子"));
    for(var i=1;i<arr8;i++){
        if(i!=2){
            if(i==4||i==6||i==9||i==11){
                sum += 30;
            }else{
                svm += 31;
            }
        }else{
            if(arr7%4==0 && arr7%100!=0 || arr7%400==0){
                //console.log("该年份是润年哦~");
                som = 29;
            }else{
                //console.log("该年份是平年哦~");
                som = 28;
            };
        };
    };
    var tianshu = sum+svm+som+sem;
    console.log("这天是该年的第 "+tianshu+" 天哦~");
}
arr0(0,0,0);

38.输入某年某月某日,判断这一天是这一年的第几天?(方法二)

var a=prompt("请输入年份");
var b=prompt("请输入月份");
var c=Number(prompt("请输入第几日"));
var e=0;
if(a%400==0||a%100!=0&&a%4==0){
    var arr=[31,29,31,30,31,30,31,31,30,31,30,31];//月份
             // 0  1  2  3  4
    for(var i=0;i<=b-2;i++){
        e+=arr[i];
        console.log(e+c);
    };
}else{
    var arr=[31,28,31,30,31,30,31,31,30,31,30,31];
    for(var i=0;i<=b-2;i++){
        e+=arr[i];
        console.log(e+c);
    };
};

39.自己实现输入一个数获取长度

function fn(){
    var a = Number(prompt("请输入数值"));
    //22
    var b = 0.1;
    for(var i=1;i<=a;i++){
        b*=10; //1 //10
        c = parseInt(a/b);
        if(c>0&&c<10){
            document.write("这个数是"+i+"位数");
            break;
        };
    };
};
fn();

40.设计一个函数,输入行数和列数,生成相应表格

function fn(){
var a = prompt("请输入行");
var b = prompt("请输入列");
document.write("<table>");
for(var i=1;i<=a;i++){
    document.write("<tr>");
    for(var o=1;o<=b;o++){
        document.write("<td>");
        document.write("</td>");
    };
    document.write("</tr>");
};
document.write("</table>");
};
fn();

41.判断水仙花 例:153=111+555+333

for(var i=0;i<=9;i++){
    for(var o=0;o<=9;o++){
        for(var u=0;u<=9;u++){
            if(i*i*i+o*o*o+u*u*u==i*100+o*10+u){
                document.write(i*100+o*10+u);
                document.write("<br>");
            };
        };
    };
};

42.使用1块,2块,5块钱,凑出20块钱的所有可能;

for(var i=1;i<=20;i++){
    for(var o=1;o<=20;o++){
        for(var u=1;u<=20;u++){
            if(i*1+o*2+u*5==20){
                document.write("搭配方案有  :  "+i+"个1元....."+o+"个2元....."+u+"个5元");
                document.write("<br />");
            };
        };
    };
};

43.请使用代码在页面上显示下面表格效果

document.write("<table cellspacing=0> ")
for(var i=1;i<=4;i++){
    document.write("<tr>");
    for(var o=1;o<=4;o++){
        document.write("<td>");
        document.write("</td>");
    };
    document.write("</tr>");
};
document.write("</table>");

44.请使用代码实现,去掉一个最高分,去掉一个最低分之后求平均分是多少?

var a = Number(prompt("请输入人数"));
var fn = [];
var sum = 0;
for(var i=1;i<=a;i++){
    var b = Number(prompt("请依次输入分数"));
    fn[fn.length] = b;
};
for(var o=1;o<=fn.length-2;o++){
    sum+=fn[o];
};
var pj = sum/(fn.length-2);
document.write(pj);

45.设计一个函数,让用户输入一个数字,然后反转输出该数字 例:2891 -》 1982

function fn(){
    var a = prompt("请输入数值");
    var b = 0.1;
    for(var i=1;i<a;i++){
        b*=10;
        var c = parseInt(a/b);
        if(c>0&&c<10){
            break;
        };
    };
    var sum = "";
    for(var o=1;o<=i;o++){
        var s = a%10;
        sum+=s;
        a=(a-s)/10;
    };
    console.log(sum);
};
fn();

46.写一个能获取10-20之间的随机数

console.log("10-20之间的随机数:"+Math.floor((Math.random()*11+10)));
console.log("10-20之间的随机数:"+Math.ceil((Math.random()*11+9)));

47.随机生成rgb的颜色

console.log("R为:"+Math.floor(Math.random()*256));
console.log("G为:"+Math.floor(Math.random()*256));
console.log("B为:"+Math.floor(Math.random()*256));

48.将当前的时间格式化输出,封装成一个函数完成此操作 格式:2021年12月8日,17时21分15秒

function fn(){
    var dt = new Date();
    var a = dt.getFullYear();
    var b = dt.getMonth();
    var c = dt.getDate();
    var d = dt.getHours();
    var e = dt.getMinutes();
    var f = dt.getSeconds();
    return a+"年"+b+"月"+c+"日"+","+d+"时"+e+"分"+f+"秒";
};
console.log(fn());

49.随便输入两个时间戳/毫秒值判断相差 天 时 分 秒

function fn1(a,b){
    var t,f,m,s; 
    var l = a - b;
    l/=1000;
    t = parseInt(l/60/60/24);
    s = parseInt(l/60/60-24*t); 
    f = parseInt(l/60-24*t*60-s*60); //
    m = parseInt(l-24*t*60*60-s*60*60-f*60);
    return {
        "天" : t,
        "时" : s,
        "分" : f,
        "秒" : m
    };
};
console.log(fn1(2000000000,19400));

50.截取字符串"我爱中华人民共和国",中的"中华"

// 1-方法
var sty1 = "abcoefoxyozzopp";
for(var e=0;e<sty1.length;e++){
    if(sty1[e]=="o"){
        console.log("o位置分别为"+e);
    };
};
// 2-方法
var sty = "abcoefoxyozzopp";
temp = sty.indexOf("o");
console.log(sty.replace("temp"," "));
for(var o=1;o<sty.length;o++){
    temp = sty.indexOf("o");
    if(sty.indexOf("o")!=-1){
        console.log("o出现的位置为"+temp);
        sty = sty.replace(sty[temp]," ");
    };                
};

51."abcoefoxyozzopp"查找字符串中所有o出现的位置

// 1-方法
var sty1 = "abcoefoxyozzopp";
for(var e=0;e<sty1.length;e++){
    if(sty1[e]=="o"){
        console.log("o位置分别为"+e);
    };
};
// 2-方法
var sty = "abcoefoxyozzopp";
temp = sty.indexOf("o");
console.log(sty.replace("temp"," "));
for(var o=1;o<sty.length;o++){
    temp = sty.indexOf("o");
    if(sty.indexOf("o")!=-1){
        console.log("o出现的位置为"+temp);
        sty = sty.replace(sty[temp]," ");
    };                
};

52.把字符串中所有的o替换成!

var sty2 = "abcoefoxyozzopp";
for(var e=0;e<sty1.length;e++){
    if(sty2[e]=="o"){
        sty2 = sty2.replace(sty2[e],"!");
    };
};
console.log(sty2);

53.判断一个字符串中出现次数最多的字符,统计这个次数

var s = 'abcoefoxyozzopp';
var obj = {};
for(var i=0;i<s.length;i++){
    var temp = s[i];
    if(obj[temp]){
        obj[temp]++;
    }else{
        obj[temp] = 1;
    };
};
console.log(obj)
var max = 0;
var temp;
for(var u in obj){
    if(obj[u] > max){
        max = obj[u];
        temp = u;
    };
};
console.log("出现次数最多是"+temp+"出现次数为"+max);

54.将一个字符串数组输出为|分割的形式,比如“刘备|张飞|关羽”。使用两种方式实现

var arr = ["刘备","张飞","关羽" ];
console.log(arr.join("|"));

var sum="";
for(var i=0;i<arr.length-1;i++){
    sum+=arr[i]+"|"; //刘备|张飞
};
console.log(sum+arr[arr.length-1]);

55.将字符串数组的元素的顺序进行反转。["a", "b", "c", "d"] -> [ "d","c","b","a"]

使用两种种方式实现。提示:第i个和第length-i-1个进行交换

var arr1 = [1,2,3,4,5,6,7,8];
console.log(arr1.reverse());

var arr2 = [1,2,3,4,5,6,7,8];
var temp;
//var a = 1
for(var i=0;i<arr2.length-4;i++){
    temp =  arr2[i]
    arr2[i] = arr2[arr2.length-i-1]
    arr2[arr2.length-i-1] = temp
    //a++
}
console.log(arr2)

56.数组[1500, 1200, 2000, 2100, 1800],把超过2000的删除

// 方法-1
var arr3 = [1500, 1200, 2000, 2100, 1800];
var resalt = arr3.filter(function(a,b,c){
    return a <= 2000;
})
console.log(resalt)
// 方法-2
var arr3 = [1500, 1200, 2000, 2100, 1800];
for(var i=0;i<arr3.length;i++){
    if(arr3[i] > 2000){
        arr3.splice(i,1)
    }
}
console.log(arr3)
// 方法-3
var arr = [1500, 1200, 2000, 2100, 1800];
    // var arr1=[];
    var resule = arr.forEach(function(ele,index){
        if(ele>2000){
            arr.splice(index,1)
        }
    });
console.log(arr);

57.["c", "a", "z", "a", "x", "a"]找到数组中每一个a出现的位置

// 方法-1
var arr4 = ["c", "a", "z", "a", "x", "a"];
for(var i=0;i<arr4.length;i++){
    if(arr4[i] == "a"){
        console.log("a出现的位置有"+i)
    }
}
// 方法-2
var arr4 = ["c", "a", "z", "a", "x", "a"];
for(var i=0;i<arr4.length;i++){
    if(arr4.indexOf("a") != -1){
        console.log("a出现的位置"+arr4.indexOf("a"))
        arr4.splice(arr4.indexOf("a"),1," ")            
    };
};

58.编写一个方法去掉一个数组的重复元素

// 方法一
var arr5 = [1,5,6,5,9,7,7,7,7,7,7];
for(var u=0;u<arr5.length;u++){
    for(var v=0;v<arr5.length;v++){
        if(u!=v){
            if(arr5[u] == arr5[v]){
                arr5.splice(v,1," ");
            };
        };    
    };
};
console.log(arr5)
arr5 = arr5.filter(function(ele,index,array){
    return ele != " ";
});
console.log(arr5);

// 方法二
var arr5 = ["a","b","a","c","g","e","e","e","e","e","e"];
var obj = {};
for(var v=0;v<arr5.length;v++){
    var temp = arr5[v];
    if(obj[temp]){
    }else{
        obj[temp] = 1;
    };
};
arr5 = []
for(var ey in obj){
    arr5[arr5.length] = ey;
};
console.log(arr5);

// 方法三
var array = [1,3,1,6,6,7,9,5,3,6,6];
var arr = [];
for(var o = 0;o<array.length;o++){
if(arr.indexOf(array[o])==-1){
//    arr[arr.length] = array[o];
    arr.push(array[o]);
};
};
console.log(arr);

59.判断输入的一个11位数的电话号码...要求是前3位是"010"

然后跟着一个"-"...后面剩余个数都是数字

var pro = prompt("请输入电话号码");
if(pro.substr(0,4) == "010-"  && pro.substr(4).length == 8 && !isNaN(pro.substr(4))){
    console.log("这是一个电话号码");
}else{
    console.log("这不是一个电话号码");
};

以上就是前端经常会遇到的55道程序题,当你将其全部搞懂后,于你而言绝对是一个实质性的帮助,对于后期去写那些逻辑思维题时也能够头脑清晰的去解决。

希望能够有所帮助!


本文转载自: https://blog.csdn.net/weixin_60678263/article/details/127835666
版权归原作者 不读诗意 所有, 如有侵权,请联系我们删除。

“59道JS常见逻辑算法程序题(附带题目和答案)”的评论:

还没有评论