本地单机测试ok,样例也对,为啥全部wa了。求大佬解惑。

P1914 小书童——凯撒密码

sevenwaters @ 2019-02-22 11:10:52

#include<stdio.h>
#include<stdlib.h>
int main()
{
    int n, i;
    char a[50] = { 0 }, b[50] = { 0 };
    scanf("%d", &n);
    getchar();
    for (i = 0;i<50;i++)
    {
        a[i] = getchar();
        if (a[i] == '\n')
        {
            break;
        }
    }
    for (i = 0;i<50;i++)
    {
        if (a[i]>96 && a[i]<123)
        {
            if (a[i] + n % 26 > 122)
            {
                b[i] = a[i] + n % 26 - 'z' + 96;
            }
            else if (a[i] + n % 26 < 123)
            {
                b[i] = a[i] + n % 26;
            }       
        }
        else
        {
            b[i] = a[i];
        }
    }
    for (i = 0;i<50;i++)
    {
        if (b[i]>96 && b[i]<123)
        {
            printf("%c", b[i]);
        }
    }
    system("pause");
    return(0);
}

by OvOAuto @ 2019-02-22 11:26:58

把倒数第三行去掉


by OvOAuto @ 2019-02-22 11:27:59

如果有第三行,你在本机看到的输出是这样:

[Output]
Prsss any key to continue...

by OvOAuto @ 2019-02-22 11:29:17

有的评测机是会读入最后一行,有的会一直等待剩下的输出然后TLE(评测机才不会"press any key"呢)


by sevenwaters @ 2019-02-22 11:33:52

@Daniel_WFY_923 去掉了,一样5个wa,心塞。好像问题不在这个pause。


by OvOAuto @ 2019-02-22 11:37:43

说实话我是看到了pause就直接说出来的···


by OvOAuto @ 2019-02-22 11:38:04

@sevenwaters 至少有pause肯定爆零


by sevenwaters @ 2019-02-22 11:39:14

@Daniel_WFY_923 单机从a-z全测一遍,也没发现问题在哪。


by OvOAuto @ 2019-02-22 11:43:21

我觉得getchar()很容易读入空格、\n、\r之类的字符···所以我从来都是用这三个

/*1*/scnaf("%c%*c",&c);//%*c是读入但不存储数据,同理于其它数据类型(%*d这种都行)
/*2*/scanf("%s",s);//读入字符串
/*3*/cin.getline(s,1e9);//第一个是char组的组名,第二个是在读到第几个字符停止读取

by OvOAuto @ 2019-02-22 11:44:05

那个啥第一行写成scanf了,谢罪


by OvOAuto @ 2019-02-22 11:44:17

看懂就行


| 下一页