JavaScript练题手册

1.单个水仙花数判断

水仙花数是指一个 3 位数,它的每个位上的数字的 3次幂之和等于它本身(例如:1^3 + 5^3+ 3^3 = 153)。
 var flower = parseInt(prompt("请输入一个数字"));
        // 判断是否是三位数
        if (flower >= 100 && flower <= 999) {
            var digit = flower % 10;
            var decade = parseInt(flower / 10) % 10;
            var hundred = parseInt(flower / 100);
            if (digit * digit * digit + decade * decade * decade + hundred * hundred * hundred == flower) {
                document.write(`${flower}是水仙花数`);
            } else {
                document.write(`${flower}不是水仙花数`);
            }
        }else{
            document.write(`输入数字:${flower}不合法`);
        }

2. 水仙花数循环

// 打印出所有的水仙花数
        for(var i=100;i<=999;i++){
            var digit = i % 10;
            var decade = parseInt(i / 10) % 10;
            var hundred = parseInt(i / 100);
            if (digit * digit * digit + decade * decade * decade + hundred * hundred * hundred == i) {
                document.write(`${i}是水仙花数 <br>`);
            } 
        }

3.闰年判断

普通闰年:公历年份是4的倍数的,且不是100的倍数,为普通闰年。(如2004、2020年就是闰年);
世纪闰年:公历年份是整百数的,必须是400的倍数才是世纪闰年(如1900年不是世纪闰年,2000年是世纪闰年);

var year = parseInt(prompt("请输入年份"));
        if(year % 4 == 0 && year % 100 !=0 || year % 400 == 0){
            document.write(`${year}是闰年`);
        }else{
            document.write(`${year}不是闰年`);
        }

4.输出一个字符串中有多少个数字、大写字母、小写字母

 var str = "1234ABCDert";
        var numCount = 0;
        var UpperCount = 0;
        var LowerCount = 0;
        for (var i=0;i<str.length;i++) {
            var code = str.charCodeAt(i);
            if(code >=48 && code <=57){
                numCount++;
            }else if(code >=65 && code <=90){
                UpperCount++;
            }else if(code >=97 && code <=122){
                LowerCount++;
            }
        }
        document.write(`数字个数:${numCount}<br>大写字母个数:${UpperCount}<br>小写字母个数:${LowerCount}<br>`)

5.字符串转为数字

定义一个函数,传入一个字符串,实现将字符串转为数字(可以使用parseFloat),支持字符串中嵌入数字,12a3 会返回12 a123b 会返回123

function strTransferNum(str) {
            var start = -1;//记录开始下标,默认-1
            var end = -1;//记录结束下标,默认-1
            for(var i = 0;i<str.length;i++){
                var code = str.charCodeAt(i);
                if(code >= 48 && code <=57){
                    if(start==-1){
                        start = i;
                    }
                }else{
                    //非数字
                    //已经找到了数字,在遇到第一个非数字字符时就停止
                    if(start!=-1){
                        end=i-1;//i是第一个非数字下标
                        break;
                    }
                }
            }
            if(start==-1){
                return NaN;
            }else{
                var newStr = ""//定义一个空字符串接收
                if(end==-1){//说明到末尾一直是数字
                    end = str.length-1;
                }
                for(var j = start;j<=end;j++){
                    newStr += str[j];
                }
                return parseFloat(newStr);
            }
           
        }
        document.write(strTransferNum('b12a'));//12

6.次方计算

 var x = parseInt(prompt("请输入底数"));
 var y = parseInt(prompt("请输入指数"));
var res = 1;
       if (y > 0) {
            for (var i = 0; i < y; i++) {
                res *= x;
            }
        }else{
            for (var i = 0; i < -y; i++) {
                res *= x;
            }
            res = 1/res;
        }
        document.write(res);

7.获取字符串中字符出现最多次数

function demo(str) {
     var max = 0;
     var arr = str.split('')
     var count = 0;
     var temp = arr[0]
     for (var i = 1; i < arr.length; i++) {
         if (arr[i] == temp) {
            count++;
            max = count;
         }
           temp = arr[i + 1]
  	}
            return max;
}
var res = demo('abacaaaaa')
 console.log(res);

8.字符串倒序

  function demo(str) {
       var arr = str.split(' ');
       var newStr = ''
       for (var i = 0; i < arr.length; i++) {
          newStr += arr[i].split('').reverse().join('') + ' '
      }
          return newStr;
  }
var res = demo("let's go home")
console.log(res);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值