#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;
}
华为2017秋招(8.30东北地区)在线笔试中英文字符串(电话号码)互换
最新推荐文章于 2023-04-07 22:17:44 发布