2012年1月5日 星期四

ACM 10082 WERTYU

 [心得] :0.004
 1.要注意空白和換行的處理
 2.如果是小寫,則不處理,直接輸出
#include <stdio.h>
#include <string.h>
int main()
{

    char key_board[] = "=-0987654321`\\][POIUYTREWQ';LKJHGFDSA/.,MNBVCXZ";
    char input[3000];
    char map[3000];
    int length1,length2;
    while(gets(input)!=NULL)
    {
      int i,j,counter=0;
      length1 = strlen(input);
      length2 = strlen(key_board);
     
      for(i=0;i<length1;i++)
      { 
           for(j=0;j<length2;j++)
          {  
            if (input[i] == 32)
            {
                   map[i]=32;
                   counter++;

            }  
            else if (input[i] == 13)
            {
                   map[i]=13;   
                    counter++;                
            }
            else if(input[i]==key_board[j])
           {
    
                 map[i]=key_board[j+1];
                  counter++;
           }
    
         }
         if( counter ==0)
           {
                map[i] =  input[i];

           }
           counter=0;
      }
        for(j=0;j<length1;j++)
        {
            printf("%c",map[j]);
        }
        printf("\n");
    }
    system("pause");   
    //return 0;
}


寫完之後看到網路上別人寫的,GOOD!
#include <stdio.h>
#include <string.h>
int main()
{
  char s[50]="=-0987654321`\\][POIUYTREWQ';LKJHGFDSA/.,MNBVCXZ"; 
  char *x;
  char c;
  while((c=getchar())!=EOF)
  {
      x=strchr(s,c);
      putchar(x?s[x-s+1]:c);             
  }
  system("pause");
  return 0;  
}

沒有留言:

張貼留言