用常量数组代替if语句或switch语句,来处理字符串是很棒的选择!
#include<stdio.h>
char s[]="`123456789()-=QWERTYUIOP[]\\";
char s0[]="ASDFGHJKL;'";
char s1[]="ZXCVBNM,./";
int main()
{
int i,c;
while((c=getchar())!=EOF)
{
for(i=1;s[i] && s[i]!=c;i++);
if(s[i])
putchar(s[i-1]);
else
{
for(i=1;s0[i] && s0[i]!=c;i++);
if(s0[i])
putchar(s0[i-1]);
else
{
for(i=1;s1[i] && s1[i]!=c;i++);
if(s1[i])
putchar(s1[i-1]);
else
putchar(c);
}
}
}
return 0;
}
上面编码解决的是刘佳汝《算法竞赛入门经典》第70页的WERTYU(QWERTY:键盘)的问题。