C语言编程题,求解答 45

给定一个数字,最大小于一万亿,输出符合中国人习惯的读法,例如:a、12输出:十二b、102输出:一百零二c、1002输出:一千零二d、112输出:一百十二e、10112输... 给定一个数字,最大小于一万亿,输出符合中国人习惯的读法,例如:
a、12输出:十二
b、102输出:一百零二
c、1002输出:一千零二
d、112输出:一百十二
e、10112输出:一万零一百十二
f、120000000:一亿二千万
g、11021002:一千一百零二万一千零二
h、11020102:一千一百零二万零一百零二
i、1000001:一百万零一
j、1000000001:十亿零一
展开
 我来答
kcxnvbdbd
2015-05-25 · TA获得超过523个赞
知道小有建树答主
回答量:885
采纳率:50%
帮助的人:596万
展开全部
const string NUM = "零一二三四五六七八九";
const string NUM1 = " 十百千";
const string NUM2 = " 万亿";

public string speak(string subnum)
{
    if (subnum.Trim('0') == "")
        return "零";

    string text = "";

    for (int i = 0; i < subnum.Length; i++)
    {
        char c = subnum[i];
        if (c > '0')
        {
            text += NUM[int.Parse(c.ToString())].ToString();
            text += NUM1[subnum.Length - i - 1];
        }
        else
            text += "零";
    }

    text = text.Trim(' ');
    if (text.Length > 1)
        text = text.TrimEnd('零');
    return text;
}

public string ChinaSpeak(string num)
{
    num = num.PadLeft(12, '0');
    int n = num.Length / 4;
    string text = "";
    for (int i = 0; i < n; i++)
    {
        string t = speak(num.Substring(i * 4, 4));

        text += t;
        if (t != "零" && t.Length > 0)
            text += NUM2[n - i - 1];
    }

    text = text.Trim('零').Trim(' ');
    while (text.Contains("零零"))
        text = text.Replace("零零", "零");
    if (text.Length > 1 && text.Substring(0, 2) == "一十")
        text = text.Remove(0, 1);
    return text;
}


调用示例:

Console.WriteLine(ChinaSpeak("12"));
Console.WriteLine(ChinaSpeak("102"));
Console.WriteLine(ChinaSpeak("1002"));
Console.WriteLine(ChinaSpeak("112"));
Console.WriteLine(ChinaSpeak("10112"));
Console.WriteLine(ChinaSpeak("120000000"));
Console.WriteLine(ChinaSpeak("11021002"));
Console.WriteLine(ChinaSpeak("11020102"));
Console.WriteLine(ChinaSpeak("1000001"));
Console.WriteLine(ChinaSpeak("1000000001"));
追问
谢谢您的解答,不过我要求的是用纯C语言解决问题的!
追答
我艹,我看成c#了,懒的改了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式