通过scanf对数组进行排序

时间:2015-11-18 14:31:13

标签: c arrays

所以我设法通过硬编码对数组值进行排序。 但我偶尔会想通过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

我的问题在哪里?

1 个答案:

答案 0 :(得分: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;
    }