用C实现输入数字输出该数字的中文表达,如"10001"--一万零一
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用C实现输入数字输出该数字的中文表达,如"10001"--一万零一相关的知识,希望对你有一定的参考价值。
可怜我的TURBO C不支持汉字,终于找了一个UNIX环境,可以运行带有汉字的C语言程序,下面是我调试通过以后的运行记录。说明,$是UNIX的系统提示符,就相当于DOS下面的C:\\>,$cc -V命令显示机器的C语言版本,$cat a.c命令就相当于DOS下的type a.c,所以后面的内容就是程序代码,$cc a.c就是编译a.c为可执行文件a.out,后面的几个$a.out就是运行程序的结果。
$ cat a.c
main()
int i,j;
double x;
char xxx[80],rmb_up_char[80],tmp[80];
char *rmb_unit[]="仟","佰","拾","亿","仟","佰","拾",
"万","仟","佰","拾","元","角","分";
char *num_up_char[]="零","壹","贰","叁","肆","伍","陆","柒","捌","玖";
printf("输入小写数字:");
scanf("%lf",&x);
if (x==0) strcpy(rmb_up_char,"零");
else
sprintf(xxx,"%015.0lf", x*100);
/*puts(xxx);*/
rmb_up_char[0]=\'\\0\';
tmp[0] = \'\\0\';
i=0;
while (i<15 && xxx[i]==\'0\') i++;
while (i<15)
if (xxx[i]!=\'0\')
j=xxx[i]-\'0\';
strcat(rmb_up_char, tmp);
strcat(rmb_up_char, num_up_char[j]);
strcat(rmb_up_char, rmb_unit[i-1]);
tmp[0] = \'\\0\';
else
strcpy(tmp, num_up_char[0]);
if ((i==4 || i==8) &&
(xxx[i-3]!=\'0\' || xxx[i-2]!=\'0\' || xxx[i-1]!=\'0\' || xxx[i]!=\'0\'))
strcat(rmb_up_char,rmb_unit[i-1]);
if (i==12) strcat(rmb_up_char,"元");
i++;
puts(rmb_up_char);
$ cc -V
SCO UNIX Development System Release 5.1.2A 27Jul00
Usage: cc [ options ] files ...
$ cc a.c
$ a.out
输入小写数字:10001
壹万零壹元
$ a.out
输入小写数字:123
壹佰贰拾叁元
$ a.out
输入小写数字:123.4
壹佰贰拾叁元肆角
$ a.out
输入小写数字:123.45
壹佰贰拾叁元肆角伍分
$ a.out
输入小写数字:1000005
壹佰万零伍元
$ a.out
输入小写数字:10000000005
壹佰亿零伍元
$
为了这个没有一分悬赏的问题搞了一晚上,兴趣使然呀,楼主,我们有缘哦。 参考技术A 你可以用记事本编写C程序,那里是支持中文的,在保存的时候保存为.c文件就可以了,注意在文件类型里一定要选择所有类型。
以上是关于用C实现输入数字输出该数字的中文表达,如"10001"--一万零一的主要内容,如果未能解决你的问题,请参考以下文章
C语言中如何用名字存数组,用时间函数模拟随机,实现随机输出一个姓名。
编制程序实现输入一个1~7之间的数字,输出相应的星期几,如输入1,则输出星期一