ACM题目
为什么代码只可以通过数据小的测试,当输入的数字较大时,就会出现乱码,如何改正能通过测试



题目说是不超过50个字符,但是包括50,所以申请空间的时候要大一些,char a[50]改成 char a[55].
另外,char类型的范围最大到127,所以'z'+25这种回导致越界,代码修改如下:
#include <stdio.h>
#include <string.h>
int main()
{
char a[55]={0};
int n;
int i;
scanf("%d", &n);
scanf("%s", a);
n = n % 26;
for (i = 0; i < strlen(a); i++)
{
if (a[i] + n <= 'z')
a[i] = a[i] + n;
else
{
a[i] = a[i] + (n - 26);
}
}
printf("%s", a);
return 0;
}