C3L-UVa10082-WERTYU

平台:

UVa Online Judge

題號:

10082 - WERTYU

題目連結:

https://onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=12&page=show_problem&problem=1023

題目說明:

输入时,键盘往右错了一位。如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 }

猜你喜欢

转载自www.cnblogs.com/lemonforce/p/13199993.html
今日推荐