输入4个整数,要求按由大到小的顺序输出。

这样写为什么出来的数据是有小到大???#include<stdio.h>voidmain(){intt,a,b,c,d;printf("输入四个数据");scanf("%... 这样写为什么出来的数据是有小到大???
#include<stdio.h>
void main()
{
int t,a,b,c,d;
printf("输入四个数据");
scanf("%d,%d,%d,%d",&a,&b,&c,&d);
printf("\n a=%d,b=%d,c=%d,d=%d\n",a,b,c,d);
if(a<b)
{t=a;
a=b;
b=t;}
if(a<c)
{t=a;
a=c;
c=t;}
if(a<d)
{t=a;
a=d;
d=t;}
if(b<c)
{t=b;
b=c;
c=t;}
if(b<d)
{t=b;
b=d;
d=t;}
if(c<d)
{t=c;
c=d;
d=t;}
printf("排序结果:\n");
printf("%d,%d,%d,%d\n",a,b,c,d);
}
展开
 我来答
听不清啊
高粉答主

2019-10-12 · 说的都是干货,快来关注
知道顶级答主
回答量:7.8万
采纳率:89%
帮助的人:1.9亿
展开全部

因为你输出的顺序是a,b,c,d,而比较交换的策略是,如果前面的值小于后面的值就交换两个变量的值(前面变量的值大则不交换),所以就是大的在前,小的在后了。

并没有从小到大啊?

leeps_my
2019-10-13 · TA获得超过807个赞
知道小有建树答主
回答量:212
采纳率:0%
帮助的人:0
展开全部
你可以利用 C 标准库 stdlib.h 里的 qsort( ) 完成任何类型的数组的快速排序:

#include
#include

int compare( const int *a, const int *b ) { return *b - *a; }

int main( ) {

int ia[ 4 ],
width = sizeof *ia,
num = sizeof ia / width,
j;

puts( "Enter four integers to be sorted in descending order:" );
for( j = 0; j < num; ++j )
scanf( "%d", &ia[ j ] );

qsort( ia, num, width, compare );

for( j = 0; j < num; ++j )
printf( "%d ", ia[ j ] );
}

调用 qsort( ) 只需要传入四个参数:
1)数组指针:指向要排序的数组
2)数组的元素个数
3)数组的元素字节长度
4)函数指针:指向我们定义的一个比较两个元素大小的函数

若是要 qsort( ) 做由小到大的排序,我们定义的函数的返回值和相应的条件必须是:

返回值 条件
====== =====
< 0 *a < *b
0 *a == *b
> 0 *a > *b

要达到以上的要求其实就只需写 “*a - *b” 。

而若是要 qsort( ) 做由大到小的排序,把 *a 和 *b 的位置换一换就行了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式