一个简单的字符映射问题,将输入字符映射为键盘上该字符左边的字符,题目里已经排除了各种非法输入。
可以用一个常量字符数组保存键盘上的合法输入字符,每次读取一个输入字符后,在数组中寻找该字符,找到就将其前一个(即左边的)字符打印出来,没找到就直接输出(即空格)。
主要技巧就是常量数组的应用。
#include <stdio.h>
#include <string.h>
int main() {
// 注意要把'\'进行转义
char s[] = {"1234567890-=QWERTYUIOP[]\\ASDFGHJKL;'ZXCVBNM,./"};
char c;
int len = strlen(s);
while ((c = getchar()) != EOF) {
int i;
for (i = 0; i < len; i++) {
if (s[i] == c) {
break;
}
}
if (i != len) {
putchar(s[i - 1]); // 找到了就输出前一个字符
}
else {
putchar(c); // 没找到就原样输出
}
}
}
网友评论