题目描述
Michel需要评审一份文件,但是却有另一件紧急事情要处理,于是请好友Jack帮忙评审一下。当Machel看到Jack评审结果后,发现一个问题,Jack是以第一人称评审的,现在Machel需要将Jack评审中第一人(we)和第二人称(you)进行置换,现在需要请你帮忙完成这个工作
输入
Jack的评审文字单词之间是以空格" "或者标准标点符号"," "." "?" "!" ";"作为分隔符的评审文字内容不超过1024字符长度。
输出
Machel需要的评审文字
样例输入
You are students,you should not get the weapon.
样例输出
We are students,we should not get the weapon.
#include "stdio.h"
#include <iostream>
using namespace std;
#define MAX_SIZE (1024)
int main()
{
int i = 0;
int j = 0;
char szInput[MAX_SIZE * 2];
memset(szInput,0,sizeof(char) * MAX_SIZE * 2);
char *szOutput = (char*)malloc(MAX_SIZE * 2);
memset(szOutput,0,sizeof(char) * MAX_SIZE * 2);
gets(szInput);
if (strlen(szInput) >= MAX_SIZE)
{
printf("Err:Out of range!");
return 0;
}
while ('\0' != szInput[i])
{
//查找you(You),将you(You)换为we(We)
if (('Y' != szInput[i]) && ('y' != szInput[i]) )
{
//查找we,将we(We)换为you(You)
if (('W' != szInput[i]) && ('w' != szInput[i]) )
{
szOutput[j] = szInput[i];
i++;
j++;
}
else
{
if ('\0' == szInput[i+1])
{
szOutput[j] = szInput[i];
break;
}
if ( 'e' != szInput[i+1])
{
szOutput[j] = szInput[i];
szOutput[j+1] = szInput[i+1];
i = i+2;
j = j+2;
}
else
{
//we之后不能紧跟着字母,否则不替换
if (('a'<= szInput[i+2]&&'z'>=szInput[i+2])
||('A'<= szInput[i+2]&&'Z'>=szInput[i+2]))
{
szOutput[j] = szInput[i];
i++;
j++;
}
else
{
szOutput[j] = szInput[i] +2;
szOutput[j+1] = szInput[i+1] +10;
szOutput[j+2] = 'u';
j = j+3;
i = i+2;
}
}
}
}
else
{
if ('\0' == szInput[i+1])
{
szOutput[j] = szInput[i];
break;
}
if ( 'o' != szInput[i+1])
{
szOutput[j] = szInput[i];
szOutput[j+1] = szInput[i+1];
i = i+2;
j = j+2;
}
else
{
if ('\0' == szInput[i+2])
{
szOutput[j] = szInput[i];
szOutput[j+1] = szInput[i+1];
break;
}
if ('u' != szInput[i+2])
{
szOutput[j] = szInput[i];
szOutput[j+1] = szInput[i+1];
szOutput[j+2] = szInput[i+2];
i = i+3;
j = j+3;
}
else
{
//you不能紧跟字母,否则不替换
if (('a'<= szInput[i+3]&&'z'>=szInput[i+3])
||('A'<= szInput[i+3]&&'Z'>=szInput[i+3]))
{
szOutput[j] = szInput[i];
i++;
j++;
}
else
{
szOutput[j] = szInput[i] -2;
szOutput[j+1] = szInput[i+1] -10;
j = j+2;
i = i+3;
}
}
}
}
}
cout<<szOutput<<endl;
free(szOutput);
szOutput = NULL;
return 0;
}