为什么我这有很大的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 xutongwei @ 2022-08-05 15:59:52

@lzagddsg 那是因为 char 越界了……

换成 int 就 A 了。

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

int n;
char c[100];
int main()
{
    cin >> n >> c;
    for (int i = 0; i < strlen(c); i++)
    {
        int zzz = c[i];
        zzz += n;
        while (zzz > 122)
            zzz -= 26;
        c[i] = zzz;
        cout << c[i];
    }
    return 0;
}

by lzagddsg @ 2022-08-05 16:06:21

@xutongwei 哪个if?(\begin{matrix} bù & míng & bái \\ bu4 & ming2 & bai \end{matrix}


by lzagddsg @ 2022-08-05 16:08:55

@xutongwei ohohohoh感激不尽


by xutongwei @ 2022-08-05 16:10:49

@lzagddsg 什么时候 if 变 while 了都不知道……

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

int n;
char c[100];
int main()
{
    cin >> n >> c;
    for (int i = 0; i < strlen(c); i++)
    {
        int zzz = c[i];
        zzz += n;
        if (zzz > 122)/*这个if,样例中不会用到……*/
            zzz -= 26;
        c[i] = zzz;
        cout << c[i];
    }
    return 0;
}

by lzagddsg @ 2022-08-05 16:11:52

@xutongwei 虽然我仍然坚持应该是那个变量 -= 25但我不得不承认是26


上一页 |