ACM题目
为什么代码只可以通过数据小的测试,当输入的数字较大时,就会出现乱码,如何改正能通过测试
3条回答 默认 最新
- 技术专家团-小桥流水 2023-01-17 11:06关注
题目说是不超过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; }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用