Advertisement
zhangsongcui

Convent number to Chinese

Jun 11th, 2011
221
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.58 KB | None | 0 0
  1. #include <string.h>
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. #include <locale.h>
  5.  
  6. int main()
  7. {
  8.     char buf[32], *p/*数字尾*/, *t;
  9.     wchar_t num[] = {L'零', L'壹', L'贰', L'叁', L'肆', L'伍', L'陆', L'柒', L'捌', L'玖'};
  10.     wchar_t str[] = {L'圆', L'拾', L'佰', L'仟', L'万', L'拾', L'佰', L'仟', L'亿', L'拾', L'佰', L'仟'};
  11.     wchar_t str1[] = {L'角', L'分', L'厘'};
  12.     wchar_t result[64], *pr = result;
  13.     unsigned len, flag = 0;
  14.     setlocale(LC_ALL, "");
  15.     printf("Please input the price: ");
  16.     gets(buf);
  17.  
  18.     for (p = buf; isdigit(*p); ++p);
  19.     if (*p == '.')
  20.         *p = '\0', ++p;
  21.     len = strlen(buf) - 1;
  22.     for (t = buf; *t != '\0'; ++t) {
  23.         if (*t == '0') {
  24.             if (len == 4 || len == 8) {
  25.                 if (pr[-1] == num[0])
  26.                     --pr;
  27.                 if (!(len == 4 && pr[-1] == str[8])) {
  28.                     *pr++ = str[len];
  29.                 }
  30.                 flag = 0;
  31.             }
  32.             if (flag == 0) {
  33.                 *pr++ = num[0], flag = 1;
  34.             }
  35.             --len;
  36.         } else {
  37.             flag = 0;
  38.             *pr++ = num[*t - '0'];
  39.             *pr++ = str[len--];
  40.         }
  41.     }
  42.     if (*p=='\0') {
  43.         pr[-1] = str[0];
  44.         *pr++ = L'整';
  45.     } else {
  46.         for (len = 0; *p && len<3; ++len) {
  47.             if (*p == '0') {
  48.                 ++p;
  49.                 continue;
  50.             }
  51.             *pr++ = num[*p++ - '0'];
  52.             *pr++ = str1[len];
  53.         }
  54.     }
  55.     *pr = '\0';
  56.     wprintf(L"%s\n", result);
  57.     return 0;
  58. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement