2015-11-18 228 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

相关问题