程序员必做50题-JavaScript篇(31-45)

程序员必做50题(31-45)

程序员必做50题(1-15)—————— 程序员必做50题(16-30)

31.有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。

function rank(x){
    var a = [3,6,9,15,20,88];
    a[a.length] = x;
    for(var i=0;i<a.length;i++){
        for(var j=0;j<a.length;j++){
            if(a[i]<a[j]){
                var c = a[i];
                a[i] = a[j];
                a[j] = c;
            }
        }
    }
    return a;
}
console.log(rank(10));

32.将一个数组逆序输出。

var a = [10,11,12,13,14,15];
var b = [];
for(var i=0;a.length>0;a.length--){
    b[i] = a[a.length-1]
    i++;
}
console.log(b);

33.打印出杨辉三角形(要求打印出10行如下图)

>            1
>           1 1
>          1 2 1
>         1 3 3 1
>        1 4 6 4 1   
>      1 5 10 10 5 1 
>     1 6 15 20 15 6 1
>    ............
var a = []
for(var i=0;i<=10;i++){
    a[i] = new Array(i+1);
}
for(var i=0;i<=10;i++){
    for(var j=0;j<=i;j++){    
        if(j===0 || j===i){
            a[i][j] = 1
        }else{
           a[i][j] = a[i-1][j-1]+a[i-1][j] 
        }
    }
}
for(var i=0;i<=10;i++){
    var b = '';
    for(var j=0;j<=10-i-1;j++){
        b += ' '
    }
    console.log(b+a[i])
}

34.输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。.

var a =  [8,12,87,56,32,46,5,48];
var max = a[0],x = 0;
var min = a[0],n = 0;
for(var i=0;i<a.length;i++){
    if(max<a[i]){
        max = a[i];
        x = i;
    }
    if(min>a[i]){
        min = a[i];
        n = i;
    }
}
var b = a[0];
    a[0] = max;
    a[x] = b;
var c = a[a.length-1];
    a[a.length-1] = min;
    a[n] = c;
console.log(a);

35.有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面的m个数

var n = [12,45,78,13,46,79,17,28,39,47];
var a = n.splice(-5);
console.log(a.concat(n));

36.题目:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。

function num(x){
    var a = '';
    for(var i=1,k=0;k<=x;){
        k++;
        if(i===3){
            i = 0;
            a += '第 '+k+' 位';
        }
        i++;
    }
    return a;
}
console.log(num(10));

37.写一个函数,求一个字符串的长度,在main函数中输入字符串,并输出其长度。

function main(x){
    return '输入字符串的长度为:'+x.length;
}
console.log(main('qwertyuiop'));

38.编写一个函数,输入n位偶数时,调用函数1/2+1/4+…+1/n,当输入n为奇数时,调用函数1/1+1/3+…+1/n

function a(x){
    var sum = 0;
    for(var i=x;i>1;i-=2){
        sum += 1/i;
    }
    return sum;
}
console.log(a(7));

39.海滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃子平均分为五份,多了一个,这只猴子把多的一个扔入海中,拿走了一份。第二只猴子把剩下的桃子又平均分为五份,又多了一个,它同样把多的一个扔入海中,拿走了一份,第三、第四、第五只猴子都是这样做的,问海滩上原来最少有多少个桃子?

for(var i=1;;i++){
    var hou=0;
    for(var j=1,res=i,get=0;j<=5;j++){
    get=(res-1)*0.2;
    res=(res-1)*0.8;
    if(get%1!=0){
    break;
    }
    tag+=1;
    }
    if(hou==5){
    console.log('海滩上原来最少有'+i+'个桃子');
    break;
    }
    }

40. 809*??=800*??+9*??+1其中??代表的两位数.8*??的结果为两位数,9*?2的结果为3位数。求??代表的两位数,及809*??后的结果。

for(var i=10;i<=99;i++){
    if(8*i>=10&&8*i<=99&&9*i>=100&&9*i<=999){
    console.log('??代表的两位数是'+i);
    console.log('809*??的结果'+809*i);
    }
    }

41.八进制转换为十进制

var num1=425;
var num2=0;
num1=num1.toString();
for(var i=num1.length-1,root=1;i>=0;i--){
num2+=Number(num1[i])*root;
root*=8;
}
console.log(num2);

42.求0——7所能组成的奇数个数。

var i =0;
for(var a=0;a<=7;a++){
    for(var b=0;b<=7;b++){
        for(var c=0;c<=7;c++){
            for(var d=0;d<=7;d++){
                for(var e=0;e<=7;e++){
                    for(var f=0;f<=7;f++){
                       for(var g=0;g<=7;g++){
                            var aa = a*1000000;
                            var bb = b*100000;
                            var cc = c*10000;
                            var dd = d*1000;
                            var ee = e*100;
                            var ff = f*10;
                            var sum = aa+bb+cc+dd+ee+ff+g;
                            if(sum%2!==0){
                                i++;
                            }
                        }
                    }
                }
            }
        }
    }
}
console.log(i);

43.一个偶数总能表示为两个素数之和。

var a = 150;
if(a%2!==0){
    console.log('不是偶数');
}else{
    var aa = a/2;
    var bb = aa;
    aa-1===0 ? aa = 1 : aa--;
    bb+1===2 ? bb = 1 : bb++;
    console.log(a+'='+aa+'+'+bb);
}

44.判断一个素数能被几个9整除

var a = 45;
if(a%2===0){
    console.log('不是素数');
}else{
    if(a%9!==0){
        console.log(a+' 小于9,不能被9整除');
    }else{
        console.log(a+' 可以被 '+a/9+' 个9整除')
    }
}

45.题目:某个公司采用公用电话传递数据,数据是四位的整数,在传递过程中是加密的,加密规则如下:每位数字都加.上5,然后用和除以10的余数代替该数字,再将第-位和第四位交换,第二位和第三位交换。

 var a = '6572';
var aa = [];
var c;
var d = '';
for(var i=0;i<4;i++){
     aa[i] = (Number(a[i])+5)%10;
}
c = aa[0];
aa[0] = aa[3];
aa[3] = c;
c = aa[1];
aa[1] = aa[2];
aa[2] = c;
for(var i=0;i<4;i++){
    d += Number(aa[i]) 
}
console.log(d)

作者的自述

新手上路,望各位大佬指教-----------
如有相关资料、视屏给作者看看可否?
45道已全部更新-------------------------
[email protected]
欢迎提各种意见--------------------------

--------------------------------------------------------------------------------------------- 学WEB前端的第17天

程序员必做50题(1-15)—————— 程序员必做50题(16-30)

你可能感兴趣的:(JS,javascript)