一個(gè)簡(jiǎn)單的字符映射問題褥民,將輸入字符映射為鍵盤上該字符左邊的字符洗搂,題目里已經(jīng)排除了各種非法輸入。
可以用一個(gè)常量字符數(shù)組保存鍵盤上的合法輸入字符撵颊,每次讀取一個(gè)輸入字符后,在數(shù)組中尋找該字符逞刷,找到就將其前一個(gè)(即左邊的)字符打印出來夸浅,沒找到就直接輸出(即空格)。
主要技巧就是常量數(shù)組的應(yīng)用题篷。
#include <stdio.h>
#include <string.h>
int main() {
// 注意要把'\'進(jìn)行轉(zhuǎn)義
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]); // 找到了就輸出前一個(gè)字符
}
else {
putchar(c); // 沒找到就原樣輸出
}
}
}