题意:把手放在键盘上时,稍不注意就会往右错一位。这样,输入Q会变成输入W,输入J会变成输入K等。输入为错位字符串(保证输入合法,例如不会出现大写字母A),输出打字员原本想打出的句子。
我的代码:
#include <bits/stdc++.h>
using namespace std;
char s[]="`1234567890-=QWERTYUIOP[]\\ASDFGHJKL;'ZXCVBNM,./";
int main()
{
char ch; int i;
while(~scanf("%c",&ch))
{
for(i=1;s[i]&&s[i]!=ch;i++);
if(s[i]) printf("%c",s[i-1]);
else printf("%c",ch);
}
return 0;
}
// UVa10082 WERTYU
// Rujia Liu
#include<stdio.h>
char s[] = "`1234567890-=QWERTYUIOP[]\\ASDFGHJKL;'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 putchar(c);
}
return 0;
}
本文介绍了一种解决键盘输入错位问题的算法实现。通过使用预定义的键盘布局字符串,该算法能够将用户实际输入的错位字符转换成原本想要输入的正确字符。文章提供了两种实现方式的代码示例,一种是使用scanf进行字符读取,另一种则是使用getchar。

被折叠的 条评论
为什么被折叠?



