fork download
  1. #include <stdio.h>
  2. #include <string.h>
  3.  
  4. void f(int n)
  5. {
  6. char *nums[] = {"", "一", "二", "三", "四", "五", "六", "七", "八", "九"};
  7. char *uni1[] = {"", "十", "百", "千"};
  8. char *uni2[] = {"", "万", "億", "兆", "京", "垓", "秭", "穰", "溝", "澗", "正", "載", "極", "恒河沙", "阿僧祇", "那由他", "不可思議", "無量大数"};
  9. char *b[256];
  10. int k = 0;
  11. int i = 0;
  12.  
  13. for (int m = n; m > 0; m = m / 10000)
  14. {
  15. int o = m % 10000;
  16.  
  17. if (o > 0)
  18. {
  19. b[k++] = uni2[i];
  20. }
  21.  
  22. int j = 0;
  23.  
  24. for (; o > 0; o = o / 10)
  25. {
  26. int p = o % 10;
  27.  
  28. if (p > 0)
  29. {
  30. b[k++] = uni1[j];
  31. }
  32.  
  33. if ((p > 1) || (j == 0))
  34. {
  35. b[k++] = nums[p];
  36. }
  37.  
  38. j = j + 1;
  39. }
  40.  
  41. i = i + 1;
  42. }
  43.  
  44. char r[256] = {0};
  45.  
  46. for (int l = k - 1; l >= 0; l--)
  47. {
  48. strcat(r, b[l]);
  49. }
  50.  
  51. printf("%d %s\n", n, r);
  52. }
  53.  
  54. int main(void)
  55. {
  56. f(1);
  57. f(12);
  58. f(123);
  59. f(1234);
  60. f(12345);
  61. f(123456);
  62. f(1234567);
  63. f(12345678);
  64. f(123456789);
  65. return 0;
  66. }
  67.  
Success #stdin #stdout 0s 1832KB
stdin
Standard input is empty
stdout
1 一
12 十二
123 百二十三
1234 千二百三十四
12345 一万二千三百四十五
123456 十二万三千四百五十六
1234567 百二十三万四千五百六十七
12345678 千二百三十四万五千六百七十八
123456789 一億二千三百四十五万六千七百八十九