0

我必须使用交换语句按降序对整数进行排序到目前为止我有这个但它不起作用

#include <stdio.h>
int main()
{
int round, num1, num2;
for (round =0; round <= 3; round++)
printf("Enter two integers: \n");
scanf("%d, %d", &num1, &num2);
printf("The numbers in descending order:  %d, %d\n", num1,num2);
return 0;
}
void swap(int num1,int num2)
{
if (num1 < num2);
swap (num2, num1);
}
4

4 回答 4

1

提示:使用临时变量交换数字。

int temp;
temp = num1;
num1 = num2;
num2 = temp;
于 2013-10-28T23:28:05.507 回答
1
void swap(int *a, int *b)
{
    if(*a < *b) {
        int temp;
        temp = *a;
        *a = *b;
        *a = temp;
    }
}

要从 main 调用它:

swap(&num1, &num2);

并且为了您的程序的可读性,您的函数不应该被调用swap。它应该被称为sortDesc或实际描述它正在做什么的东西。调用的函数swap应该无条件地交换两个值,但您打算根据条件对两个值进行排序。

于 2013-10-28T23:28:31.623 回答
1

您的swap()函数是错误的,因为在 C 函数中,参数是按值传递的。因此,在调用函数中所做的更改在调用函数中是不可见的。

第二个问题是你永远不会在 main() 中调用你的交换函数,那么它应该如何在任何地方交换任何东西呢?

于 2013-10-28T23:30:09.177 回答
0

您也可以不使用临时变量。

num1 = num1+num2;
num2 = num1-num2;
num1 = num1-num2;

希望你现在喜欢交换号码 :) 编码愉快!

于 2013-10-28T23:56:04.683 回答