我是 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;
}
}
}
我确信这是我忽略的东西或者其他东西,但我的大脑就是看不到它。提前致谢!
最佳答案
这段代码中有很多错误,如果不为您重新编写它,就很难发表评论,我也不会。除了上面提到的之外,您还使用 printf()
按地址而不是按值显示整数。您可能不想对地址进行排序,否则您就不会费心输入任何值。另外,为什么要在 int 和 unsigned int 之间切换格式说明符?它可能不会导致错误,但它很草率。
在排序函数中,您甚至没有更改任何内容,而是在返回时丢弃结果。它以降序给你地址的原因是因为你甚至没有对它们进行排序,它们是它们被声明并插入堆栈的顺序。您将指针传递给 printf() ,但告诉它它们是无符号整数。实际的变量值将被忽略。
关于c - 不使用选择排序对三个指针进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26567424/