1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > c语言实现人民币转换成大写中文数字

c语言实现人民币转换成大写中文数字

时间:2022-05-04 03:58:15

相关推荐

c语言实现人民币转换成大写中文数字

本人代码新手orz,发帖记录,如有错误请指正!

方法比较笨

示例:

Please input the price:42.5

The Chinese form is: 肆拾贰圆伍角

Please input the price:42.53

The Chinese form is: 肆拾贰圆伍角叁分

Please input the price:42

The Chinese form is: 肆拾贰圆整

#include <stdio.h>#include <stdlib.h>#include <math.h>#include <string.h>void moneychange(double m){char a1[][3] = {"零","壹","贰","叁","肆","伍","陆","柒","捌","玖"};char a2[][3] = {"拾","佰","仟"};char a3[][3] = {"圆","万","亿"};printf("the Chinese form is:");//先处理整数部分char temp[100];sprintf(temp,"%.0lf",m);int len=strlen(temp);//获取了整数部分的位数int flag=1;//记录非零数前是否是零for(int i=len;i>=1;i--){//提取各位数字int k;k=fmod(m/pow(10,i-1),10);if(k==0){switch(i)//如果此位是零,且在元、万、亿的单位上,则输出对应单位{case 1:printf("%s",a3[0]);break;case 5:printf("%s",a3[1]);break;case 9:printf("%s",a3[2]);break;}flag=0;}else{if(flag==0 )//若非零数前面是零,则这一个非零数要先输出一个“零”printf("零");printf("%s",a1[k]);//输出对应中文数字switch(i%4)//检测此数字在哪个位置,在对应的十百千的位上要带上十百千{case 0 :printf("%s",a2[2]);break;case 3 :printf("%s",a2[1]);break;case 2 :printf("%s",a2[0]);break;}switch(i)//元万亿上则带上元万亿{case 1:printf("%s",a3[0]);break;case 5:printf("%s",a3[1]);break;case 9:printf("%s",a3[2]);break;}flag=1;}}//若输入的m没有小数部分最后要输出“整”,由于m小数部分最多两位,所以做特殊处理//提取小数部分的两位int k1=fmod(m*10,10);int k2=fmod(m*100,10);if(k1==0&&k2==0)printf("整");//处理小数部分if(k1!=0)printf("%s角",a1[k1]);if(k2!=0)printf("%s分",a1[k2]);}int main(){double m;printf("please input the price:");scanf("%lf",&m);moneychange(m);return 0;}

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