题目见pta 天梯赛 L1-064
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n;
cin>>n;
getchar(); //用getline之前一定要吸收空格
string s[15];
for(int i=0;i<n;i++)
getline(cin,s[i]); //输入一行
for(int i=0;i<n;i++)
{
string temp(s[i]);
cout<<s[i]<<endl<<"AI:";
for(int j=0;j<temp.length();j++){
if(isalnum(temp[j])) //如果不是字符和数字则添加空格
{
if(temp[j]!='I')
temp[j]=tolower(temp[j]);
}
else
{
temp.insert(j," ");
j++;
}
if(temp[j]=='?')
temp[j]='!';
}
//cout<<"temp:"<<temp<<endl;
string tmp;
string str[1001];
int cnt=0;
stringstream ss(temp); //此时的temp已经把字符串用空格分开
while(ss>>tmp) //利用ss重新定向输入流进入tmp(会按空格输入)
str[cnt++]=tmp;
if(!isalnum(str[0][0])) //由于答案前要加空格如果没有这一句
cout<<" "; //,且第一个字符不是数字或字母,则就会失去这个空格
for(int j=0;j<cnt;j++)
{
if(!isalnum(str[j][0]))
cout<<str[j];
else if(str[j]=="can"&&str[j+1]=="you")
{
cout<<" I can";
j++;
}
else if(str[j]=="could"&&str[j+1]=="you")
{
cout<<" I could";
j++;
}
else if(str[j]=="I"||str[j]=="me")
cout<<" you";
else
cout<<" "<<str[j];
}
cout<<endl;
}
return 0;
}