题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1048
解题思路:对于每租数都要有输入三行。如果输入ENDOFINPUT,就结束
对于必要输入的第一行和最后一行,用一个string的变量保存,对于用户想转化的字符串用另一个string的变量保存,且要保证用户输入可传入空格,可用getchar和getlne输入
字符转化:
未转换前 : ABCDEFGHIJKLMNOPQRSTUVWXYZ
转化后: VWXYZABCDEFGHIJKLMNOPQRSTU
可以很容易发现,前5个转化后的ASCII码表比为转换的多21,其后的少5
#include <iostream>
#include <stdio.h>
#include <string>
using namespace std;
int main()
{
int i;
string a,s;
while(cin>>a && a!="ENDOFINPUT")
{
getchar();
getline(cin,s);
cin>>a;
for(i=0;i<s.length();i++)
{
if(s[i]>='A'&&s[i]<='E')
{
s[i]+=21;
}
else if(s[i]>='F'&&s[i]<='Z')
{
s[i]-=5;
}
}
cout<<s<<endl;
}
return 0;
}
解题感受:我真的好心累,就被输入给坑了,感觉又白了几根头发。