C语言求救 4WA了!!!!求助大佬!!!!!!

P1914 小书童——凯撒密码

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 zn[i] = n[i] + a % 26 中,等号右边的 int 值是 'z' + 6128,在 char 类型的范围(评测机上是 -128 - 127)外,赋值时不得不改变值(评测机上会得到 -128),导致后面的运算出错。


|