希望大神帮我理解下scanf()函数 和 EOF

小白不是很理解下面代码中的while那一行的作用
我认为是在scanf没有接收到函数时候就要求再次输入, 但我输入两次英文字母后,风扇就开始狂转,再输入数字也没啥用了.

int main(){
    int n;
    int k;
    int total;
    int result;

    while(scanf("%d%d",&n,&k)!=EOF)     //!!!!!不懂这句话
    {
        total=n*2;                      

        if(n<=k){                    
            printf("2\n");
            continue;
        }

        result=total/k;

        if(total%k!=0)
        {
            result++;
        }
        printf("%d\n",result);
    }

    return 0;
}

然后查到scanf的返回值是:

scanf()函数返回的值的意义为:正确按指定格式输入变量的个数;也即能正确接收到值的变量个数。
就是说正确接收值的个数。此时scanf("%d",&i)要求输入一个int数。因此只要按格式输入一个int数,结果都是1.
假如scanf("%d%d%d",&i,&j,&k)。你输入时10 20 d则scanf返回为2

于是我把这代码中的EOF改为2, 依然没用.
真的十分费解, 求帮助

while(scanf("%d%d",&n,&k)!=EOF)

当你在键盘上按下ctrl+z(屏幕显示 ^Z)
则循环终止