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

将阿拉伯数字转化为中文数字,如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");

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值