一些编程题,记录

Posted punisher999

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一些编程题,记录相关的知识,希望对你有一定的参考价值。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>title</title>
</head>
<body>
<img src="" onclick="prev()" alt="">
<script>
    /*
    * 一、    实现 fizzBuzz 函数,参数 num 与返回值的关系如下:
    *        1、如果 num 能同时被 3 和 5 整除,返回字符串 fizzbuzz
    *        2、如果 num 能被 3 整除,返回字符串 fizz
    *        3、如果 num 能被 5 整除,返回字符串 buzz
    *        4、如果参数为空或者不是 Number 类型,返回 false
    *        5、其余情况,返回参数 num
    *
    *
  //

    function fizzbuzz(num) {
        if (num===null  || typeof num!==‘number‘) {
            return false
        } else if (num % 3 === 0 && num % 5 === 0) {
            return ‘fizzbuzz‘
        } else if (num % 3 === 0) {
            return ‘fizz‘
        } else if (num % 5 === 0) {
            return ‘buzz‘
        } else {
            return num
        }
    }

    console.log(fizzbuzz(‘ ‘))
    */
    /*
    * 二、给定一个整数数组和一个目标值,找出数组中和为目标值的两个数。
    * 你可以假设每个输入只对应一种答案,且同样的元素不能被重复利用。
    * 示例:
    * 给定
    *  nums = [2, 7, 11, 15],
    *  target = 9因为 nums[0] + nums[1] = 2 + 7 = 9
    * 所以返回 [0, 1]
    *
    *
    var arr = [2, 7,45,454, 11, 15];
    var  target = 17;
    for(var i=0;i<arr.length;i++){
        for (var j=1;j<arr.length;j++){
            if (target ===arr[i]+arr[j] &&arr[i]!==arr[j]){
              console.log([i,j])
            }
        }
    }*/
    /*
    * 三、大马驮2石粮食,      x=2
    * 中马驮1石粮食,    y=1
    * 两头小马驮一石粮食,  z=1/2     2x +
    * 要用100匹马,
    * 驮100石粮食,
    * 该如何调配?
    *
    var a=0;
    for (var x = 1; x < 100; x++) {
        for (var y = 1; y < 100; y++) {
            for (var z =1; z < 100; z++) {
                if (2*x+y+(1/2) * z===100 && x + y + z === 100) {
                    a++;
                    console.log(x, y, z ,a+‘种‘);
                }
            }
        }
    }*/
    /*
    * 四、小明单位发了100元的购物卡,
    * 小明到超市买三类洗化用品,
    * 洗发水(15元),
    * 香皂(2元),
    * 牙刷(5元)。
    * 要把100元整好花掉,
    * 可如有哪些购买结合?
    *
    *
    *
    var a=0;
    for (var x=1;x<100;x++){
        for (var y=1;y<100;y++){
            for (var z=1;z<100;z++){
                if (15*x+2*y+5*z===100){
                    a++
                    console.log(x,y,z,a+‘种‘)
                }
            }
        }
    }* */
    /*
    * 五、某侦察队接到一项紧急任务,
    * 要求在A、B、C、D、E、F六个队员中尽可能多地挑若干人
    * ,但有以下限制条件:
    * A和B两人中至少去一人;  0   1
    * A和D不能一起去;
    * A、E和F三人中要派两人去;
    * B和C都去或都不去;
    * C和D两人中去一个;
    * 若D不去,则E也不去。
    * 问应当让哪几    个人去?
    *    *
    for (var a=0;a<=1;a++){
       for (var b=0;b<=1;b++){
           for (var c=0;c<=1;c++){
               for (var d=0;d<=1;d++){
                   for (var e=0;e<=1;e++){
                       for (var f=0;f<=1;f++){
                           if (a+b>=1&&a+d!==2&&a+e+f===2&&b===c&&c+d===1&&((d===0&&e===0)||(d===1&&d+e>=1))){
                               console.log(a,b,c,d,e,f)
                           }

                       }
                   }
               }
           }
       }
    }*/
    /*六、五个小朋友排成一队。      5
    问第一个多大了,第一个说比第二个大两岁,      a b c d e       a>b   a-b=2         a=17
    问第二个,第二个说比  第三个大三岁,以此类推。             b>c      b-c=3    c=12   b=15
    问第五个小朋友几岁了,                                              c-d=4  d-e=5    e=3   d=8
    第五个小朋友说3岁了。                                                e=3
    问第一个小朋友几岁?                                            console.log(a)


    var a=3;
    for (var i=5;i>1;i--){
        a+=i
    }
    console.log(a)   */
    /*七、凑钱1,2,5凑20元钱有多少种可能

    for (var a=1;a<20;a++){
        for (var b=1;b<20;b++){
            for (var c=1;c<20;c++){
                if (a+2*b+5*c===20){
                    console.log(a,b,c)
                }
            }
        }
    }*/
    /*八、公鸡5元每只,
    母鸡3元每只,
    小鸡3只1元,
    100元买一百只鸡多少种办法
    var f=0;
    for (var a=1;a<100;a++){
        for (var b=1;b<100;b++){
            for (var c=1;c<100;c++){
                if (5*a+3*b+(1/3)*c===100 &&a+b+c===100){
                    f++;
                    console.log(a,b,c,f+‘种‘)
                }
            }
        }
    }*/
    /*
    * 九、有一个卡车司机肇事后想逃跑,
    但是被三个人看见其车牌号码,但是没有看全。
    科比说:车牌的前两位是一样的;
    乔丹说:车牌的后两位是一样的,但是与前两位不一样;
    詹姆斯说:车牌是一个数字的平方,
    请编写一个程序计算车辆号牌是多少(车辆号牌是4位数)。
    *
    **/
    /* for (var a = 0; a < 10; a++) {
         for (var b =0; b < 10; b++) {
             for (var c =0; c < 10; c++) {
                 for (var d =0; d < 10; d++) {
                     if (a === b && c === d && c !== a ){
                         for (var i=1;i<100;i++){
                             if (a*1000+b*100+c*10+d===i*i){
                                 console.log(a*1000+b*100+c*10+d)
                             }
                         }
                     }
                 }
             }
         }
     }
     for(i=1000;i<10000;i++){
         var gg=i%10,ss=Math.floor(i/10%10),bb=Math.floor(i/100%10),qq=Math.floor(i/1000);
         for (var j=1;j<i;j++){
             if (j===i*i&&gg === ss && bb ===qq&& gg !== bb){
                 console.log(i)
             }
         }
     }*/
    /*
    * 十、编写一个十六进制转十进制的方法
    * 十进制 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
    * 十六进 0 1 2 3 4 5 6 7 8 9  a  b  c  d  e  f
    *
    function fn(par) {
        var arr = par.split(‘‘);//[2,a,f]
        var sum = 0;
        for (var i = 0; i < arr.length; i++) {
            switch (arr[i]) {
                case ‘a‘:
                    arr[i] = 10;
                    break;
                case ‘b‘:
                    arr[i] = 11;
                    break;
                case ‘c‘:
                    arr[i] = 12;
                    break;
                case ‘d‘:
                    arr[i] = 13;
                    break;
                case ‘e‘:
                    arr[i] = 14;
                    break;
                case ‘f‘:
                    arr[i] = 15;
                    break;
            }
           //
            //arr = String(par);//将m转换成字符串并生成数组
            //var x = arr.length;

        }
        //for (var j = 0; j <arr.length; j++) {
        //    sum += arr[j]* Math.pow(16,arr.length-1-j );
        //}
        for (var j = 0; j <arr.length; j++) {
            sum += arr[j]* fun(arr.length-1-j );
        }

        return console.log(sum)
    }
     console.log(fn(‘2af‘));
    function fun(n) {
        if (n<0){
            return 1/16;
        }
        return fun(n-1)*16
    }
    /*function num(a,b){

         document.write(Number(sum));
     }
     console.log(num(1455,12));
     function hexToDec(hex) {
         var result = 0, digitValue;
       //  hex = hex.toLowerCase();
         for (var i = 0; i < hex.length; i++) {
             digitValue = ‘0123456789abcdef‘.indexOf(hex[i]);
             result = result * 16 + digitValue;
         }
         return result;
     }

     console.log(hexToDec(‘84fa‘));   //5 * 16 *16  +10*16 +15
    //    8*16*16*16+4*16*16+15*16+10
    //120    1*10*10 +  2*10 + 0
    */
    /*
    *十一、大家都知道,男大当婚,女大当嫁。
    * 那么女方家长要嫁女儿,当然要提出一定的条件:
    * 高:180cm以上; 富:1000万以上;       x=180    y=1000
    * 帅:500以上;如果这三个条件同时满足,  z=500
    * 则:‘我一定要嫁给他’如果三个条件只符合两个,
    * 则:‘虽不是最好,但也还可以’如果三个条件只满足一个,
    * 则:‘嫁吧,比上不足,比下有余。’
    * 如果三个条件都不满足,则:‘宁死不嫁!’
    * */
    function fun(h,f,s) {
        if (h>180&&f>1000&&s>500){
            return 我一定要嫁给他
        }else if (h>180||f>1000|| s>500){
            return 嫁吧,比上不足,比下有余。
        }else if ((h>180&&f>1000)|| (h>180&&s>500)|| (f>1000&&s>500)){
            return 虽不是最好,但也还可以
        }else{
            return 宁死不嫁
        }
    }
    console.log(fun(45645,5464,45646));

    /*
    * 十二、东方航空从北京飞往马尔代夫的机票原价为4000元,
    * 4到10月份为旺季 其他月份为淡季,
    * 旺季时候头等舱打9折,经济舱打7.5折;
    * 淡季头等舱打6折, 经济舱打3折。
    * 从页面输入出行的月份
    * 和选择的舱型
    * 计算出机票价格
    *
    var num = prompt(‘输入一个月份‘);
    var jc = prompt(‘输入机舱类型‘);
    var b = 4000;*/
    /* if (num >= 4 && num <= 10) {
         console.log ((jc === ‘头等舱‘)? (‘头等舱‘ + b * 0.9 + ‘元‘):
             (jc === ‘经济舱‘)?(‘经济舱‘ + b * 0.75 + ‘元‘):‘‘)
     /!* if (jc === ‘头等舱‘) {
          console.log(‘头等舱‘ + b * 0.9 + ‘元‘);
      } else if (jc === ‘经济舱‘) {
          console.log(‘经济舱‘ + b * 0.75 + ‘元‘)
      }*!/
     } else {
         console.log(
             (jc === ‘头等舱‘)?(‘头等舱‘ + b * 0.6 + ‘元‘):
                 (jc === ‘经济舱‘)? (‘经济舱‘ + b * 0.3 + ‘元‘):‘‘)
         /!*if (jc === ‘头等舱‘) {
             console.log(‘头等舱‘ + b * 0.6 + ‘元‘);
         } else if (jc === ‘经济舱‘) {
             console.log(‘经济舱‘ + b * 0.3 + ‘元‘)
         }*!/
     }
     console.log (
         (num >= 4 && num <= 10)?
         ((jc === ‘头等舱‘)? (‘头等舱‘ + b * 0.9 + ‘元‘): (‘经b济舱‘ + b * 0.75 + ‘元‘)):
          ((jc === ‘头等舱‘)?(‘头等舱‘ + b * 0.6 + ‘元‘): (‘经济舱‘ + b * 0.3 + ‘元‘))
     );
     console.log (
         (num >= 4 && num <= 10)?
         (b*(jc === ‘头等舱‘)? 0.9:0.75):
         (b*(jc === ‘头等舱‘)? 0.6:0.3)
     );*/
    /*十七、求和:实现1!+2!+3!+4!+5!
    *
    *
    function sum(n) {
        if (n<=1){
            return 1
        }
        return  sum(n-1)*n
    }
    console.log(sum(5));
    var z=0;
    for (var i=1;i<6;i++){
        z+=sum(i)
    }console.log(z)*/
    /*十六、求和,实现 1+(1+2)+(1+2+3)+(1+2+3+4)+(1+2+3+4+5)=35
    function fn(n) {
        if (n<=1){
            return 1
        }
        return fn(n-1)+n
    }
    var sum=0;
    for (var i=1;i<6;i++){
        sum+=fn(i)
    }
    console.log(sum)*/
    /*十九、输入一个数字,然后判断是否为正整数,
    如果不是,提示重新输入;
    如果是,将该数字左右反转,
    然后输出
    (例如:12345,翻转之后为54321)



    function fn() {
        var num = prompt(‘输入一个数字‘);
        var a = parseInt(num % 10);
        var b = parseInt(num / 10 % 10);
        var c = parseInt(num / 100 % 10);
        var d = parseInt(num / 1000 % 10);
        var e = parseInt(num / 10000);
        var arr = num.split(‘‘);
        var boo=true;
        for (var i = 0; i < arr, length; i++) {
            if (arr[i] === ‘.‘) {
                alert(‘重新输入正整数‘);
                boo = false;
            }
        }
        if (num > 0 && boo) {
            alert(‘正整数‘);
             num.length === 0 ? console.log(a) :
                num.length === 1 ? console.log(a, b) :
                    num.length === 2 ? console.log(a, b, c) :
                        num.length === 3 ? console.log(a, b, c, d) :
                            num.length === 4 ? console.log(a, b, c, d, e) : ‘‘
        }

    }
    fn()*/
    /*二十、输入某年某月某日,判断这一天是这一年的第几天?
    for (var i=1;i<365;i++){

    }
    var day,month,year,sum,leap;
    year=Number(prompt(‘输入年‘));
    month=Number(prompt(‘输入月‘));
    day=Number(prompt(‘输入日‘));
    switch(month){
        case 1:sum=0;break;
        case 2:sum=31;break;
        case 3:sum=59;break;
        case 4:sum=90;break;
        case 5:sum=120;break;
        case 6:sum=151;break;
        case 7:sum=181;break;
        case 8:sum=212;break;
        case 9:sum=243;break;
        case 10:sum=273;break;
        case 11:sum=304;break;
        case 12:sum=334;break;
        default:console.log(‘输入错误,请输入1-12之间的数‘);break;
    }
    sum+=day;
    if(year%400===0||(year%4===0&&year%100!==0)){
        leap=1;
    }else{
        leap=0;
    }
    if(leap===1&&month===2){
        sum++;
    }
    console.log(sum);*/
    /*var year = Number(prompt());
    var month = Number(prompt());
    var days = Number(prompt());
    var is31 = [1, 3, 5, 7, 8, 10, 12];
    var is30 = [4, 6, 9, 11];
    var count1 = 0;
    var count2 = 0;
    var eryue = 28;
    if (year % 400 === 0 || (year % 4 === 0 && year % 100 !== 0)) {
        eryue = 29
    }
    for (var i = 0; i < is31.length; i++) {
        if (is31[i] < month) {
            count1++;
        }
    }
    for (var j = 0; j < is31.length; j++) {
        if (is30[j] < month) {
            count2++;
        }
    }
    console.log(‘今天是‘ + year + ‘年第‘ + (month > 2 ? (count1 * 31 + count2 * 30 + eryue + days) :
        (count1 * 31 + count2 * 30 + days)) + ‘天‘)*/
    /*十三、输入一个时间,
    输出这个时间的下一秒如:
    输入:23:59:59
    输出: 0: 0: 0
    function num(n){
        if(n<10){
            return ‘0‘+n
        }
        else {
            return ‘‘+n
        }
    }
    var hh = prompt(‘输入一个时间‘) * 1;
    var ff = prompt(‘输入一个时间‘) * 1;
    var ss = prompt(‘输入一个时间‘) * 1;
    ss++;
    if (ss===60){
        ss=0;
        ff++;
        if (ff===60){
            ff=0;
            hh++;
            if (hh===24){
                hh=0
            }
        }
    }
    console.log(num(hh)+‘:‘+num(ff)+‘:‘+num(ss))*/
    /*十四、已知两个矩形,宽高分别是200*200,400*400,
    甲矩形的坐标是x1,y1.
    乙矩形的坐标是x2,y2.
    写出判断条件两个矩形是否相碰撞

    var x1=200,y1=200,x2=400,y2=400;
    if (){
        console.log(‘会‘)
    }*/
    var x1=200;//自己随意定义坐标
    var x2=200;
    var y1=400;
    var y2=400;

    var bool=true;//先定义一个布尔值为false

    if(x1>=x2 && x1<=x2+400 && y1>=y2 && y1<=y2+400){
        bool=false;
    }else if(x1+200>=x2 && x1+200<=x2+400 && y1>=y2 && y1<=y2+400){
        bool=false;
    }else if (x1>=x2 && x1<=x2+400 && y1+200>=y2 && y1+200<=y2+400){
        bool=false;
    }else if(x1+200>=x2 && x1+200<=x2+400 && y1+200>=y2 && y1+200<=y2+400){
        bool=false;
    }
    if(bool){
        document.write("碰撞了");
    }else {
        document.write("没有碰撞");
    }
</script>
</body>
</html>


仅供参考哦!!!

以上是关于一些编程题,记录的主要内容,如果未能解决你的问题,请参考以下文章

好的编程习惯

面试题思考:解释一下什么叫AOP(面向切面编程)

[编程题] 简单错误记录

提效小技巧——记录那些不常用的代码片段

golang代码片段(摘抄)

第2题——DNA片段