PAT 1082. Read Number in Chinese (25)

来源:互联网 发布:国外域名需要备案吗 编辑:程序博客网 时间:2024/05/17 00:58

1082. Read Number in Chinese (25)

时间限制
400 ms
内存限制
65536 kB
代码长度限制
16000 B
判题程序
Standard
作者
CHEN, Yue

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


哇。这小破题规则贼繁琐。关键在于0的处理。


#include <iostream>#include<stdio.h>#include<queue>#include<algorithm>#include<string.h>#include<string>#include<vector>using namespace std;int main(){   string a;   cin>>a;   int flag=0;   int kg=0;   if(a.size()==1)   {      if(a[0]=='0')       {cout<<"ling";return 0;}   }   if(a.size()==2)   {       if(a[0]=='-'&&a[1]=='0')         {cout<<"ling";return 0;}    //    if(a[0]=='-')   }    char path[15];   int p=0;   if(a[0]=='-') {cout<<"Fu";flag=1;kg=1;}   {       for(int i=a.size()-1;i>=flag;i--)          path[p++]=a[i];       char last=0;       for(int i=p-1;i>=0;i--)      {          int tmp=path[i]-'0';          switch(tmp)          {              case 0:if(kg==1&&last!=0) {cout<<' ';kg=1;cout<<"ling";}break;              case 1:if(kg==1) cout<<' ';kg=1;cout<<"yi";break;              case 2:if(kg==1) cout<<' ';kg=1;cout<<"er";break;              case 3:if(kg==1) cout<<' ';kg=1;cout<<"san";break;              case 4:if(kg==1) cout<<' ';kg=1;cout<<"si";break;              case 5:if(kg==1) cout<<' ';kg=1;cout<<"wu";break;              case 6:if(kg==1) cout<<' ';kg=1;cout<<"liu";break;              case 7:if(kg==1) cout<<' ';kg=1;cout<<"qi";break;              case 8:if(kg==1) cout<<' ';kg=1;cout<<"ba";break;              case 9:if(kg==1) cout<<' ';kg=1;cout<<"jiu";break;          }          if(tmp)          switch(i)            {                case 1:if(kg==1) cout<<' ';kg=1;cout<<"Shi";                if(path[0]=='0')                  {                      last=0;goto tutu;                  }                break;                case 2:if(kg==1) cout<<' ';kg=1;cout<<"Bai";                if(path[1]=='0'&&path[0]=='0')                  {                      last=0;goto tutu;                  }                break;                case 3:if(kg==1) cout<<' ';kg=1;cout<<"Qian";                if(path[2]=='0'&&path[1]=='0'&&path[0]=='0')                  {                      last=0;goto tutu;                  }                break;              //  case 4:if(kg==1) cout<<' ';kg=1;cout<<"Wan";break;                case 5:if(kg==1) cout<<' ';kg=1;cout<<"Shi";                if(path[4]=='0')                  {                      last=0;goto tutu;                  }                break;                case 6:if(kg==1) cout<<' ';kg=1;cout<<"Bai";                if(path[5]=='0'&&path[4]=='0')                  {                      last=0;goto tutu;                  }                break;                case 7:if(kg==1) cout<<' ';kg=1;cout<<"Qian";                  if(path[6]=='0'&&path[5]=='0'&&path[4]=='0')                  {                      last=0;goto tutu;                  }                    break;              //  case 8:if(kg==1) cout<<' ';kg=1;cout<<"Yi";break;                case 9:if(kg==1) cout<<' ';kg=1;cout<<"Shi";                  if(path[8]=='0')                  {                      last=0;goto tutu;                  }                break;            }           last=tmp;           tutu:               if(i==4) {cout<<" Wan";last=999;}           if(i==8) {cout<<" Yi";last=999;}       }   }   return 0;}


原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 同学群里有人发低俗信息怎么办 小孩读英语绘本大人不会翻译怎么办 东西掉到手刹缝里面了怎么办 泰拉瑞亚猩红之地蔓延到家里怎么办 三星r.467玩dnf闪退怎么办 美团外卖不小心撞到汽车怎么办 如果你在战场上遇到华裔美军怎么办 衣服洗完了干了后发黄怎么办 毛衣起球怎么办学会这几个小妙招 小车没电了打不着火怎么办 老婆花钱大手大脚又要我给钱怎么办 住酒店手机id被劫持了怎么办 孩子老是送玩具给别的小朋友怎么办 老板总想和我谈人生怎么办gl 导师让用师姐的数据写论文怎么办 签了平面模特协议想违约怎么办 福州96年以前社保手册丢了怎么办 被老师缴的手机弄没了怎么办 户口在成都医保在德阳生孩子怎么办 微课掌上通看不到孩子班级圈怎么办 微课掌上通的录音错误是怎么办 微课视频录制ppt里面音乐怎么办 老师在街上和别人吵起来了怎么办 手机录屏传到爱剪辑变成竖屏怎么办 尔雅通识课程考试忘记做了怎么办 尔雅通识课过了课程完成时间怎么办 微信账号没冻结登录不了怎么办 微信解封电话号码没有电话号怎么办 ps中智能对象不能直接编辑怎么办 工资低奖金高银行流水不够怎么办 我水费交了自来水公司不给开怎么办 艺考文化分数差4分二本怎么办 学信网手机号换了密码忘记了怎么办 自考毕业证学信网上查不到怎么办 苹果手机自带浏览器证书过期怎么办 手机连接工行证书介质失贩怎么办 老公要带与小三生的孩子回家怎么办 小三怀孕打胎后还是很爱老公怎么办 小三怀孕开不到引产证明怎么办 如何处理老公和小三有了孩子怎么办 老公出轨回归后还和小三联系怎么办