SUPERLWR @ 2022-07-31 09:45:48
#include<bits/stdc++.h>
using namespace std;
string s;
long long len,num;
char change(char c)
{
char c1=c+num;
if(c1>'z')
c1-=26;
return c1;
}
int main()
{
cin>>num;
num%=26;
cin>>s;
len=s.size();
//cout<<len<<endl;
for(int i=0;i<len;i++)
{
s[i]=change(s[i]);
//cout<<i<<" "<<s[i]<<endl;
}
cout<<s;
return 0;
}
已经到入门题都要求助的地步了(悲
找不出错,感觉像是什么底层的概念有问题(或是我又sb了
by SUPERLWR @ 2022-07-31 09:48:14
输入
25
abcxyz
答案
zabwxy
实际输出
zab憭
↑这什么原因?
by liangbowen @ 2022-07-31 09:52:38
@SUPERLWR 爆 ASCII 码范围了。调试语句:cout<<i<<" "<<(int)s[i]<<endl;
可以看到您输出了负数
by SUPERLWR @ 2022-07-31 09:54:32
@liangbowen 谢谢,原来还有这种东西
by liangbowen @ 2022-07-31 09:55:36
把 c1
的类型改为 int
应该就可以了
by SUPERLWR @ 2022-07-31 10:01:17
@liangbowen 还想问一句,是哪一步危险操作导致爆 ASCII 的呢
by liangbowen @ 2022-07-31 10:04:45
z
的 ASCII 码是
char c1=c+num;
by SUPERLWR @ 2022-07-31 10:05:07
@liangbowen 懂了谢谢