Edward, a poor copy typist, is a user of the Dvorak Layout. But now he has only a QWERTY Keyboard with a broken Caps Lock key, so Edward never presses the broken Caps Lock key. Luckily, all the other keys on the QWERTY keyboard work well. Every day, he has a lot of documents to type. Thus he needs a converter to translate QWERTY into Dvorak. Can you help him?
The QWERTY Layout and the Dvorak Layout are in the following:
![]() |
The QWERTY Layout |
---|
|
![]() |
The Dvorak Layout |
---|
|
Input
A QWERTY document Edward typed. The document has no more than 100 kibibytes. And there are no invalid characters in the document.
Output
The Dvorak document.
Sample Input
Jgw Gqm Andpw a H.soav Patsfk f;doe Nfk Gq.d slpt a X,dokt vdtnsaohe Kjd yspps,glu pgld; aod yso kd;kgluZ 1234567890 `~!@#$%^&*()}"']_+-=ZQqWEwe{[\| ANIHDYf.,bt/ ABCDEFuvwxyz
Sample Output
Hi, I'm Abel, a Dvorak Layout user. But I've only a Qwerty keyboard. The following lines are for testing: 1234567890 `~!@#$%^&*()+_-={}[]:"'<>,.?/\| ABCDEFuvwxyz AXJE>Ugk,qf;
这道题,眼睛都看花了,题目很简单,就是字符转化,一开始使用swtich来写密密麻麻的,后来居然warning,case太多什么什么的,后来看了一下人家的,用两个字符串就OK了,这方法太赞了;(注意单引号--\' 双引号\" 应该这样表示)
代码如下:
#include<stdio.h>
#include<string.h>
char s1[]={"-+QWERTYUIOP{}_=qwertyuiop[]SDFGHJKL:\"sdfghjkl;\'ZXCVBN<>zxcvbn,.?/"};
char s2[]={"[}\"<>PYFGCRL?+{]\',.pyfgcrl/=OEUIDHTNS_oeuidhtns-:QJKXBWV;qjkxbwvZz"};
char check(char c)
{
for(int i=0;s1[i];i++)
{
if(s1[i]==c)
return s2[i];
}
return c;
}
int main()
{
char a;
while(scanf("%c",&a)!=EOF)
{
printf("%c",check(a));
}
return 0;
}