题解
#include <cstdio>
int main() {
char c;
while((c = getchar()) != EOF) {
if(c >= 'a' && c <= 'z') {
putchar((c + 3) % 'a' % 26 + 'a');
} else if(c >= 'A' && c <= 'Z') {
putchar((c + 3) % 'A' % 26 + 'A');
} else putchar(c);
}
return 0;
}
反思
需要注意的是,这里的算法得益于’a’到’z’、’A’到’Z’的ASCII码够大,如果’A’+26 >= 2*’A’,这种算法就不可套用了。