用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语言中如何用名字存数组,用时间函数模拟随机,实现随机输出一个姓名。

C语言编程输入一串数字输出英语表达

假设输出25个数字,每隔5个数换行,C语言中如何实现?

编制程序实现输入一个1~7之间的数字,输出相应的星期几,如输入1,则输出星期一

给出一个5位数,按逆序输出它的各位数字。如:输入12345,输出54321.

c编程任意输入一个整数,要求计算并输出此整数的各位数字之和。如:231的各位之和是2+3+1。