1082. Read Number in Chinese (25)

Given an integer with no more than 9 digits, you are supposed to read it in the traditional Chinese way. Output "Fu" first if it is negative. For example, -123456789 is read as "Fu yi Yi er Qian san Bai si Shi wu Wan liu Qian qi Bai ba Shi jiu". Note: zero ("ling") must be handled correctly according to the Chinese tradition. For example, 100800 is "yi Shi Wan ling ba Bai".

Input Specification:

Each input file contains one test case, which gives an integer with no more than 9 digits.

Output Specification:

For each test case, print in a line the Chinese way of reading the number. The characters are separated by a space and there must be no extra space at the end of the line.

Sample Input 1:

-123456789

Sample Output 1:

Fu yi Yi er Qian san Bai si Shi wu Wan liu Qian qi Bai ba Shi jiu

Sample Input 2:

100800

Sample Output 2:

yi Shi Wan ling ba Bai
复制代码
#include<cstdio>
#include<cstring>
char num[10][5] = {
    "ling","yi","er","san","si","wu","liu","qi","ba","jiu"
};
char wei[6][5] = {
    "Shi","Bai","Qian","Wan","Yi"
};

 int main(){
   char str[15];
   gets(str);
   int len = strlen(str);
   int left = 0,right = len - 1;
   if(str[0] == '-') {
       printf("Fu");
       left++;
   }
   
   while(left + 4 <= right){
       right -= 4;
   } 
   while(left < len){
       bool flag = false;
       bool isprint = false;
       while(left <= right){
           if(left > 0&&str[left] == '0'){ //left>0条件不加会出现那种情况的错误呢 
               flag = true;
           }else{
               if(flag == true){
                   printf(" ling");
                   flag = false;
               }
               if(left > 0) printf(" ");
               printf("%s",num[str[left] - '0']);
               isprint = true;
               if(left < right) printf(" %s",wei[right - left -1]);
           }
           left++;
       }
       if(isprint == true && right != len - 1){
           printf(" %s",wei[(len - 1 - right)/4 + 2]);
       }
       right += 4;
   }
  
  return 0;
}
复制代码

 

posted @   王清河  阅读(207)  评论(0编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示