拼音翻译成阿拉伯数字_华为SO挑战赛2015年8月

<img src="https://img-blog.csdn.net/20150904101854066" alt="" />
#include <iostream>
#include <string>  
using namespace std;  

void filter(string str)  
{  
	//各字符串的下标即为其对应的阿拉伯数字  
	char *ch[]={"Ling","Yi","Er","San","Si","Wu","Liu","Qi","Ba","Jiu"};  
	int a=0;//存储数字
	int i,j=1,k,len,sum=0,flag;  
	string substr;  
	len=str.length(); 
	for(i=0;i<len;)  
	{    
		//遇到下一个大写字母的停下来
		if(j==len||str[j]<'a')
		{
			
			flag=0;//标记最后是数字还是wan,qian,bai,shi

			substr=str.substr(i,j-i);

			if(!substr.compare("Wan")){
				sum+=a*10000;
			}else if(!substr.compare("Qian")){
				sum+=a*1000;
			}else if(!substr.compare("Bai")){
				sum+=a*100;
			}else if(!substr.compare("Shi")){
				sum+=a*10;
			}else{
				for(k=0;k<10;k++) {              
					if(!substr.compare(ch[k]))  
					{
						flag=1;
						a=k;
						//printf("%d",k);//相等则打印出数字  
						break;  
					} 
				}
			}
			i+=(j-i);//i跳到下一个大写字母开始
			j=i+1;
		}
		else
		{
			j++;
		}
	} 
	if(flag)
		printf("%d\n",sum+a);
	else
		printf("%d\n",sum);
}  
int main()  
{  
	string str;  
	while(cin>>str){
		//cin>>str;
		filter(str);  
	}
	system("pause");
	return 0;  
}  


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

gxy_悦宝

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值