[英]What happens when multiple scanf()s are included in a single for loop
我寫了一個代碼來比較三元組問題。 問題陳述是:
輸入:2 個大小為 3 的數組
任務是通過比較a[0]
與b[0]
、 a[1]
與b[1]
以及a[2]
與b[2]
來找到它們的比較點。
如果a[i] > b[i]
,則 Alice 獲得分數。 如果a[i] < b[i]
則 Bob 獲得積分。 如果a[i] == b[i]
則沒有人得到分數。 比較積分是該人獲得的總積分。 給定a
和b
確定它們各自的比較點。
我寫的代碼是:
#include<stdio.h>
void main(){
int i, alice[3], bob[3];
int a = 0;
int b = 0;
for(i=0; i<3; i++){
scanf("%d", &alice[i]);
}
for(i=0; i<3; i++){
scanf("%d", &bob[i]);
}
for(i=0; i<3; i++){
if(alice[i] > bob[i])
a++;
else if (alice[i] < bob[i])
b++;
}
printf("%d %d", a, b);
}
但是當我把兩個 scanf() 放在一行時,
for(i=0; i<3; i++){
scanf("%d", &alice[i]);
scanf("%d", &bob[i]);
}
對於所有輸入,輸出類似於 2 1 或 1 2。 將兩個scanf()
調用放在一個 for 循環中是錯誤的嗎? 我不明白這個問題背后的原因是什么? 有人會解釋原因嗎?
第一個版本讀取alice
三個值,然后讀取bob
三個值。 第二個版本為alice
讀取一個值,然后為bob
讀取一個值,並重復 3 次。
如果輸入的數字是 1, 2, 3, 4, 5, 6,那么在第一個例子中, alice
得到 1, 2, 3 而bob
得到 4, 5, 6; 在第二個例子中, alice
得到 1, 3, 5 而bob
得到 2, 4, 6。完全不同的結果。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.