while(scanf("%d\n",&a)!=EOF&&n)為何多了個\n,這個判斷n是否為0就用不上了?還是我完全弄錯了?還有EOF有沒有一個簡單點的解釋?
EOF是個宏,大概就是#define EOF (-1)類似的玩意scanf輸入時如果遇到輸入流結束,就會返回EOF,也就是-1,所以通過scanf的返回值判斷輸入有否讀完scanf("\n")表示扔掉輸入流中的不可見字符,主要是配合getchar之類的函數使用,避免後者讀進來一些不可見的控制字符
單純的用scanf輸入的話寫成scanf("%d")和scanf("%d\n")基本沒有區別,反而是後者有時候會偶爾出現一點小問題