POJ 1298 字母加密 STL String的使用及审题重要性

这题很简单,但由于审题不清WA了很多次,太不应该

Any non-alphabetical character should remain the same, and all alphabetical characters will be upper case.

即只要不是字母就不变,

如下写法错误

if(*it == ' ' || *it == ',') continue;

另外,对C++ String的使用中如何将空格也输入也是一个难点,getline不太好用,这里用了一个C的string作为中间量,借助C函数gets完成

#include <iostream> #include <string>//C++ string using namespace std; int main(){ char ss[105]; string s; while (gets(ss)) { s = ss; if (!s.compare("ENDOFINPUT")) break; if (!s.compare("START") || !s.compare("END")) { s.erase(); continue; } string::iterator it;//string 迭代器 for (it = s.begin(); it != s.end(); it++) {//注意非字母的一律不变,这个陷阱一定小心 /* if(*it == ' ' || *it == ',') continue;*/ if(*it >= 'A' && *it <= 'Z'){ if (*it - 5 >= 'A') { *it = *it - 5; } else *it = *it - 5 + 26; } } cout<<s<<endl; //清空s s.erase(); } return 0; } 

你可能感兴趣的:(POJ 1298 字母加密 STL String的使用及审题重要性)