gpt4 book ai didi

c - 降序不能正常工作c编程

转载 作者:太空宇宙 更新时间:2023-11-04 02:58:26 25 4
gpt4 key购买 nike

升序做得很好。但是当我输入一个不同的数字时,它应该调用降序,我认为这是明确定义的。然而我有一个随机排序..

  #include<stdio.h>

void sort(int b[], int size, int (*upordown)(int a, int b));
void swap(int *elt1, int *elt2);
int ascending(int a, int b);
int descending(int a, int b);
main()
{
int size =8;
int order,a[size],i;
fprintf(stdout, "please enter a sequence of numbers you wish to sort:\n");
for(i =0; i<size; i++)
{
scanf("%d", &a[i]);
}
printf("\n please enter 1 for ascending order or 2 for descending order");
scanf("%d", &order);
if(order == 1)
{
sort(a, size, ascending);
}
else
{
sort(a, size, descending);
}
printf("Here is the new re arranged array: \n");
for(i =0; i<size; i++)
{
printf("%d\t", a[i]);
}
printf("\n");
return 0;
}

void sort(int b[], int size, int (*upordown)(int a, int b))
{
int pass, j;
for(pass =0; pass< size;pass++)
{
for(j=0; j<size; j++)
{
if((*upordown)(b[j], b[j+1]))
{
swap(&b[j], &b[j+1]);
}
}
}

}

void swap(int *elt1, int *elt2)
{
int hold;
if(*elt1 > *elt2)
{
hold = *elt1;
*elt1 = *elt2;
*elt2 = hold;
}

}

int ascending(int a, int b)
{
return b<a;
}
int descending(int a, int b)
{
return b>a;
}

最佳答案

那是因为你的 swap 函数不正确。它应该简单地交换其传递的参数:

void swap(int *elt1, int *elt2)
{
int hold;
hold = *elt1;
*elt1 = *elt2;
*elt2 = hold;
}

它不应该包含比较。

关于c - 降序不能正常工作c编程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14826427/

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