读入一个自然数n,计算其各位数字之和,用汉语拼音写出和的每一位数字

本文介绍了一个计算自然数各位数字之和并用汉语拼音输出的方法。通过JavaScript实现,能够处理大到10^100的自然数,并将结果的每位数字转换为对应的汉语拼音发音。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

// 读入一个自然数n,计算其各位数字之和,用汉语拼音写出和的每一位数字。
// 123 > 1+2+3 > 6 > liu
// 789 > 7+8+9 > 24 > er si

// 输入格式:每个测试输入包含1个测试用例,即给出自然数n的值。这里保证n小于10100。
var num = Math.floor(Math.random() * 10100)
    // 输出格式:在一行内输出n的各位数字之和的每一位,拼音数字间有1 空格,但一行中最后一个拼音数字后没有空格。

// 输入样例:
// 1234567890987654321123456789
// 输出样例:
// yi san wu
// #include<iostream>
// using namespace std;

待改善.

// 计算随机数字的位数之和
function divide(num) {
    // console.log(num);
    var f = (Number(num) + '').length;
    var arr = [],
        sum = 0;
    switch (f) {
        case 1:
            arr.push(num);
            break;
        case 2:
            arr.push(Math.floor(num / 10));
            arr.push(Math.floor(num % 10));
            break;
        case 3:
            arr.push(Math.floor(num / 100));
            arr.push(Math.floor(num / 10) % 10);
            arr.push(Math.floor(num % 10));
            break;
        case 4:
            arr.push(Math.floor(num / 1000));
            arr.push(Math.floor(num / 100) % 10);
            arr.push(Math.floor(num / 10) % 10);
            arr.push(Math.floor(num % 10));
            break;
        case 5:
            arr.push(Math.floor(num / 10000));
            arr.push(Math.floor(num / 1000) % 10);
            arr.push(Math.floor(num / 100) % 10);
            arr.push(Math.floor(num / 10) % 10);
            arr.push(Math.floor(num % 10));
            break;
    }
    // console.log(arr)
    arr.forEach(function(v, i) {
            sum += v;
        })
        // console.log(sum)
    return sum;
}

// 读音
function init(n) {
    var n = Number(n);
    switch (n) {
        case 0:
            console.log("ling");
            break;
        case 1:
            console.log("yi");
            break;
        case 2:
            console.log("er");
            break;
        case 3:
            console.log("san");
            break;
        case 4:
            console.log("si");
            break;
        case 5:
            console.log("wu");
            break;
        case 6:
            console.log("liu");
            break;
        case 7:
            console.log("qi");
            break;
        case 8:
            console.log("ba");
            break;
        case 9:
            console.log("jiu");
            break;
    }
}
console.log((divide(num)+'').split(''));
(divide(num) + '').split('').forEach(function(v, i) {
    init(v);
})

转载于:https://my.oschina.net/mdu/blog/877040

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值