【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...

      #include<iostream>
      #include<stdio.h>
      #include<stdlib.h>
      #include<math.h>
      #include<string.h>
      #include<string>
      #include<algorithm> 
      #include<map>
      #include<vector>
      #include<queue> 
      using namespace std;
      //key:每节每节地处理,在该节中遍历每位,如果当前位非首位且为0才令flag=true
      //如果当前位非0并且flag为true则要输出ling.
      //注意十百千 和 万亿 单位的输出
      char num[10][5]={  //num[0]="ling" ,num[1]="yi".....
     	"ling","yi","er","san","si","wu","liu","qi","ba","jiu"
      };
      char wei[5][5]={"Shi","Bai","Qian","Wan","Yi"};
      int main(){
     	char str[15];
      	cin>>str;  //按字符串方式输入数字
     	int len=strlen(str);  //字符串长度
     	int left=0,right=len-1;   //left与right分别指向字符串首尾元素
     	if(str[0] == '-'){ //如果是负数,则输出"Fu",并把left右移动右移动一位
     		printf("Fu");
      		left++;
      	}
     	while(left +4<= right){
      		right -=4;  //将right每次左移4位,直到left与right在同一节
      	}
     	while(left < len){  //循环每次处理数字的一节(4位或小于4位)
     		bool flag=false;  //flag==false表示没有累计的0
     		bool isPrint=false; //isPrint==false表示该节没有输出过其中的位
     		while(left <= right){  //从左至右处理数字中某节的某一位
     			if(left >0 && str[left] == '0'){  //如果当前位为0
      				flag=true;
      			}else{  //如果当前位不为0
     				if(flag==true){ //如果存在累积的0
     					printf(" ling");
      					flag=false;
      				}
     				//只要不是首尾(包括负号),后面的每一位前都要输出空格
     				if(left > 0)  printf(" ");
     				printf("%s",num[str[left]-'0']);//输出当前的数字f
      				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;  //right右移动4位,输出下一节
      	}
     	system("pause");
         return 0;
      }
  
 

 

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

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

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

评论(0

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

全部回复

上滑加载中

设置昵称

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

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

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