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;
}
修改如下,供参考:
#include <stdio.h>
int main()
{
char str[51];
int n, i;
scanf("%d", &n);
getchar();
gets(str);
for (i = 0; str[i]; i++)
{
if (str[i] >= 'A' && str[i] <= 'Z')
str[i] = (str[i] - 'A' + n) % 26 + 'A';
else if (str[i] >= 'a' && str[i] <= 'z')
str[i] = (str[i] - 'a' + n) % 26 + 'a';
}
printf("%s", str);
return 0;
}
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!