有一组数据试编写一程序,将它们按由大到小的确顺序排列并输 10

有那位兄台帮忙解答一下数据组为:3,8,2,9,10,30,1,2... 有那位兄台帮忙解答一下
数据组为:3,8,2,9,10,30,1,2
展开
 我来答
百度网友f97e85c
2006-05-25 · TA获得超过358个赞
知道小有建树答主
回答量:271
采纳率:0%
帮助的人:0
展开全部
#include "stdio.h"
main()
{int i,j,t;
int a[8]={3,8,2,9,10,30,1,2}; /*定义一个数组*/
for (i=0;i<8;i++) /*比较的次数*/
{for (j=7;j>i;j--) /*从数组的右端开始比较大小*/
if (a[j]<a[j-1]) /*较小的那一个往左移动*/
{t=a[j];
a[j]=a[j-1];
a[j-1]=t;
}
}
for (i=7;i>=0;i--)
printf("%d ",a[i]);
}

/*因为较小的在左边,要求是按大到小的顺序排列,所以要把右边的先输出。*/

不知道我这样写你看不看得懂。。这个方法是气泡法按小到大排序,最后把大的先输出。
xiaolinhui
2006-05-25 · 超过26用户采纳过TA的回答
知道答主
回答量:138
采纳率:0%
帮助的人:0
展开全部
#include<stdio.h>
main()
{
int a[8],i,max,temp;
for(i=0;i<8;i++)
scanf("%d",&a[i]);
max=a[0];
for(i=1;i<8;i++)
if(max<a[i])
{temp=max;max=a[i];a[i]=temp;}
for(i=0;i<8;i++)
printf("%d",a[i]);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wchhuangya
2006-05-25
知道答主
回答量:28
采纳率:0%
帮助的人:21.9万
展开全部
main()
{int i,j,p,q,s,a[8]={3,8,2,9,10,30,1,2};
clrscr();\\清屏
for(i=0;i<8;i++)
{p=i;q=a[i];
for(j=i+1;j<8;j++)
if(q<a[j])\\判断是否交换
{p=j;q=a[j];}
if(i!=p)\\判断是否已经交换
{s=a[i];a[i]=a[p];a[p]=s;}\\交换
printf(\"a[%d]=%d\\n\",i,a[i]);
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2006-05-25
展开全部
上面的3种方法都很好哦
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式