【c/c++】WERTYU

题目描述

A common typing error is to place the hands on the keyboard one row to the right of the correct position. So “Q” is typed as “W” and “J” is typed as “K” and so on. You are to decode a message typed in this manner.

一个常见的打字错误是将手放在键盘上正确位置的右边一行。Q被输入为W,J被输入为K,以此类推。你将解码以这种方式输入的消息。

输入描述

Input consists of several lines of text. Each line may contain digits, spaces, upper case letters (except Q, A, Z), or punctuation shown above [except back-quote (`)]. Keys labelled with words [Tab, BackSp, Control, etc.] are not represented in the input.

输入由几行文本组成。每行可以包含数字、空格、大写字母(Q、A、Z除外)或上面所示的标点符号[反引号(’)除外]。用单词[Tab, BackSp, Control, etc]标记的键不在输入中表示。

输出描述

You are to replace each letter or punctuation symbol by the one immediately to its left on the QWERTY keyboard shown above. Spaces in the input should be echoed in the output.

您必须用上面所示的QWERTY键盘上紧邻其左边的一个字母或标点符号来替换每个字母或标点符号。输入中的空格应该在输出中回显。

输入样例:

O S, GOMR YPFSU/

输出样例:

I AM FINE TODAY.

思路

用string保存键盘输入序列,用find()方法找到该字符前一个字符的位置即为应输出字符

代码
#include<bits/stdc++.h>
using namespace std;

int main(){
    string s;
    s = "1234567890-=QWERTYUIOP[]\\ASDFGHJKL;'ZXCVBNM,./";
    int pos;
    string str1,str2;
    getline(cin,str1);
    //cin>>str1; 无法读入空格
    for(int i=0;i<str1.length();i++){
        if(str1[i]==' '){
            str2 += str1[i];
        }
        else{
            pos = s.find(str1[i]);
            str2 += s[pos-1];
        }
    }
    cout<<str2<<endl;
    return 0;
}
Tip
  • getline( char *buffer, streamsize num, char delim )
    buffer 进行读入操作的输入流
    num 存储读入的内容
    delim 终结符(默认换行符\n
    string s;
    getline(cin,s,' ');
    //输入字符串s,遇到空格终止读入到s
    
  • 如果读入和输出整个字符串只能用cin和cout
  • str.find(str2,pos),从str的pos号位开始区配str2,返回其第一次出现的位置,pos默认为0
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

叶柖

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值