POJ 2975 Caesar密码 解题报告
POJ 2975 Caesar密码 解题报告
编号:2975
考查点:字符串处理
思路:超级水题,字符映射关系而已,问题是读入带空格的字符有点麻烦..
提交情况:一直在读入一行数据的方法,gets()和cin.getline()那纠结.后来出现一个判断的问题,换成gets()方法后就直接AC了
Source Code:
#include <iostream>
#include <string.h>
using namespace std;
int main()
{
char ch[201];
memset(ch,0,201*sizeof(char));
char flag[20];
memset(flag,0,20*sizeof(char));
gets(flag);
while (strcmp(flag,"START")==0)
{
gets(ch);
char* pch = ch;
while (*pch)
{
if (*pch>='A'&&*pch<='Z')
{
*pch = (*pch-'A'-5+26)%26 + 'A';
}
pch++;
}
cout<<ch<<endl;
gets(flag);
gets(flag);
}
return 0;
}
#include <string.h>
using namespace std;
int main()
{
char ch[201];
memset(ch,0,201*sizeof(char));
char flag[20];
memset(flag,0,20*sizeof(char));
gets(flag);
while (strcmp(flag,"START")==0)
{
gets(ch);
char* pch = ch;
while (*pch)
{
if (*pch>='A'&&*pch<='Z')
{
*pch = (*pch-'A'-5+26)%26 + 'A';
}
pch++;
}
cout<<ch<<endl;
gets(flag);
gets(flag);
}
return 0;
}
总结:读入一行带空格的字符串最好用gets(),排除空格和,的判断导致了WA,应使用在A到Z里面的判断。书上继续使用散列映射,我用的模除,性能啥的也差不多应该。
By Ns517
Time 09.01.22