(功能)在c中交换两个数

(Function) Swaping two numbers in c

我正在尝试编写一个交换两个数字的程序。我试图修改我的代码,但仍然没有显示答案。请帮助并提前致谢。

变量是x,yz,值为10-15。因此:x=10y=-1z=5。预期的 output 必须是 x=-1y=5z =10。如您所见,顺序是从最小的数字到最大的。所以请更正我的代码,我使用 Dev-C++ 5.11 作为我的编译器。 P.S。不得根据我的导师更改 swap 的公式。 (虽然你可能知道)

这是我制作的代码:

void swap(int *px, int *py)
{
    int temp;
    temp = *px;
    *px = *py;
    *py = temp;
}
int main(void)
{
    int x,y,z;
    x=10;
    y=-1;
    z=5;

    printf("x=%d y=%d z=%d\n",x,y,z);
    if(x>y)
    {
        x=y;
    }
    else if(y>z)
    {
        y=z;
    }
    else if(z>x)
    {
        z=x;
    }
    swap(&x,&y);
    printf("x=%d y=%d z=%d",x,y,z);

    return 0;
}

同样,预期输出 必须是:

x=-1, y=5, z=10

我想你需要这样的东西:

// Make sure x is smaller than y
if(x>y)
{
    swap(&x, &y);
}

// Make sure x is smaller than z
if(x>z)
{
    swap(&x, &z);                      
} 
// Now x is smaller than both y and z

// Make sure y is smaller than z
if(y>z)
{
    swap(&y, &z);
}

所以完整的程序看起来是:

#include <stdio.h>

void swap(int *px, int *py)
{
    int temp;
    temp = *px;
    *px = *py;
    *py = temp;
}
int main(void)
{
    int x,y,z;
    x=10;
    y=-1;
    z=5;

    printf("x=%d y=%d z=%d\n",x,y,z);

    // Make sure x is smaller than y
    if(x>y)
    {
        swap(&x, &y);
    }

    // Make sure x is smaller than z
    if(x>z)
    {
        swap(&x, &z);                      
    } 
    // Now x is smaller than both y and z

    // Make sure y is smaller than z
    if(y>z)
    {
        swap(&y, &z);
    }

    printf("x=%d y=%d z=%d",x,y,z);

    return 0;
}

输出为:

x=10 y=-1 z=5

x=-1 y=5 z=10

本练习的重点是编写一堆条件语句,使用 swap() 函数将元素从低到高排序。

在此代码中任何时候都不应使用赋值 - 您将用一个值覆盖另一个值,从而丢失被覆盖的原始值:

if(x>y)
{
    x=y;
}

记住,这里的想法是使用交换。