JavaScript练习

//1、将字符串的首字母转化为大写。
function upperCase(str) {

    return str.charAt(0).toUpperCase() + str.slice(1);
}
console.log(upperCase("aaa"));
//2、忽略大小写,判断两个字符串是否一致。
function compire(str1, str2) {
    if (str1.toUpperCase() == str2.toUpperCase()) {
        return true;
    }
    return false;
    // return str1.toUpperCase() == str2.toUpperCase();
}
console.log(compire("Hello", "hello"));
//3、统计一个字符串中每个字符出现的次数。
function getAllCount(str) {
    var string = "";
    for (var i = 0; i < str.length; i++) {
        if (string.indexOf(str.charAt(i)) == -1) {
            string += str.charAt(i);
            var count = str.split(str.charAt(i)).length - 1;
            console.log(str.charAt(i) + "出现了" + count + "次.");
        }
    }
}
getAllCount("1011202");

//4、得到一个[-25,30)范围内的随机整数。
function random(x, y) {
    return Math.round(Math.random() * (y - x) + x);
}
console.log(random(-25, 30));
//5、计算两个日期之间的差值,转化为n天n小时n分钟n秒n毫秒。
function getTimeOffset(y1, m1, d1, h1, M1, s1, ms1, y2, m2, d2, h2, M2, s2, ms2) {
    var date1 = new Date(y1, m1, d1, h1, M1, s1, ms1);
    var date2 = new Date(y2, m2, d2, h2, M2, s2, ms2);
    var div = Math.abs(date1.getTime() - date2.getTime());
    var days = div / (1000 * 60 * 60 * 24);
    var hours = (div % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60);
    var minutes = (div % (1000 * 60 * 60)) / (1000 * 60);
    var seconds = (div % (1000 * 60)) / 1000;
    var milliseconds = div % 1000;
    return parseInt(days) + "天" + parseInt(hours) + "小时" + parseInt(minutes) + "分钟"
        + parseInt(seconds) + "秒" + milliseconds + "毫秒";
}
console.log(getTimeOffset(1997, 1, 2, 8, 10, 20, 21, 1999, 1, 1, 7, 50, 10, 99));
//6、给一个年份,获取这一年的第一天是周几。
function getWeek(year) {
    var week = new Date(year, 0, 1).getDay();
    switch (week) {
        case 0:
            return "周日";
        case 1:
            return "周一";
        case 2:
            return "周二";
        case 3:
            return "周三";
        case 4:
            return "周四";
        case 5:
            return "周五";
        case 6:
            return "周六";
    }
}
console.log(getWeek(2018));

//7、分子是1的分数,叫做埃及分数,因为古埃及人在进行分数运算时,只使用分子是1的分数。
//现输入一个真分数(真分数,指的是分子比分母小的分数。),请将其分解为埃及分数。

// fraction函数是求a/b-c/d分数的分子
function fraction(a, b, c, d) {
    return a * d - b * c;
}
function egyptian(a, b) {
    if (a == 1) {
        return a + "/" + b + " = " + a + "/" + b;
    }
    var x = a, y = b;
    var str = "";
    for (var i = 2; ; i++) {
        if (parseInt(y / x) + 1 == i) {
            str += "1/" + i + " + ";
            x = fraction(x, y, 1, i);
            y = y * i;
        }
        if (x == 1) {
            str += "1/" + y;
            break;
        }
    }
    // 另一种循环写法
    // for (var i = 2; x != 1; i++) {
    //     if (parseInt(y / x) + 1 == i) {
    //         str += "1/" + i + " + ";
    //         x = fraction(x, y, 1, i);
    //         y = y * i;
    //     }
    // }
    // str += "1/" + y;
    return a + "/" + b + " = " + str;
}
console.log(egyptian(8, 11));

//8、需要从A,B,C,D,E,F六个人中尽可能多的挑出若干个人去执行一项任务,但有以下限制条件:
// 1)A,B两人中至少去一人;
// 2)A,D不能一起去;
// 3)A,E,F三人中要派两人去;
// 4)B,C都去或者都不去;
// 5)C和D两人中去一人;
// 6)若D不去,则E也不去。
// 问,应该让那几个人去?  

// 1为去,0为不去
function getGo(x) {
    return x == 1 ? "去 " : "不去 ";
}
function judge() {
    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 (d == 0) {
                                e = 0;
                            }
                            if ((a + b >= 1) && (a + d == 1) && (a + e + f == 2) && (b + c == 0 || b + c == 2) && (c + d == 1)) {
                                console.log("A" + getGo(a) + "B" + getGo(b) + "C" + getGo(c) + "D" + getGo(d) + "E" + getGo(e) + "F" + getGo(f));
                            }
                            // 此处设置e=1,如果不这样做,那么d==0时,e永远等于0,陷入死循环.
                            if (d == 0) {
                                e = 1;
                            }
                        }
                    }
                }
            }
        }
    }
}
judge();

//9、小明想把100元换成10元,5元,1元这样的零钱,
//在这三种零钱中每种零钱都至少各有一张的情况下,总共有多少种兑换方案?   
function change(money) {
    var count = 0;
    for (var i = 1; i < parseInt(money / 10); i++) {
        for (var j = 1; j < parseInt(money / 5); j++) {
            for (var k = 1; k < money; k++) {
                if (i * 10 + j * 5 + k == money) {
                    count++;
                    // console.log(i + "张10元 " + j + "张5元 " + k + "张1元");
                }
            }
        }
    }
    return count;
}
console.log(change(100));

function change2(money) {
    var count = 0;
    for (var i = 1; i < parseInt(money / 10); i++) {
        for (var j = 1; j < parseInt(money / 5); j++) {
            if (10 * i + 5 * j < money) {
                count++;
                // console.log(i + "张10元 " + j + "张5元 " + (money - 10 * i - 5 * j) + "张1元");
            }
        }
    }
    return count;
}
console.log(change2(100));

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值