【发布时间】:2021-12-28 11:32:12
【问题描述】:
for (int i = 0; i < 4; i++) {
for (int j = 0; j < 4 - i; j++) {
if (array[j] > array[j + 1]) {
swap(array[j], array[j + 1]);
}
}
}
printf("Descending : ");
for (int k = 4; 0 <= k; k--) {
printf("%d ", array[k]);
}
我为五个键入的整数编写了降序代码。
有两种方法可以激活它。
第一个是在循环中使用临时交换(如tmp=a, a=b, b=tmp),第二个是声明交换函数(void swap(int x, int y){int tmp=x, x=y, y=tmp})并在循环中使用这个函数。
第一种方法成功了,第二种方法失败了。
我想知道为什么swap func in loop无法启动。
【问题讨论】:
-
更改函数以接受数组和索引:
swap(array, j, j+1);否则,您只是交换值的副本。更多信息,请搜索“c pass by value”
标签: c for-loop if-statement swap function-definition