2011年8月3日 星期三

[ACM 10082] WERTYU

 內容 :
打字時一個常見的錯誤就是沒有把手放在正確位置,而是偏右邊一個位置。所以會發生Q被打成WJ被打成K等等的情況。你的任務就是要把打錯的字修正回來。

 輸入說明 :
輸入包含許多列,每列可能包含有數字,空白字元,大寫英文字母(QAZ除外),標點符號(`除外)。
輸出說明 :
對每一列中的每個字元,請輸出在鍵盤(如上圖)上其左邊一個位置的字元。但是輸入中的空白字元,輸出時亦請輸出空白字元。
範例輸入 :
O S, GOMR YPFSU/
URD. ,U [JPMR MI,NRT OD 8346333

範例輸出 :
I AM FINE TODAY.
YES, MY PHONE NUMBER IS 7235222




/**********************************************************************************/
/*  Problem: c054 "WERTYU" from ACM 10082                                         */
/*  Language: C                                                                   */
/*  Result: AC (22ms, 300KB) on ZeroJudge                                         */
/*  Author: diiuuli520 at 2008-08-17 03:04:58                                     */
/**********************************************************************************/
#include <stdio.h>
#include <string.h>
int main(void)
{
  char ch,key[]={'`','1','2','3','4','5','6','7','8','9','0','-','=',
  'Q','W','E','R','T','Y','U','I','O','P','[',']','\\',
  'A','S','D','F','G','H','J','K','L',';','\'',
  'Z','X','C','V','B','N','M',',','.','/','\0'};
  int i,len;
  
  len=strlen(key);
  
  while(ch!=EOF)
  {
    while((ch=getchar())!='\n')
    {
      if(ch==' ')  printf(" ");
      else
      {
        for(i=0;i<len;i++)  if(key[i]==ch) break;
        printf("%c",key[i-1]);
      }
    }
    printf("\n");
    ch=getchar();
    if(ch!=EOF)  ungetc(ch,stdin);
  }
  
  return 0;
}

沒有留言:

張貼留言