C-90分 提交与本地测试结果不一 求解

回复帖子

@巡璃 2019-10-15 13:34 回复
#include <stdio.h>
int main()
{
    int i;
    int sum1 = 1, sum2 = 1;
    char *p, *n, a[7] = {0}, b[7] = {0}, t = 0;
    p = a;
    n = b;
    for (i = 0; i <= 6; i++)
    {
        scanf("%c", &t);
        if (t != '\n')
        {
            *(p + i) = t;
        }
        else
        {
            break;
        }
        sum1 = sum1 * ((int)(*(p + i)) - 64);
    }
    for (i = 0; i <= 6; i++)
    {
        scanf("%c", &t);
        if (t != '\n')
        {
            *(n + i) = t;
        }
        else
        {
            break;
        }
        sum2 = sum2 * ((int)(*(n + i)) - 64);
    }

    if ((sum1 % 47) == (sum2 % 47))
        printf("GO");
    else
        printf("STAY");
    return 0;
}

90分 测试数据下载: 输入: PAOHBJ WSNF 输出:GO

本地测试的确是GO呀。但提交代码后似乎错了。 怎么找都找不出错误,折磨两天了,求解,万分感谢

@巡璃 2019-10-18 21:19 回复 举报

@kub_inst 没排好版 输入应该是

PAOHBJ(回车) WSNF

不知道阁下是不是直接复制然后测试了。

VS2017 2019 VSCODE(C11/C99)测试下来都是go 难道得找个linux机子再试试嘛。

请问阁下环境是什么呀

@巡璃 2019-10-18 22:15 回复 举报

过了那么多天后再来看,突然发现根本没必要用指针用数字

#include <stdio.h>
int main()
{
    int sum1 = 1, sum2 = 1;
    char t = 0;
    while ((t = getchar()) != '\n')
    {
        if (t >= 'A' || t <= 'Z')
            sum1 = sum1 * (int)(t - 64);
    }
    while ((t = getchar()) != '\n')
    {
        if (t >= 'A' || t <= 'Z')
            sum2 = sum2 * (int)(t - 64);
    }

    if ((sum1 % 47) == (sum2 % 47))
        printf("GO");
    else
        printf("STAY");
    return 0;
}

直接最简单的……反而过了 不过还是很想知道之前那个为啥不行,如果有dalao知道的话麻烦解答一下 感激不尽

反馈
如果你认为某个帖子有问题,欢迎向洛谷反馈,以帮助更多的同学。



请具体说明理由,以增加反馈的可信度。