华为2017秋招(8.30东北地区)在线笔试中英文字符串(电话号码)互换

#include<iostream>
#include<string>
#include<vector>
using namespace std;
int main()
{
	string english[10] = {"One","Two","Three","Four","Five","Six","Seven","Eight","Nine","Zero"};
	string chinese[10] = {"Yi","Er","San","Si","Wu","Liu","Qi","Ba","Jiu","Ling"};
	string s;
	cin >> s;
	vector<string>vs,vs1,vs2;
	unsigned int len = s.length();
	unsigned int i = 0;
	int wordcounter = 0;//单词计数器
	while (i < len)//拆字符串成单词(字符串)数组
	{
		if (s[i] >= 'A'&&s[i] <= 'Z'&& i < len)
		{
			wordcounter++;
			unsigned int j = 0;
			char *s1 = new char;
			s1[j] = s[i];
			i++; j++;
			while (s[i] >= 'a'&&s[i] <= 'z'&& i < len)
			{
				s1[j] = s[i];
				i++; j++;
			}
			s1[j] = '\0';
			vs.push_back(s1);
		}
		else
		{
			cout << "Error:首字母请大写!" << endl;//第一个单词不是大写开头,错误!退出!
			system("pause");
			return 1;
		}
	}
	for (auto i = vs.begin(); i < vs.end(); i++)//替换掉Double
	{
		if (*i == "Double")
			*i = (*(i + 1));
		else
			continue;
	}

	int flag = 0, flag1 = 0, flag2 = 0;
	for (string i : vs)//将拆成的单词替换为对应的单词格式,然后存储在vector中
	{
		for (int j = 0; j < 10; j++)
		{
			if (i == chinese[j])//替换成英文
			{
				flag1=1;
				vs1.push_back(english[j]);
				break;//已找到,退出这10次词库比对
				//cout << english[j];
			}
			else if (i == english[j])//替换成中文
			{
				flag2=1;
				vs2.push_back(chinese[j]);
				break;//已找到,退出这10次词库比对
				//cout << chinese[j];
			}
			else// (i != chinese[j] && i != english[j])既不是中文也不是英文,标志位++
			{
				flag++;
				if (flag == 10)//单词库中单词比对完了仍没有找到对应的,报错退出!
				{
					cout << "Error:输入中含非法单词!" << endl;
					system("pause");
					return 1;
				}
				continue;
			}			
		}
	}
	if (vs1.size() != wordcounter && vs2.size() != wordcounter)//错误情况  //OneTwo  OneYi  Oneyi
	{//向量中存的单词数目均不等于拆得的单词数,说明存在输入中英文混用,报错退出!
		cout << "Error:存在中英文混用!" << endl;
		system("pause");
		return 1;
	}
	else//输出
	{
		if (flag1==1)
		for (string i : vs1)
			cout << i;
		else
		for (string i : vs2)
			cout << i;
	}
	system("pause");
	return 0;

	
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值