c语言中OJ对scanf!=EOF的处理

#include
int main(){
char ch;
while (scanf("%c",&ch)==1);
printf(ch%2?"ji\n":"ou\n");
return 0;
}
这是代码,判断一个超级大的数的奇偶 放到OJ上是对的 那为什么OJ输入数据后会知道怎么停下来读取而不是超时?有大神能解答一下嘛~

EOF并不能被char读入

while(scanf("%d", &a) != EOF)
{

}

在数据全部测试过后会给你的程序发送一个ctrl+z你的程序就停下来了。