数字转中文,输入数字超过10万,结果就会出错,大神们可以帮忙看看吗?
#include<stdio.h>#include <stdlib.h>
int main()
{
//输入一个数字,输出这个数字相应的中文表示
double money;//表示输入的数字
int m = 0; //修改后的数字
char ch[10][4] = {"零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"};
int n = 0; //数字的位数
int fei[20] = {0}; //保存每一个数字
int i = 0;//循环变量
char wei[20][4] = {"分", "角", "元", "拾", "佰", "仟", "萬", "拾萬", "佰萬", "仟萬", "億", "拾億", "佰億", "仟億", "萬億"};
do
{
printf("请输入数字:");
scanf("%lf",&money);
if(money < 0)
{
printf("输入有误!\n");
}
}while(money < 0);
m = (int)((money + 0.005)*100);
//printf("m是%d\n",m); //测试保留两位数字的输出
while(m != 0)
{
fei[i] = m % 10;
m = m / 10;
i++;
n++;
}
printf("相应的中文数字是:\n");
for(i = 0; i < n-2; i++)
{
if((fei[n-i-1] != 0) || (fei[n-i] != 0))
{
printf("%s",ch[fei[n-1-i]]);
if(fei[n-i-1] != 0)
printf("%s",wei[n-i-1]);
}
}
if(fei[2] == 0)
printf("%c%c元",8,8);
if(fei[0] == 0 && fei[1] == 0)
{
printf("整");
}
else
{
for(i = 0; i < 2; i++)
{
printf("%s",ch[fei[2-1-i]]);
if(fei[2-i-1] != 0)
{
printf("%s",wei[2-i-1]);
}
}
if(fei[0] == 0)
printf("%c ",8);
}
printf("\n");
return 0;
}
[此贴子已经被作者于2017-7-27 11:17编辑过]