前端基础练习题

/*
    变量命名规则:
    1.只能由字母、数字、下划线、美圆符号组成,而且不能以数字开头。
    2.变量命名要有意义,杜绝a01,b0046。
    3.变量遵循小驼峰规则:第一个单词全小写,从第二个单词开始,首字母大写。 myColorArray
        - 大驼峰:每一个单词首字母大写。myDemo
        - C语言的风格:单词全小写,中间用下划线隔开。my_color_array
    4.变量名不能和系统关键字冲突。
     */

// (1) 循环求和:利用循环语句计算从100加到500的后的总和。
var sum = 0; //用于存放累加和的变量javascript

for (var i = 100; i < 501; i++){
        sum += i;
    }
    document.write(sum);

// (2) 字符判断:从键盘输入一个字符,判断这个字符是数字,
// 仍是大写字母,仍是小写字母,仍是符号。
//输入字符串 adf 2332afdjava

var content = prompt();
                //获得这个字符串的第一位的ascii码
                var code = content.charCodeAt(0);
                if (code >=48 && code <=57){
                    document.write("是数字!");
                }
                if( code >= 65 && code <= 90 ){
                    document.write("大写字母!");
                }
                if( code >= 97 && code <= 122 ){
                    document.write("小写字母!");
                }else {
                    document.write("符号!");
                }

// (4) 水仙花数:计算三位整数(100~999)的水仙花数。
// 水仙花数是指每一位的立方相加等于该数本身,好比153 = 1^3 + 5^3 + 3^3。
//从100遍历到999web

for (var i = 100; i < 1000; i++){
            //分别获得i的个十百位
            //百位:除以100再取整
            var a = parseInt(i / 100);
            //十位:除以10再取整,对10取余
            var b = parseInt(i / 10) % 10;
            //个位:对10取余
            var c = i % 10;
            //若是a、b、c的三次方之和等于i自己,那就是水仙花数
            //if在for中起了过滤的做用
            if ( a*a*a + b*b*b + c*c*c == i ){
                document.write(i + "<br/>");
            }
        }
//抽象一下:用i、j、k分别表示百十个位
for (var i = 1; i < 10; i++){
            for (var j = 0; j < 10; j++){
                for (var k = 0; k < 10; k++){
//                    document.write(i+""+j+""+k+"<br/>");
                    //进行if判断,过滤
                    var number = i*100 + j*10 + k;
                    if ( i*i*i + j*j*j + k*k*k ==  number){
                        document.write(number + "<br/>");
                    }
                }
            }
        }

// (5) 次方计算:计算X的Y次方,X(底数)和Y(指数)的值由用户输入。
//次方:2^3: 2 * 2 * 2 2^-3: 1/2*2*2 公理:任何数的0次方都为1app

var x = parseInt(prompt("请输入底数:")); //2
        var y = parseInt(prompt("请输入指数:")); //3

        //保存相乘的结果
        var result = 1;
        /* 1: result 1 2 = 1 * 2 2: result 2 4 = 2 * 2 3: result 4 8 = 4 * 2 4:result 8 */
        if (y>0){
            //对y是正数的状况下的处理
            for ( var i = 0; i < y; i++){
                result = result * x;
            }
        }else{
            //y是负数,让y等于正数
            for ( var i = 0; i < -y; i++){
                result = result * x;
            }
            //将result求倒
            result = 1 / result;
        }
        document.write(result);

// (6) 统计字符:从键盘输入一个字符串,统计这个字符串当中包含几个大写字母,
// 几个小写字母,几个数字,几个特殊符号。
//输入字符串dom

var content = prompt("请输入字符串:"); //1234abc
// document.write(content.length);

        //定义一些变量去保存个数
        var countNumber = 0;
        var countBig = 0;
        var countSmall = 0;
        var countChar = 0;

        //遍历字符串的每一位 1a2b3C
        for ( var i = 0; i < content.length; i++){
            //获得当前位的ascii码
            var code = content.charCodeAt(i);

            //判断这一位字符是在哪一个区间
            if (code >=48 && code <=57){
                countNumber ++;
            }else if( code >= 65 && code <= 90 ){
                countBig ++;
            }else if( code >= 97 && code <= 122 ){
                countSmall ++;
            }else {
                countChar ++;
            }
        }
        document.write("数字的个数:"+countNumber + "<br/>");
        document.write("大写的个数:"+countBig + "<br/>");
        document.write("小写的个数:"+countSmall + "<br/>");
        document.write("字符的个数:"+countChar + "<br/>");

// (7) 抓球问题:有红球5个,黑球7个,白球9个,随机取出12个,
// 计算可能的颜色组合有多少种?svg

