2015-11-18 281 views
1

所以我設法通過對它們進行硬編碼來排序我的數組值。但是現在我想通過scanf手動添加新值。 由於某種原因,它不起作用。 這裏是代碼:通過scanf對數組進行排序

int main(void) { 
    int tal[5]; 
    int temp, i, j; 
    for(i=0;i<5;i++) { 
     scanf("%d",&tal[i]); 
    } 
    for(i=0;i<5;i++){ 
     for(j=0;j<5;j++){ 
     if(tal[j] < tal[i]){ 
      temp = tal[j]; 
      tal[i] = tal[j]; 
      tal[j] = temp; 
     } 
     } 
    } 
    for(i=0;i<5;i++) { 
     printf("%d\n",tal[i]); 
    } 
    return 0; 
} 

例如,輸入:3 6 5 7 8 輸出:3 3 3 3 3

我的問題在哪裏?

回答

3

問題在於您的交換。

if(tal[j] < tal[i]){ 
     temp = tal[j];  //put tal[j] in temp 
     tal[i] = tal[j]; // put tal[j] in tal[i], (tal[i] value lost) 
     tal[j] = temp;  // put temp in tal[j], 
    } 

它應該是,

if(tal[j] < tal[i]){ 
     temp = tal[j]; 
     tal[j] = tal[i]; 
     tal[i] = temp; 
    } 
+2

這是一個漫長的一天。謝謝。 – Joel

+0

@Joel,犯錯是人。 :) – Haris

相關問題