为啥我的输入输出都是对的,但是交上去却是错误的,考虑了z到a情况

P1914 小书童——凯撒密码

3024331496ys @ 2022-01-16 13:10:30

#include<stdio.h>
#include<string.h>
int main()
{
    int n;
    scanf("%d",&n);
    if(n>=26)
    {
        n=n%26;
    }
    getchar();
    char a[100];
    gets(a);
    int s=0;
    s=strlen(a);
    int i;
    for(i=0;i<s;i++)
    {
        if(a[i]>='a'&&a[i]<='z')
        {
          a[i]=a[i]+n;
          if(a[i]>'z')
          {
              int y;
              y=a[i]-'z';
              a[i]='a';
              a[i]=a[i]+y-1;
          }
        }
    }
    puts(a);
    return 0;
}

by ssxvngn @ 2022-01-16 13:23:53

@3024331496ys 帮你改了一下,你看看

#include<bits/stdc++.h>
using namespace std;//自己喜好
int main()
{
    int n;
    scanf("%d",&n);
    n=n%26;
    char a[100];
    scanf("%s",a);//一开始没输出就是因为gets可能出问题了
    int s=0;
    s=strlen(a);
    int i;
    for(i=0;i<s;i++)
    {
        int x=a[i]-'a';
        x=(x+n)%26;
        if(x>=26)
        x-=26;
        a[i]=char('a'+x);
        //一开始的方法可能会数组越界
        //比如25 z
    }
    puts(a);
    return 0;
}

|