60求助嘤嘤嘤

P1914 小书童——凯撒密码

AD钙奶OvO @ 2019-01-06 20:47:32

我感觉我大致知道错在哪里但是我不知道怎么去改……```cpp

include<bits/stdc++.h>

using namespace std; int main(){ string s; int n; cin>>n; cin>>s; for(int i=0;i<s.size();i++) { s[i]+=n; if(s[i]>'z') s[i]=s[i]-26; } cout<<s; return 0; }


by 初音Miku @ 2019-01-06 20:48:13

希望更丰富的展现?使用Markdown


by AD钙奶OvO @ 2019-01-06 20:49:27

我不怎么会用洛谷...第一次发帖求助...大佬帮帮我...


by wxy_god @ 2019-01-06 20:54:43

楼主的代码:

#include<bits/stdc++.h>
using namespace std;
int main(){
    string s;
    int n;
    cin>>n;
    cin>>s;
    for(int i=0;i<s.size();i++)
    {
        s[i]+=n;
        if(s[i]>'z')
            s[i]=s[i]-26;
    }
    cout<<s;
    return 0;
}

by wxy_god @ 2019-01-06 20:55:57

@AD钙奶OvO 你只判断了小写字母的情况,那大写字母怎么办呢?


by AD钙奶OvO @ 2019-01-06 20:56:00

@我是一个垃圾 啊谢谢!!


by AD钙奶OvO @ 2019-01-06 20:56:53

@我是一个垃圾 题干里不是说了“均为小写”吗...


by wxy_god @ 2019-01-06 21:01:32

@AD钙奶OvO 哦对...没看...我再看看


by AD钙奶OvO @ 2019-01-06 21:03:02

@我是一个垃圾 我觉得大概是

if(s[i]>'z')
s[i]=s[i]-26;

这里出了问题


by wxy_god @ 2019-01-06 21:03:55

@AD钙奶OvO 可我也是这么写的啊...


by wxy_god @ 2019-01-06 21:08:16

@AD钙奶OvO 你把那段改成

        unsigned char q = s[i]+a;
        while(q>'z')
        {
            q-=26;
        }
        cout << q; 

题目中a可能很大,超过char了,使用unsigned范围大一倍,就不会超了

其实题目也不严谨,没有说a的最大值


| 下一页