感觉思路没有问题 哪位大佬能帮我看看

P1914 小书童——凯撒密码

lijiatu123 @ 2022-11-20 11:12:21


#include<stdio.h>
#include<string.h>
int main()
{
int n,i,l;
char a[10000];
scanf("%d\n",&n);
scanf("%s",a);
n=n%26;
l=strlen(a);
for(i=0;i<=l;i++)
{
a[i]+=n;
printf("%c",a[i]);
}

return 0;
}

by Ja50nY0un9_as_AgNO3 @ 2022-11-20 11:25:35

@lijiatu123 首先,因为是循环的,所以当超过z的时候要减去26。

其次,strlen给出的长度是a的长度+1,所以应是i<l而不是i<=l。

而且char貌似存不下'z'+25那么大的数,所以要强制转成int做。


#include<stdio.h>
#include<string.h>

int main()
{
    int n,i,l;
    char a[10000];
    scanf("%d\n",&n);
    scanf("%s",a);
    n=n%26;
    l=strlen(a);
    for(i=0;i<l;i++)
    {
        int x=a[i];
        x+=n;
        if(x>'z') x-=26;
        printf("%c", x);
    }
    return 0;
}

by lijiatu123 @ 2022-11-20 18:22:57


谢谢哥

|