关于OJ中的输入格式的问题

输入:1 2 3 4 5 6 7 8 9 10

如上的输入,并未告诉我们终止条件,这种无上限输入的格式可以用以下格式读入

int main()
{
    int S[100];
    int i = 0;
    while (scanf("%d", S + i))
    {
        i++;
    }
}

其中scanf改成cin也是一样的,原理就是OJ上的输入结束后scanf会返回EOF,EOF用来判断文件结束的标记(end of file)

而在OJ上的输入评判与输出都是通过文件来实现的,所以在读完所有数据后scanf会返回EOF代表结束的标志。但是在本地控制台不会如此,本地控制台会持续输入,除非ctrl+C强制结束程序或者输入了错误的数据,scanf就会停止

再具体可以看这篇文章从while(scanf() != EOF)说到ACM OnlineJuge的评判原理_czzshr的博客-CSDN博客

posted @ 2023-04-11 17:03  凪风sama  阅读(57)  评论(0)    收藏  举报