60分求助 3.4点wa

P1914 小书童——凯撒密码

sakai @ 2018-12-18 23:10:43

#include<stdio.h>
int main()
{
    int n=0;
    char code[50] ;
    scanf("%d", &n);
    scanf("%s", &code);
    for (int i = 0; i < 50; i++)
    {
        if (code[i] == '\0')
        {
            break;
        }
        code[i] = code[i] + n;
    }
    puts(code);
}

by sakai @ 2018-12-18 23:24:11

看了测试数据大概懂了自己错在哪里了


by apassbydreg @ 2018-12-18 23:27:16

很显然,当输入

30
xyzabc

的时候你这个写法输出有问题,你需要思考当字母超过z时应该如何输出,下面是我的写法

------ 给你思考的分隔线 ------
\\
\\
\\
\\
\\
\\
\\
\\
\\
\\
\\
\\
\\
\\
\\
\\
\\
\\
\\
\\
\\
\\
\\
\\
\\
------ 想到了吗? ------
\\
\\
\\
\\
\\
\\
\\
\\
\\
\\
\\
\\
\\
\\
\\
\\
\\
\\
#include<stdio.h>
#include<string.h>
int main()
{
    char input[50],output[26]="abcdefghijklmnopqrstuvwxyz";
    int i,n;

    scanf("%d", &n);
    scanf("%s", input);

    for(i=0;i<50 && input[i]!=0;i++) printf("%c", output[(input[i]-97+n)%26]); // 看懂这句话很重要

    return 0;
}

by apassbydreg @ 2018-12-18 23:28:32

啊对了。。。 string.h 不是必须的。。。我忘记删掉了


|