为什么我这有很大的bug?

P1914 小书童——凯撒密码

lzagddsg @ 2022-08-05 15:02:40

本人非牛牛牛,日常刷题刷到此题,尝试半天也无解。好不容易,写出代码,运行发现+-打错。改完bug,再次运行,发现输出许多emoji。
呈上代码,如下所示。恳请各位,看看哪里出错。

#include <bits/stdc++.h>

using namespace std;

int n;
char c[100];
int main()
{
    cin >> n >> c;
    for (int i = 0; i < sizeof(c); i++)
    {
        c[i] += n;
        if (c[i] > 122)
            c[i] -= 25;
        cout << c[i];
    }
    return 0;
}

输入完1(这里是换行符)qwe后,运行结果:rxf☺☺☺☺☺☺☺☺……(由于cmd版本太低(我电脑出bug了(是真的bug,虫子!)所以暂时借别人的用,我也不好意思截图保存然后上传img啊),无法复制,只好手打,由于太懒,又怕打多了,所以只好省略n个张嘴笑的表情包)
我真的求々你们,告诉我我哪里叒错了,好么?


by OoXiao_QioO @ 2022-08-05 15:06:36

字符数组能用cin?


by __er @ 2022-08-05 15:07:38

@OoXiao_QioO 可以


by OoXiao_QioO @ 2022-08-05 15:08:18

哦哦,我感觉lz的思路完全错误了@__er


by OoXiao_QioO @ 2022-08-05 15:10:19

万一n=100000呢?c[i]-=25了,那c[i]就等于99925了,ASCII码有这玩意吗?不得爆掉


by xiaorui2007 @ 2022-08-05 15:12:18

sizeof(c)错了,这是把整个c都遍历了一遍。


by __er @ 2022-08-05 15:13:34

@lzagddsg 你判断不对啊……字符串它不香吗(忽略大常数)

#include <bits/stdc++.h>
using namespace std;
string a;
long long i, n, j;

int main() {
    cin >> n;
    cin >> a;
    for (i = 0; i < a.length(); i++) {
        for (j = 1; j <= n; j++) {
            if (a[i] == 'z') {
                a[i] = 'a';
            }
            a[i]++;
        }
    }
    cout << a;
    return 0;
}

by xiaorui2007 @ 2022-08-05 15:13:43

ifwhile
sizeofstrlen


by __er @ 2022-08-05 15:14:07

字符数组不是strlen(c)


by xiaorui2007 @ 2022-08-05 15:15:39

c[i]-=26;


by __er @ 2022-08-05 15:16:39

我给的代码A不了的,别ssd


| 下一页