T111061 人工智障(第一周周赛D)
题目背景
691最近沉迷玩《炉石传说》。今天,他在打游戏的时候被挂机脚本吊锤,很不开心,就想自己写一个智能对战刷金币的程序。
不过因为写这种程序是违法的,所以691打算写其它的人工智能程序——自动聊天机。
但是由于这个人是条懒狗,所以你需要帮助他完成程序的部分内容。
题目描述
每行读入一个句子,首先你要对这个句子进行格式化操作:
我们定义英文单词:英文单词指两边为空格,边界,标点符号的一个连续字符串,比如句子 I love you!中存在三个单词: I love you 。
首先你要把相邻单词间的多个空格换成1个空格,把行首尾的空格全部删掉,把标点符号前面的空格删掉,注意正确操作之后标点符号可能会出现在行首或者有多个标点符号相连;
其次你需要把所有的"?"换成"!";
最后更换单词:将所有的"I"或"me"换成"you",所有的"you"换成"I".
请注意这里的更换指的是整个单词替换,比如单词"yourself"是不能更换为"Iself"的.
Windows环境下(主要是本地测试中)换行符可能为\r\n,而linux下文件的换行符为\n.本题所有数据换行均只用单个\n表示。
为了避免不必要的麻烦,我们提供一种简便的读取每行字符串的方法,仅供参考;
```cpp
char bin[1010];
fgets(bin, 1010, stdin);//读取一行字符串到bin这个字符数组中,串的最大长度为1010
work(bin);
int work(char *s)//清除字符串末尾所有的\n或\r,同时返回字符串有效长度的大小
{
int tot = strlen(s) - 1;
while (tot >= 0 && (s[tot] == '\n' || s[tot] == '\r')) { s[tot--] = '\0'; }
return tot + 1;
}
```
输入格式
第一行一个数字T,代表数据的组数。
之后第2行到第T+1行,每行一个英文句子。保证句子中只含有小写字母(不含i)或单词”I”和标点符号( ? ! . , ),且标点符号不会处于单词中间;
输出格式
共T行,每行一个字符串,代表操作之后的句子。
说明/提示
我们保证对全部数据有
1