(功能)在c中交换两个数
(Function) Swaping two numbers in c
我正在尝试编写一个交换两个数字的程序。我试图修改我的代码,但仍然没有显示答案。请帮助并提前致谢。
变量是x,y和z,值为10、-1 和 5。因此:x=10、y=-1 和 z=5。预期的 output 必须是 x=-1、y=5 和 z =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;
}
记住,这里的想法是使用交换。
我正在尝试编写一个交换两个数字的程序。我试图修改我的代码,但仍然没有显示答案。请帮助并提前致谢。
变量是x,y和z,值为10、-1 和 5。因此:x=10、y=-1 和 z=5。预期的 output 必须是 x=-1、y=5 和 z =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;
}
记住,这里的想法是使用交换。