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:十亿零一 展开
a、12输出:十二
b、102输出:一百零二
c、1002输出:一千零二
d、112输出:一百十二
e、10112输出:一万零一百十二
f、120000000:一亿二千万
g、11021002:一千一百零二万一千零二
h、11020102:一千一百零二万零一百零二
i、1000001:一百万零一
j、1000000001:十亿零一 展开
展开全部
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#了,懒的改了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询