您的位置:首页 > 其它

将阿拉伯数字转化为中文数字,如12“一十二”

2010-07-24 14:38 357 查看

将阿拉伯数字转化为中文数字,如12à“一十二”

1)考虑不包含0的数字
#include<stdio.h>
void main()
{
int m;
int c[10];
int i = 0;
char a[10][3] = {"零", "一", "二", "三", "四", "五", "六", "七", "八", "九"};
char b[10][3] = {"", "十", "百", "千", "万", "十", "百", "千", "亿", "十"};
// int型的最大数为2147483647,大于此数程序将输出错误结果
printf("Please input an integer not larger than 21,4748,3647: ");
scanf("%d", &m);
while(m)
{
c[i++] = m % 10;
m /= 10;
}
i--;
while(i >= 0)
{
printf("%s%s", a[c[i]],b[i]);
i--;
}
printf("/n");
}

2)考虑0全在右边的情况,如10,000
#include<stdio.h>
void main()
{
int m;
int c[10];
int i = 0;
char a[10][3] = {"零", "一", "二", "三", "四", "五", "六", "七", "八", "九"};
char b[10][3] = {"", "十", "百", "千", "万", "十", "百", "千", "亿", "十"};
// int型的最大数为2147483647,大于此数程序将输出错误结果
printf("Please input an integer not larger than 21,4748,3647: ");
scanf("%d", &m);
while(m)
{
c[i++] = m % 10;
m /= 10;
}
i--;
int zeroFlag = 0;
int flag = 0; // flag的作用是保证“万”只被输出一次
while(i >= 0)
{
if(c[i] == 0)
{
// 考虑“亿”和“万”的情况
if(i % 4 == 0 && flag == 1)
{
printf("%s", b[i/4*4]);
flag = 0;
}
zeroFlag = 1;
}
else
{
printf("%s%s", a[c[i]],b[i]);
if(i%4 != 0)
{
flag = 1;
}
else
{
flag = 0;
}
}
i--;
}
printf("/n");
}

3)最后考虑0出现在中间的情况
#include<stdio.h>
void main()
{
int m;
int c[10];
int i = 0;
char a[10][3] = {"零", "一", "二", "三", "四", "五", "六", "七", "八", "九"};
char b[10][3] = {"", "十", "百", "千", "万", "十", "百", "千", "亿", "十"};
// int型的最大数为2147483647,大于此数程序将输出错误结果
printf("Please input an integer not larger than 21,4748,3647: ");
scanf("%d", &m);
while(m)
{
c[i++] = m % 10;
m /= 10;
}
i--;
int zeroFlag = 0;
int flag = 0; // flag的作用是保证“万”只被输出一次
while(i >= 0)
{
if(c[i] == 0)
{
// 考虑“亿”和“万”的情况
if(i % 4 == 0 && flag == 1)
{
printf("%s", b[i/4*4]);
flag = 0;
}
zeroFlag = 1;
}
else
{
if(zeroFlag == 1 && i%4 != 3 )
printf("零%s%s", a[c[i]],b[i]);
else
printf("%s%s", a[c[i]],b[i]);
zeroFlag = 0;
if(i%4 != 0)
flag = 1;
else
flag = 0;
}
i--;
}
printf("/n");
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: