【1082】Read Number in Chinese (25 分)

举报
野猪佩奇996 发表于 2022/01/23 00:07:14 2022/01/23
【摘要】 #include<iostream>#include<stdio.h>#include<stdlib.h>#include<math.h>#include<string.h>#include<string>#include<algorithm> #in...

  
  1. #include<iostream>
  2. #include<stdio.h>
  3. #include<stdlib.h>
  4. #include<math.h>
  5. #include<string.h>
  6. #include<string>
  7. #include<algorithm>
  8. #include<map>
  9. #include<vector>
  10. #include<queue>
  11. using namespace std;
  12. //key:每节每节地处理,在该节中遍历每位,如果当前位非首位且为0才令flag=true
  13. //如果当前位非0并且flag为true则要输出ling.
  14. //注意十百千 和 万亿 单位的输出
  15. char num[10][5]={ //num[0]="ling" ,num[1]="yi".....
  16. "ling","yi","er","san","si","wu","liu","qi","ba","jiu"
  17. };
  18. char wei[5][5]={"Shi","Bai","Qian","Wan","Yi"};
  19. int main(){
  20. char str[15];
  21. cin>>str; //按字符串方式输入数字
  22. int len=strlen(str); //字符串长度
  23. int left=0,right=len-1; //left与right分别指向字符串首尾元素
  24. if(str[0] == '-'){ //如果是负数,则输出"Fu",并把left右移动右移动一位
  25. printf("Fu");
  26. left++;
  27. }
  28. while(left +4<= right){
  29. right -=4; //将right每次左移4位,直到left与right在同一节
  30. }
  31. while(left < len){ //循环每次处理数字的一节(4位或小于4位)
  32. bool flag=false; //flag==false表示没有累计的0
  33. bool isPrint=false; //isPrint==false表示该节没有输出过其中的位
  34. while(left <= right){ //从左至右处理数字中某节的某一位
  35. if(left >0 && str[left] == '0'){ //如果当前位为0
  36. flag=true;
  37. }else{ //如果当前位不为0
  38. if(flag==true){ //如果存在累积的0
  39. printf(" ling");
  40. flag=false;
  41. }
  42. //只要不是首尾(包括负号),后面的每一位前都要输出空格
  43. if(left > 0) printf(" ");
  44. printf("%s",num[str[left]-'0']);//输出当前的数字f
  45. isPrint=true; //该节至少有一位被输出
  46. if(left != right){ //某节中除了个位外,都要输出十百千
  47. printf(" %s",wei[right-left-1]);
  48. }
  49. }
  50. left++;
  51. }
  52. if(isPrint == true && right !=len-1){ //只要不是个位,就输出万或亿
  53. printf(" %s",wei[(len-1-right)/4+2]);
  54. }
  55. right+=4; //right右移动4位,输出下一节
  56. }
  57. system("pause");
  58. return 0;
  59. }

 

文章来源: andyguo.blog.csdn.net,作者:山顶夕景,版权归原作者所有,如需转载,请联系作者。

原文链接:andyguo.blog.csdn.net/article/details/99748122

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。