这道题其实是一道大水题,但是本蒟蒻一开始竟然昏了头,手敲出每一个的前面一项或后面一项
if(a=='w') cout<<'e';
if(a=='e') cout<<'r';
if(a=='r') cout<<'t';
if(a=='t') cout<<'y';
……
(我可能抽风了)
其实这道题稍加思考就会想出用数组存储键盘的方式
代码实现:
char a[50] = {"qwertyuiopasdfghjkl;zxcvbnm,./"}; //用数组存储键盘
然后就是来模拟一便了,用循环嵌套来改变当前打错的字符
代码实现:
for(int j=0;j<=29;j++) //利用第二层循环找出和当前字符的匹配项
{
if(s[i]==a[j])
{
if(k=='R') //判断是朝哪个方向移动
{
cout<<a[j-1]; //输出前一个
}
else //判断是朝哪个方向移动
{
cout<<a[j+1]; //输出后一个
}
}
}
接下来就是整体代码:
泥萌肯定就想看这个
#include <iostream>
using namespace std;
char a[50] = {"qwertyuiopasdfghjkl;zxcvbnm,./"}; //用数组存储键盘
int main(){
char k;
string s;
cin>>k>>s; //因为本题没有空格,所以简简单单用cin
for(int i=0;i<s.size();i++)
{
for(int j=0;j<=29;j++) //利用第二层循环找出和当前字符的匹配项
{
if(s[i]==a[j])
{
if(k=='R') //判断是朝哪个方向移动
{
cout<<a[j-1]; //输出前一个
}
else //判断是朝哪个方向移动
{
cout<<a[j+1]; //输出后一个
}
}
}
}
cout<<endl;
return 0; //完美结束!【放烟花】
}