作为更大问题的一部分,我必须按升序排序3个数字。 一个简单的任务,但由于某种原因,我没有得到预期的结果。 不允许使用数组。 如果你能说出问题所在,请告诉我。我一直在绞尽脑汁 大脑和我只是看不到它:< 谢谢!
#include <stdio.h>
void order(int a, int b);
int main(void)
{
int x, y, z;
scanf("%d %d %d", &x, &y, &z);
order(x, y);
order(x, z);
order(y, z);
printf("%d %d %d", x, y, z);
return 0;
}
void order(int a, int b)
{
int inter;
if(a > b)
{
inter = a;
a = b;
b = inter;
}
}
答案 0 :(得分:5)
您按值传递数字x,y和z。所以你在order()中执行的 swap 不会反映在main()中。
而是传递变量的地址并修改它们,以便main()中的原始变量反映您在order()中所做的更改:
#include <stdio.h>
void order(int *a, int *b);
int main(void)
{
int x, y, z;
scanf("%d %d %d", &x, &y, &z);
order(&x, &y);
order(&x, &z);
order(&y, &z);
printf("%d %d %d", x, y, z);
return 0;
}
void order(int *a, int *b)
{
int inter;
if(*a > *b)
{
inter = *a;
*a = *b;
*b = inter;
}
}