解析
只需将每一位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;//为防止溢出,先判断,再加n
s[i] += n;
printf("%c",s[i]);
}
return 0;
}