C语言写出 ,输入4个整数,要求按由大到小的顺序输出?

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

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

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 的位置换一换就行了。
 
 
 
听不清啊
高粉答主

推荐于2017-10-13 · 说的都是干货,快来关注
知道顶级答主
回答量:7.8万
采纳率:89%
帮助的人:1.9亿
展开全部
4个整数的排序,有使用单个变量和使用数组二种方法实现。
使用单个变量的方法:
#include<stdio.h>
int main()
{int a,b,c,d,t;
scanf("%d%d%d%d",&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("%d %d %d %d\n",a,b,c,d);
return 0;
}

使用数组和循环的方法:
#include<stdio.h>
int main()
{int a[4],i,j,t;
for(i=0;i<4;i++) //读入4个数据
scanf("%d",&a[i]);
for(i=0;i<3;i++) //冒泡排序
for(j=0;j<3-i;j++)
if(a[j]>a[j+1])
{t=a[j];a[j]=a[j+1];a[j+1]=t;}

for(i=0;i<4;i++) //输出4个数据
printf("%d ",a[i]);
printf("\n");
return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
长鲸高淑穆
2019-11-19 · TA获得超过3919个赞
知道大有可为答主
回答量:3113
采纳率:31%
帮助的人:214万
展开全部
4个整数的排序,有使用单个变量和使用数组二种方法实现。
使用单个变量的方法:
#include<stdio.h>
int
main()
{int
a,b,c,d,t;
scanf("%d%d%d%d",&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("%d
%d
%d
%d\n",a,b,c,d);
return
0;
}
使用数组和循环的方法:
#include<stdio.h>
int
main()
{int
a[4],i,j,t;
for(i=0;i<4;i++)
//读入4个数据
scanf("%d",&a[i]);
for(i=0;i<3;i++)
//冒泡排序
for(j=0;j<3-i;j++)
if(a[j]>a[j+1])
{t=a[j];a[j]=a[j+1];a[j+1]=t;}
for(i=0;i<4;i++)
//输出4个数据
printf("%d
",a[i]);
printf("\n");
return
0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
锐贤袭媚
2019-12-06 · TA获得超过3.7万个赞
知道小有建树答主
回答量:1.2万
采纳率:27%
帮助的人:941万
展开全部
你可以利用
C
标准库
stdlib.h
里的
qsort(
)
完成任何类型的数组的快速排序:
#include<stdio.h>
#include<stdlib.h>
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
的位置换一换就行了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
理玉蓉毛妆
2019-04-04 · TA获得超过3.7万个赞
知道大有可为答主
回答量:1.2万
采纳率:33%
帮助的人:1016万
展开全部
4个整数的排序,有使用单个变量和使用数组二种方法实现。
使用单个变量的方法:
#include<stdio.h>
int
main()
{int
a,b,c,d,t;
scanf("%d%d%d%d",&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("%d
%d
%d
%d\n",a,b,c,d);
return
0;
}
使用数组和循环的方法:
#include<stdio.h>
int
main()
{int
a[4],i,j,t;
for(i=0;i<4;i++)
//读入4个数据
scanf("%d",&a[i]);
for(i=0;i<3;i++)
//冒泡排序
for(j=0;j<3-i;j++)
if(a[j]>a[j+1])
{t=a[j];a[j]=a[j+1];a[j+1]=t;}
for(i=0;i<4;i++)
//输出4个数据
printf("%d
",a[i]);
printf("\n");
return
0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(7)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式