我正在尝试编写一个交换两个数字的程序。我试图修改我的代码,但答案仍然没有显示。请提前帮助和感谢。
变量为 x , y 和 z ,其值为 10 , -1 < / em>和 5 。因此: x = 10 , y = -1 和 z = 5 。预期的输出必须为 x = -1 , y = 5 且 z = 10 。如您所见,订单是从最低编号到最大编号。所以请更正我的代码,我正在使用Dev-C ++ 5.11作为我的编译器。附:交换的公式不得根据我的指导员进行更改。 (虽然也许你知道)
以下是我的代码:
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
答案 0 :(得分:0)
我认为你需要这样的东西:
// 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
答案 1 :(得分:0)
本练习的目的是编写一组使用swap()
函数的条件,从最低到最高排序元素。
在此代码中,如果您使用赋值,则不会使用另一个值 - 您将使用另一个值覆盖一个值,从而丢失被覆盖的原始值:
if(x>y)
{
x=y;
}
请记住,这里的想法是使用掉期。