结论:gets和getline前有scanf或cin时,需要getchar读掉用户输入的回车键
#include <iostream>
#include<string>
using namespace std;
int main()
{
string str1,str;
while(cin>>str1)
{
getchar(); //吸收空格
if(str1!="ENDOFINPUT")
{
getline(cin,str);
cin>>str1;
int i = 0;
for(i=0;str[i]!='\0';i++)
{
if(str[i]<='E' && str[i]>='A')
str[i]+=21;
else if(str[i]>='F' && str[i]<='Z')
str[i]-=5;
}
cout<<str<<endl;
}
}
return 0;
}