指定字符串移动
对我而言,这道题最需要提醒自己的是,务必看清题意。
按我以往的思路,我会着手解决主要问题,比如这道题的主要问题是,如何做到把字符串向后移动五位,而主要问题解决了,这道题还没有完,因为我经常忽略细节问题(格式问题对我来说就是细节问题),说到这个,就必须说说读题,虽然是英文题目,但是依靠翻译还是感觉没那么顺畅,很多题目里要求的细枝末节的东西就容易忽视了,或者看不明白之类的问题,说实话如果这道题不给样例,我真的不知道要持续输入,所以一开始我没有写while。
还有一点就是题目说的是只有大写,我理解成了小写要转换成大写。
# include<iostream>
# include <string.h>
using namespace std;
int main()
{
char p[220];
int c=0;
while(gets(p)) //修改的第一步
{
if(strcmp(p,"START")==0)
continue;
if(strcmp(p,"END")==0)
continue;
if(strcmp(p,"ENDOFINPUT")==0)
break; //修改的第二部
for(int i=0;i<strlen(p);i++)
{
if(p[i]>='A'&&p[i]<='Z'||p[i]>='a'&&p[i]<='z')
{
// if(p[i]>='a'&&p[i]<='z')
// {
// p[i]=p[i]-32;
// }
if(p[i]>='A'&&p[i]<='E')
{
p[i]=p[i]+21;
}
else
{
p[i]=p[i]-5;
}
// printf("%c",p[i]);
}
// else
// {
printf("%c",p[i]);//合并在一起也是可以的,
//因为无论是进入if还是不进入都要执行
// }
} printf("\n");
}
}
综上所述,请学好英语。