首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

C 語言鍵盤錯位輸入還原:字符映射表查找邏輯解析

     編輯:程式設計綜合問答

代碼功能

輸入鍵盤上鍵位右側相鄰字符(如輸入 `S` 實為想打 `A`),程序輸出原意字符。

核心邏輯解析

char *s = "`1234567890-=QWERTYUIOP[]\\ASDFGHJKL;'ZXCVBNM,./";
while ((c = getchar()) != EOF) {
  for (i = 1; s[i] && s[i] != c; i++); // 從索引1開始查找匹配字符
  if (s[i]) putchar(s[i-1]);           // 找到則輸出其左鄰字符
  else putchar(c);                     // 未找到(如換行、空格)原樣輸出
}

關鍵點 `s[i] && s[i] != c`

  • s[i]:檢查未到達字符串結尾(`\0`),利用 C 語言字符串以 `\0` 結束特性。
  • s[i] != c:未匹配目標字符。
  • 邏輯與:未結束 且 未匹配 → 繼續循環;任一為假(結束或匹配)則退出循環。

代碼規範建議

  • 補全頭文件:#include <stdio.h>
  • 主函數返回類型:int main(void)
  • 縮進清晰,避免將賦值與判斷寫在同一行(如 `while ((c=getchar())!=EOF)` 可拆分)。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved