zyabc @ 2022-05-25 22:08:09
代码如下,考虑了n超过26以及+n大于'z'的情况,为什么第4题WA?
#include<bits/stdc++.h>
using namespace std;
int main()
{
string s;
char a;
int n;
cin>>n>>s;
for(int i=0;i<s.size();i++)
{
s[i]=s[i]+(n%26);
if(s[i]>'z') s[i]=s[i]-26;
cout<<s[i];
}
return 0;
}
by suyi1111 @ 2022-06-05 18:37:09
如果移动位数超过Ascall码容量 就会使 x=a[i]+n;转化为未知字符 导致后续判断的转化x>'z'出现转化失败
输入:
25
zz
输出:
摀
by Jiangjinggao @ 2023-04-07 15:37:57
AC代码:
#include<bits/stdc++.h>
using namespace std;
char s[100];
int main(){
int n;
scanf("%d%s",&n,s);
for(int i=0;i<strlen(s);i++){
s[i]=(s[i]-'a'+n)%26+'a';
}
cout<<s<<endl;
return 0;
}
by Jiangjinggao @ 2023-04-07 15:38:30
没必要用if