gpt4 book ai didi

c - 按升序排列 3 个数字 - 功能未按预期工作

转载 作者:行者123 更新时间:2023-12-02 05:03:17 25 4
gpt4 key购买 nike

作为更大问题的一部分,我必须按升序对 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;
}
}

最佳答案

您正在按值传递数字 x、y 和 z。所以您在 order() 中执行的 swap 不会反射(reflect)在 main() 中。

而是传递变量的地址并修改它们,以便 main() 中的原始变量反射(reflect)您在 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;
}
}

关于c - 按升序排列 3 个数字 - 功能未按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16663447/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com