程式一:EOF
#include <stdio.h>
main(){
printf("%d\n",EOF);
}
輸出結果:-1
所以可以得知EOF=-1
程式二(輸入檔:input.txt):
#include <stdio.h>
main(){
freopen("input.txt","r",stdin);
printf("%d\n",scanf("%d%d"));
}
所以當int argcnt=scanf("%d%d%d%d ... %d",&a,&b,&c,&d, ...),
若argcnt=-1,代表沒有讀入任何資料
若argcnt=1,代表讀入1筆資料
若argcnt=2,代表讀入2筆資料
...
若argcnt=n,代表讀入n筆資料
這樣應該就可以看出為什麼要 while( scanf("%d %d",&M, &D) !=EOF) 了吧
不過我比較偏好使用 while( scanf("%d%d",&M, &D) == 2)
因為可能實際上只讀入1筆資料(可是實際上要讀入2筆資料至M、D),卻因為剛好!=EOF(-1),而執行while內容的程式碼
程式一:EOF
#include <stdio.h>
main(){
printf("%d\n",EOF);
}
輸出結果:-1
所以可以得知EOF=-1
程式二(輸入檔:input.txt):
#include <stdio.h>
main(){
freopen("input.txt","r",stdin);
printf("%d\n",scanf("%d%d"));
}
所以當int argcnt=scanf("%d%d%d%d ... %d",&a,&b,&c,&d, ...),
若argcnt=-1,代表沒有讀入任何資料
若argcnt=1,代表讀入1筆資料
若argcnt=2,代表讀入2筆資料
...
若argcnt=n,代表讀入n筆資料
這樣應該就可以看出為什麼要 while( scanf("%d %d",&M, &D) !=EOF) 了吧
不過我比較偏好使用 while( scanf("%d%d",&M, &D) == 2)
因為可能實際上只讀入1筆資料(可是實際上要讀入2筆資料至M、D),卻因為剛好!=EOF(-1),而執行while內容的程式碼
那像 a003這題我都打好程式碼了,但我執行時一定要像題目內的sample input/output一模一樣嗎?連續輸入兩筆不同行然後在印出結果?
還有最後一個問題...!=EOF(-1),那什麼時候scanf會變-1?按下enter?如果是按下enter那我要如何像 sample input/output一樣輸入兩筆之後才計算出結果?我不懂的是程式如何判斷輸入完了?不好意思我很笨= =