题目描述:
输入一个按键盘顺序,向后错一位后敲出的字符串,输出本来想打出的句子, 且输入中不会出现不合法的字符,例如A。
Simple input:
O S, GOME YPFSU/
Simple ouput:
I AM FINE TODAY.
代码
#include <iostream>
#include <cstdio>
using namespace std ;
//定义常量数组
char s[] = "`1234567890-=QWERTYUIOP[]\\ASDFGHJKL;'ZXCVBNM,./" ; //注意这里的右斜要写作两个。
int main()
{
int i ;
char c ;
while((c = getchar()) != EOF ) {
for (i=1; s[i] && s[i]!=c; i++) ; //找错位后的字符在常量表的位置
if (s[i]) putchar(s[i-1]) ;
else putchar(c) ; //如果没找到,则为空格,直接输出即可。
}
return 0 ;
}
收获
善用常量数组往往能简化代码,定义常量数组时无需指明大小,编译器会计算 。
拓展:声明一些自定义规则的常量数组,用以解题。 如:int a[10] = {1,2,3,4,5,6,7,8,9,0} ;