将阿拉伯数字转换成中文大写金额的形式
程序员文章站
2022-06-17 22:54:29
...
问题:编写控制台程序,用户输入阿拉伯数字的金额,系统自动转换成中文大写金额的形式输出。
例如:输入458796;
转换为:肆拾伍万捌仟柒佰玖拾陆。
问题分析:既然是数字大小写转换,那么我们这样考虑问题:先最高考虑到千万级别。那么我们把这个数抽象成由个、十、百、千、万这么几个位组成。其中个、十、百、千都是一个数一位,而万就有可能是几个万,几十个万,几百几千个万。那么我们不妨把这个数拆成两部分,一部分是“万”,一部分是千百十个。那么对于过万的数,我们就可以先用处理千以下的方法先处理“万”的部分,然后再处理千以下的部分。
本实验代码如下:
处理千位数的函数:
void qianwei_zhuanhuan(int x) //千位上有数的转换
{
int n;
n = x / 1000;
switch (n)
{
case 1:cout << "壹仟"; break;
case 2:cout << "贰仟"; break;
case 3:cout << "叁仟"; break;
case 4:cout << "肆仟"; break;
case 5:cout << "伍仟"; break;
case 6:cout << "陆仟"; break;
case 7:cout << "柒仟"; break;
case 8:cout << "捌仟"; break;
case 9:cout << "玖千"; break;
}
}
处理百位的函数:
void baiwei_zhuanhuan(int x) //百位上有数的转换
{
int n;
n = x / 100;
switch (n)
{
case 1:cout << "壹佰"; break;
case 2:cout << "贰佰"; break;
case 3:cout << "叁佰"; break;
case 4:cout << "肆佰"; break;
case 5:cout << "伍佰"; break;
case 6:cout << "陆佰"; break;
case 7:cout << "柒佰"; break;
case 8:cout << "捌佰"; break;
case 9:cout << "玖佰"; break;
default:break;
}
}
处理十位数的函数:
void shiwei_zhuanhuan(int x) //十位上有数的转换
{
int n;
n = x / 10;
switch (n)
{
case 1:cout << "壹拾"; break;
case 2:cout << "贰拾"; break;
case 3:cout << "叁拾"; break;
case 4:cout << "肆拾"; break;
case 5:cout << "伍拾"; break;
case 6:cout << "陆拾"; break;
case 7:cout << "柒拾"; break;
case 8:cout << "捌拾"; break;
case 9:cout << "玖拾"; break;
default:break;
}
}
处理个位数的函数:
void gewei_zhuanhuan(int x) //个位数转换
{
int n;
n = x / 1;
switch (n)
{
case 1:cout << "壹"; break;
case 2:cout << "贰"; break;
case 3:cout << "叁"; break;
case 4:cout << "肆"; break;
case 5:cout << "伍"; break;
case 6:cout << "陆"; break;
case 7:cout << "柒"; break;
case 8:cout << "捌"; break;
case 9:cout << "玖"; break;
}
}
主函数相关操作如下:
int main()
{
int x, x1, x2;
cout << "请输入金额(不过亿):";
cin >> x;
cout << "您的金额为:" << endl;
if (x > 10000) //以下是对“万”以上的处理
{
x1 = x / 10000; //看看有多少个“万”
if (x1 > 1000) //超过一千万的情况
{
qianwei_zhuanhuan(x1);
int c;
c = x1 % 1000;
if (c >= 100)
{
baiwei_zhuanhuan(c);
int c1 = c % 100;
if (c1 > 10)
{
shiwei_zhuanhuan(c1);
int c2 = c1 % 10;
gewei_zhuanhuan(c2);
}
}
else
{
if (c >= 10 && c < 100)
{
cout << "零";
shiwei_zhuanhuan(c);
int c2 = c % 10;
gewei_zhuanhuan(c2);
}
if (c >= 1 && c < 10)
{
cout << "零";
gewei_zhuanhuan(c);
}
}
}
else //没超过一千万的情况
{
if (x1 > 100)
{
baiwei_zhuanhuan(x1);
int c = x1 % 100;
if (c >= 10 && c < 100)
{
shiwei_zhuanhuan(c);
int c1 = c % 10;
gewei_zhuanhuan(c1);
}
else
{
gewei_zhuanhuan(c);
}
}
else
{
if (x1 >= 10 && x1 < 100)
{
shiwei_zhuanhuan(x1);
int c = x1 % 10;
gewei_zhuanhuan(c);
}
if (x1 >= 1 && x1 < 10)
gewei_zhuanhuan(x1);
}
}
cout << "万"; //“万”以上处理完毕,输出“万”字
x2 = x % 10000; //接下来处理千百十个位
if (x2 >= 1000)
{
qianwei_zhuanhuan(x2);
int c;
c = x2 % 1000;
if (c >= 100)
{
baiwei_zhuanhuan(c);
int c1 = c % 100;
if (c1 > 10)
{
shiwei_zhuanhuan(c1);
int c2 = c1 % 10;
gewei_zhuanhuan(c2);
}
}
else
{
if (c >= 10 && c < 100)
{
cout << "零";
shiwei_zhuanhuan(c);
int c2 = c % 10;
gewei_zhuanhuan(c2);
}
if (c >= 1 && c < 10)
{
cout << "零";
gewei_zhuanhuan(c);
}
}
}
else
{
cout << "零";
if (x2 >= 100)
{
baiwei_zhuanhuan(x2);
int c1 = x2 % 100;
if (c1 > 10)
{
shiwei_zhuanhuan(c1);
int c2 = c1 % 10;
gewei_zhuanhuan(c2);
}
}
else
{
if (x2 >= 10 && x2 < 100)
{
shiwei_zhuanhuan(x2);
int c2 = x2 % 10;
gewei_zhuanhuan(c2);
}
if (x2 >= 1 && x2 < 10)
{
gewei_zhuanhuan(x2);
}
}
}
}
else //没过万的情况
{
if (x >= 1000)
{
qianwei_zhuanhuan(x);
int c;
c = x % 1000;
if (c >= 100)
{
baiwei_zhuanhuan(c);
int c1 = c % 100;
if (c1 > 10)
{
shiwei_zhuanhuan(c1);
int c2 = c1 % 10;
gewei_zhuanhuan(c2);
}
}
else
{
if (c >= 10 && c < 100)
{
cout << "零";
shiwei_zhuanhuan(c);
int c2 = c % 10;
gewei_zhuanhuan(c2);
}
if (c >= 1 && c < 10)
{
cout << "零";
gewei_zhuanhuan(c);
}
}
}
}
}
以上代码只能处理不过亿的数字,如果数字过大超过亿,按照前面的分析方式拓展延伸,万变不离其宗。
推荐阅读
-
WPS表格如何将表示金额的阿拉伯数字小写快速转换成人民币大写
-
Excel2010中将英文名的姓和名的首字母转换成大写形式
-
使用python实现金额转换,阿拉伯数字的金额转换成中国传统的形式,如:(¥1011)→(壹仟零壹拾壹元整)输出。
-
js-练习:输入阿拉伯数字的金额,转换成大写汉字输出
-
将阿拉伯数字转换成中文大写金额的形式
-
金额转换,阿拉伯数字的金额转换成中国传统的形式如:(¥1011)->(一千零一拾一元整)输出。...
-
数字金额转换成中文大写金额的PHP函数
-
ASP将数字转中文数字(大写金额)的函数
-
数字金额转换成中文大写金额的PHP函数
-
JavaScript将数字转换成大写中文的方法_javascript技巧