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
?(
by lzagddsg @ 2022-08-05 16:08:55
@xutongwei
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
但我不得不承认是