大家好,我是自學C語言的初學者
以下是程式碼及題目,希望好心人能幫我看看,謝謝!!
do {
scanf("%d%d", &a, &b);
printf("%d\n",a+b);
} while (a!=0 && b!=0);
return 0;
}
問題在於,a、b可能等於 0,這樣 while 判斷就會不符條件而跳開
一般而言,有些題目要用以下方式讀取測資
while (scanf("%d %d", &a, &b) != EOF)
1. scanf()函式,成功讀到資料會傳回一個 int 型別的值,大小為成功讀取的個數
例如本題scanf("%d %d", &a, &b); 會傳回 2
2. EOF 意思是 End Of File ,也就是檔案的結尾,當資料讀完後,scanf() 讀不到下一筆
會傳回 EOF,EOF 在C 函式庫定義為 -1
3. while (scanf("%d %d", &a, &b) != EOF)
意思就是當 scanf() 傳回值不等於 EOF時,執行迴圈內容
這樣只要檔案還有資料,就會執行
4. 所以只要改成這樣 :
while (scanf("%d %d", &a, &b) != EOF)
{
printf("%d\n",a+b);
}
就可以過了
PS : scanf()的時候,建議雙引號內每個變數用空白格開,才不會讀到不想讀的東西
尤其在讀字元 %c 這個很重要
do {
scanf("%d%d", &a, &b);
printf("%d\n",a+b);
} while (a!=0 && b!=0);
return 0;
}
問題在於,a、b可能等於 0,這樣 while 判斷就會不符條件而跳開
一般而言,有些題目要用以下方式讀取測資
while (scanf("%d %d", &a, &b) != EOF)
1. scanf()函式,成功讀到資料會傳回一個 int 型別的值,大小為成功讀取的個數
例如本題scanf("%d %d", &a, &b); 會傳回 2
2. EOF 意思是 End Of File ,也就是檔案的結尾,當資料讀完後,scanf() 讀不到下一筆
會傳回 EOF,EOF 在C 函式庫定義為 -1
3. while (scanf("%d %d", &a, &b) != EOF)
意思就是當 scanf() 傳回值不等於 EOF時,執行迴圈內容
這樣只要檔案還有資料,就會執行
4. 所以只要改成這樣 :
while (scanf("%d %d", &a, &b) != EOF)
{
printf("%d\n",a+b);
}
就可以過了
PS : scanf()的時候,建議雙引號內每個變數用空白格開,才不會讀到不想讀的東西
尤其在讀字元 %c 這個很重要
我明白了
非常謝謝你用心解答!