用gets读入,答案全错 改为scanf("%s", ); 则是对的

P1320 压缩技术(续集版)

Blacklight @ 2020-02-02 21:01:39

这题目的数据格式应该是用两种方法都可以的
换行都会被省略
这是什么原因?
被这么简单题卡了很久绝了

#include <stdio.h>
#include <stdbool.h>

int main()
{
    bool k = 0;
    char line[201];
    int n, s = 0;
    scanf("%s", line);//在这里!
    for (int i = 0; i < 201; i++)
        if (line[i] == 0)
        {
            n = i;
            break;
        }
    printf("%d", n);

    for (int i = 0; i < n; i++)
        if (line[i] == '0' + k)
            s++;
        else
        {
            printf(" %d", s);
            s = 1;
            k = !k;
        }

    for (int j = 1; j < n; j++)
    {
        scanf("%s", line);
        for (int i = 0; i < n; i++)
            if (line[i] == '0' + k)
                s++;
            else
            {
                printf(" %d", s);
                s = 1;
                k = !k;
            }
    }
    printf(" %d \n", s);
}

by tZEROちゃん @ 2020-02-02 21:03:21

最好不要使用gets


by Surelysuper @ 2020-02-02 21:04:39

最好不要使用gets


by AMIRIOX無暝 @ 2020-04-04 22:00:05

最好不要使用gets


by fhzzxxx @ 2020-06-10 11:37:55

换成scanf还是全WA;自己下了二个测试数据测试没发现错误。


by fhzzxxx @ 2020-06-10 11:49:37

用strlen 也有问题, 我换成自己while直接计算长度,终于过了。


|