我正在编写一个程序,使用指针按升序对3个整数进行排序,我编写了以下代码:
#include <stdio.h>
void compare_and_swap(int *const a, int *const b) {
int t;
if (*a > *b) {
t = *a;
*a = *b;
*b = t;
}
void sort (int * const pint1, int * const pint2, int *const pint3)
{
if (*pint1 > *pint2){compare_and_swap(pint1, pint2);}
if (*pint2 > *pint3){compare_and_swap(pint2, pint3);}
if (*pint1 > *pint3){compare_and_swap(pint1, pint3);}
}
int main (void)
{
void sort (int * const pint1, int * const pint2, int * pint3);
int i1 = -5, i2 = 66, i3 =77, *p1 = &i1, *p2 = &i2, *p3 = &i3;
int x;
printf ("i1 = %i, i2 = %i, i3=%i \n", i1, i2,i3);
sort (p1, p2,p3);
printf ("i1 = %i, i2 = %i, i3= %i \n", x);
return 0;
}
我得到的输出是一些垃圾值:
i1 = -5, i2 = 66, i3=77
i1 = 0, i2 = 1427618548, i3= -5
答案 0 :(得分:2)
您正在将一个参数传递给printf()
,其中有三个参数。启用编译警告,以便编译器可以告诉您这一点。
printf ("i1 = %i, i2 = %i, i3= %i \n", x);
将其更改为
printf ("i1 = %i, i2 = %i, i3= %i \n",i1,i2,i3);
应该有用。
还阅读一些关于最着名和最基本的排序算法之一[https://en.wikipedia.org/wiki/Bubble_sort] [1],因为您没有按降序给出给定数字的正确结果