1,WERTYU
把手放在键盘上时,稍不注意就会往右错一位。这样,输入Q会变成输入W,输入J会变成输入K等。
输入一个错位后敲出的字符串(所有字母均大写),输出打字员本来想打出的句子。输入保证合法,即一定是错位之后的字符串。
样例输入:
O S, GOMR YPFSU/
样例输出:
I AM FINE TODAY.
【分析】可以用if switch语句,但是太暴力了,繁琐!
一个较好的方法是使用常量数组。
#include <stdio.h>
char s[]= "`1234567890-=QWERTYUIOP[]\\ASDFGHJKL;'ZXCVBNM,./";
int main()
{
int i, c;
while((c = getchar()) != EOF){
for (i = 1; s[i] && s[i] != c; i++); /*//找错位之后的字符在常量表中的位置,即i,此处for的作用是单纯地做循环,不做任何具体操作*/
if (s[i])
putchar(s[i-1]);
else
putchar(c);
}
return 0;
}
~~ 善用常量数组往往能简化代码。定义常量数组时无须指明大小,编译器会计算。
在常量数组c中为什么有 \ 这”两个“字符呢?
我们应该想到转义字符这个概念。不只是在C语言中,在Java、C++中也同样,用 \ 这个字符来表示真正意义上的反斜线即 \ 。