1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > 将阿拉伯数字转换成中文大写金额的形式

将阿拉伯数字转换成中文大写金额的形式

时间:2023-07-04 01:10:15

相关推荐

将阿拉伯数字转换成中文大写金额的形式

问题:编写控制台程序,用户输入阿拉伯数字的金额,系统自动转换成中文大写金额的形式输出。

例如:输入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{if (x2 >= 100){cout << "零";baiwei_zhuanhuan(x2);int c1 = x2 % 100;if (c1 >= 10){shiwei_zhuanhuan(c1);int c2 = c1 % 10;gewei_zhuanhuan(c2);}else{cout << "零";gewei_zhuanhuan(c1);}}else{if (x2 >= 10 && x2 < 100){cout << "零";shiwei_zhuanhuan(x2);int c2 = x2 % 10;gewei_zhuanhuan(c2);}if (x2 >= 1 && x2 < 10){cout << "零";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);}}}else{if (x >= 100){baiwei_zhuanhuan(x);int c1 = x % 100;if (c1 > 10){shiwei_zhuanhuan(c1);int c2 = c1 % 10;gewei_zhuanhuan(c2);}}else{if (x >= 10 && x < 100){shiwei_zhuanhuan(x);int c2 = x % 10;gewei_zhuanhuan(c2);}if (x >= 1 && x < 10){gewei_zhuanhuan(x);}}}}}

以上代码只能处理不过亿的数字,如果数字过大超过亿,按照前面的分析方式拓展延伸,万变不离其宗。

具体实现过程及代码的改进请访问:/index.php//11/29/c实验%ef%bc%9a阿拉伯数字转换为中文大写/

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。