我如何在循环中启动交换功能?
How can i actuate swap func in loop?
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不能启动
I made code for descending five typed real numbers.
考虑到提供的代码(在 prinf
的调用中使用的转换说明符 %d
),您似乎指的是整数而不是实数。
您需要通过指向它们的指针间接引用将交换的对象传递给函数。否则该函数将处理原始对象值的副本..
可以通过以下方式声明和定义函数
void swap( int *a, int *b )
{
int tmp = *a;
*a = *b;
*b = tmp;
}
可以这样称呼
swap( array + j, array + j + 1 );
或
swap( &array[j], &array[j + 1] );
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不能启动
I made code for descending five typed real numbers.
考虑到提供的代码(在 prinf
的调用中使用的转换说明符 %d
),您似乎指的是整数而不是实数。
您需要通过指向它们的指针间接引用将交换的对象传递给函数。否则该函数将处理原始对象值的副本..
可以通过以下方式声明和定义函数
void swap( int *a, int *b )
{
int tmp = *a;
*a = *b;
*b = tmp;
}
可以这样称呼
swap( array + j, array + j + 1 );
或
swap( &array[j], &array[j + 1] );