不使用选择排序对三个指针进行排序

时间:2014-10-25 21:29:11

标签: c function sorting pointers memory-address

我是C的新手,在理解如何在我的代码中使用指针方面遇到了很多麻烦。我需要使用单独的排序函数按升序对三个用户输入整数的地址进行排序。但是,我不能包含任何类型的选择排序或通用排序。

编辑:当我运行程序时,由于某种原因它会按降序给我地址。我需要解决这个问题。

到目前为止,这是我的代码:

#include <stdio.h>
#include <stdlib.h>

void sortThree(int * a, int * b, int * c);

int main(void)
{
    int x, y, z;
    printf("Please enter three variables: ");
    scanf("%i %i %i",&x,&y,&z);

    void sortThree(int * x, int * y, int * z); 
    printf("%u %u %u",&x, &y, &z);

    return 0;
}

void sortThree(int * a, int * b, int * c)
{
    int min, mid, max;

    if (*a <= *b)
    {
        if (*a <= *c)
        {
            min = *a;
        }
        if (*b <= *c)
        {
            mid = *b;
            max = *c;
        } 
        else
        {
            mid = *c;
            max = *b;
        }
    }
}

我确定这是我忽略的东西,但我的大脑却看不到它。提前谢谢!

1 个答案:

答案 0 :(得分:0)

这段代码中有很多错误,如果不为你重新编写它就很难评论,我也不会。除了上面提到的那些,您使用printf()按地址而不是按值显示整数。您不希望对地址进行排序,或者您不会打扰输入任何值。另外,为什么要切换格式说明符bewteen int和unsigned int?它可能不会导致错误,但它很简单。

在sort函数中,你甚至没有改变任何东西,你在返回时丢掉了结果。它按降序给你地址的原因是因为你甚至没有对它们进行排序,它们是它们被声明并被推入堆栈的顺序。您正在将指针传递给printf(),但告诉它们它们是无符号整数。忽略实际变量值。