簡體   English   中英

當單個 for 循環中包含多個 scanf() 時會發生什么

[英]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]則沒有人得到分數。 比較積分是該人獲得的總積分。 給定ab確定它們各自的比較點。

我寫的代碼是:

 #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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM