可能是因为输入里面有换行符?我的只识别一行字符串的程序没过。
又是getchar(),用了之后存都不用存,一个字符处理一次,直接输出,很适合这类只需处理单个字符的题。
#include <bits/stdc++.h>
using namespace std;
char mp[]="`1234567890-=QWERTYUIOP[]\\ASDFGHJKL;'ZXCVBNM,./";
int main() {
int i,c;
while ((c=getchar())!=EOF) {
for (i=1;mp[i]&&mp[i]!=c;i++);
if (mp[i]) printf("%c",mp[i-1]);
else printf("%c",c);
}
return 0;
}