解析
只需将每一位ascll码加n即可
但要注意的是c++的ascll码是有上限的
我一开始是这么写的:
for(int i=1;i<=l;i++){s[i] += n;while(s[i]>'z') s[i] -= 26;printf("%c",s[i]);}
结果:
(真的是随便打的,不巧有些攻击性。。)
因为它在执行’q‘和’r‘+26时,已经超出范围,于是就生成了乱码
所以要进行一些细节的处理(具体见代码)
代码
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<iostream>
using namespace std;
int main(){char s[105];int n;scanf("%d%s",&n,s+1);n %= 26;//先mod一下int l=strlen(s+1);for(int i=1;i<=l;i++){if(s[i]+n>'z') s[i] -= 26;//为防止溢出,先判断,再加ns[i] += n;printf("%c",s[i]);}return 0;
}