var count = 0;
        //用三个循环变量分别表明三种球
        for (var r = 0; r <= 5; r++){
            for (var b = 0; b <= 7; b++){
                for (var w = 0; w <= 9; w++){
                    //筛选知足咱们条件的状况
                    if ( r + b + w == 12){
                        document.write("红球:" + r + ", 黑球:" + b + ", 白球:" + w +"<br/>");
                        count++;
                    }
                }
            }
        }
        document.write("种数为:" + count);

(8) 组合问题:用1元纸币兑换1分,2分和5分的硬币,要求兑换总数为50枚,
// 问能够有多少种组合,每种组合对应1分,2分,5分分别是多少?
//i表明1分,j表明2分,k表明5分ui

var count = 0; //计数器
        for(var i = 0; i <= 100; i++){
            for ( var j = 0; j <= 50; j++){
                for ( var k = 0; k <= 20; k++){
                    //过滤总数为50且面值和为100分的状况
                    if (i+j+k==50 && i+2*j+5*k == 100){
                        document.write(i + ", " + j + ", " + k +"<br/>");
                        count ++;
                    }
                }
            }
        }
        document.write(count);

// (9) 九九乘法表:尝试用for循环完成九九乘法表输出。要求:三角形输出。spa

for(var i=1;i<10;i++) {
            document.write("<br>");
            for (var j=1; j <= i; j++) {
                if(i*j<10){
                    document.write("&nbsp&nbsp");
                }

                document.write(i + "*" + j + "=" + i * j + "&nbsp&nbsp&nbsp");

                }

        }

// (10) 字符串判断:从键盘输入一个字符串,
// 判断该字符串是否能够被转换为一个有效的数字。正整数
//123 abc 判断每一位的ascii码是否都在数字的区间code

var content = prompt("请输入:");
        for ( var i = 0; i < content.length; i++ ){
            //获取当前位的ascii码
            var code = content.charCodeAt(i);
            if (code >= 48 && code <=57){
                document.write("是数字!");
            }else{
                document.write("不是数字!");
            }

        }
//上面的这种作法:每判断一个字符,就得出一个结论。
var content = prompt("请输入:");
        //利用一个变量打标记
        var isNumber = true; //是true就是纯数字,是false就不是纯数字。
        //123a45 12345
        for ( var i = 0; i < content.length; i++ ){
            //获取当前位的ascii码
            var code = content.charCodeAt(i);
            //判断是否有某一位不是数字区间的状况
// if ( !(code >= 48 && code <=57)){
            if ( code < 48 || code > 57){
                isNumber = false;
                break;
            }
        }
        //经过前面的逻辑处理,已经获得了一个结果。isNumber
        if ( isNumber ){
            document.write("是数字!");
        }else{
            document.write("不是数字!");
        }

// (11) 用户输入一个数字,倒序输出,并计算每一位数字的和。regexp

方法一:
        var content = prompt('input:');
        var sum = 0;
        //abcd
        for ( var i = content.length - 1; i >= 0; i--){
            document.write(content[i]);
            sum = sum + parseInt(content[i]);
        }
        document.write(sum);
方法二:
        var number = parseInt(prompt('input:'));
        var sum = 0;
        while (number){
            var value = number%10;
            document.write(value);
            sum = sum + value;
            number = parseInt(number / 10);
        }
        /*
        1.number 1234   value 4   sum 4 = 0 + 4   number 123
        2.number 123    value 3   sum 7 = 4 + 3   number 12
        3.number 12     value 2   sum 9 = 7 + 2   number 1
        4.number 1     value 1   sum 10 = 9 + 1   number 0
        5.number 0 - 循环结束
         */
        document.write("<br/>"+sum);

// (12)猜数字游戏,猜数字游戏,系统随机生成一个1000之内的数字,
// 用户输入一个数字,若是输入数字大于系统数字则提示‘大了’,反之提示‘小了’,
// 直到相等游戏结束,提示‘通关’ 并输出猜想次数。(提示:用到Math模块)
//Math.random()生成一个0-1的随机数
var randomNumber = parseInt(Math.random() * 1000);
// document.write(randomNumber + “
”);

// var count = 0; //计数器
//猜想一万次
// var randomNumber = parseInt(Math.random() * 1000);
// document.write(randomNumber + “
”);

// var count = 0; //计数器
//猜想一万次
// for ( var i = 0; i < 10000; i++){
//死循环

while(true){
            count ++;
            var myNumber = parseInt(prompt('请输入数字:'));
            //比较我输入的和随机的这个数是否一致
            if( myNumber > randomNumber ){
                document.write('大了!');
            }else if ( myNumber < randomNumber ){
                document.write('小了!');
            }else{
                document.write('恭喜通关!');
                break;
            }
        }
        document.write('总共猜想了 <' + count+ '> 次!');