平台:
UVa Online Judge
題號:
10082 - WERTYU
題目連結:
題目說明:
输入时,键盘往右错了一位。如Q变成了W。输入一个错位后敲出的字符串(所有字母均大写),输出打字员本来想打出的句子。输入保证合法,即一定是错位之后的字符串。例如输入中不会出现大写字母A。
範例輸入:
O S, GOMR YPFSU/
範例輸出:
I AM FINE TODAY.
解題方法:
用常量数组存储键位。调用std::strchr(str,ch)。如果找到了,就输出它前面一个,如果没找到,就输出自身(为了鲁棒性)。
1 #include <cstdio> 2 #include <cstring> 3 4 int main() { 5 const char* str = { "`1234567890-=QWERTYUIOP[]\ASDFGHJKL;'ZXCVBNM,./" }; 6 int c = ' '; 7 while ((c = getchar()) != EOF) { 8 //s是字符串 9 const char* s; 10 //字符串中寻找特定字符 11 //strchr返回指向 str 找到的字符的指针,若未找到该字符则为空指针 12 if (s = strchr(str,c)) { 13 putchar(s[-1]); 14 } 15 else { 16 putchar(c); 17 } 18 } 19 return 0; 20 }