5Goodluck @ 2023-03-09 13:27:09
#include <stdio.h>
#include <string.h>
int main()
{
int a;
char n[50];
scanf("%d",&a);
scanf("\n");
scanf("%s",&n);
int m;
m=strlen(n);
for(int i=0;i<m;i++){
n[i]=n[i]+a%26;
if(n[i]>'z'){
n[i]=n[i]-26;
}
}
printf("%s",n);
return 0;
}
by ud2_ @ 2023-03-09 14:06:11
考虑输入 6 z
。n[i] = n[i] + a % 26
中,等号右边的 int
值是 'z' + 6
即 128
,在 char
类型的范围(评测机上是 -128
- 127
)外,赋值时不得不改变值(评测机上会得到 -128
),导致后面的运算出错。