所以我设法通过硬编码对数组值进行排序。 但我偶尔会想通过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
我的问题在哪里?
答案 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;
}