C语言~十个数字从小到大怎么排列~从大到小呢~

我是菜鸟~~说明白点~~谢谢了...这个问题始终搞不懂....... 我是菜鸟~~说明白点~~谢谢了...这个问题始终搞不懂.... 展开
 我来答
知识慧
2018-07-04 · TA获得超过4526个赞
知道答主
回答量:0
采纳率:50%
帮助的人:0
展开全部

//要求任意输入10个数,然后按从小到大顺序输出
#include <stdio.h>
int main()
{
int a[10];
int i,j;
int temp;
printf("请输入10个整数:");
for(i=0;i<10;i++)
{
scanf("%d",&a[i]);
}
for(i=0;i<9;i++)
{
for(j=0;j<9-i;j++)
{
if(a[j]>a[j+1])
{
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
}
printf("排列后顺序为:");
for(i=0;i<10;i++)
{
printf("%d ",a[i]);
}
printf("\n");
return 0;
}

听不清啊
高粉答主

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

用数组来存放十个数字,使用“冒泡排序”来实现排序。10个数字需进行9轮扫描,每次扫描时比较相邻的二个数,如它们不符合要求的大小关系,就交换它们的位置。第一轮扫描结束时,最大的数就“沉”到最后。于是第二的范围就少了一个数。再进行第二两栖型、第三轮,…——直到第9轮就完成了。最后输出结果。

#include<stdio.h>

int main()

{

int a[10],i,j,t;

printf("请输入10个整数:\n");

for(i=0;i<10;i++)

  scanf("%d",&a[i]);

for(i=0;i<9;i++)

  for(j=0;j<9-i;j++)

 if(a[j]>a[j+1])

 {

 t=a[j]; a[j]=a[j+1]; a[j+1]=t;

 }

printf("排序以后的数:\n");

for(i=0;i<10;i++)

  printf("%d ",a[i]);

printf("\n");

system("pause");

 return 0;

}

如果要从大到小排,只要把上面的交换条件

if(a[j]>a[j+1])换为

if(a[j]<a[j+1])就可以了。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
think89412
推荐于2017-10-06 · TA获得超过246个赞
知道答主
回答量:68
采纳率:0%
帮助的人:0
展开全部
菜鸟到什么程度啊?如果学过循环之后还行,没学循环的话应该没法做10个数的太麻烦了。比如3个数从大到小排序
main()
{
int a,b,c,t;
scanf("%d%d%d",&a,&b,&c);
if(a<b){t=a;a=b;b=t}
if(a<c){t=a;a=c;c=t}
if(b<c){t=b;b=c;c=t}
printf("%3d,%3d,%3d",a,b,c);
}
就是一个一个数比较
如果学了循环和数组的话我只会3种:选择法,顺序法,冒泡法。(从小到大)
顺序法(好像叫这个)
for(i=0;i<10;i++)
for(j=i+1;j<10;j++)
if(a[i]>a[j])
{k=a[i];
a[i]=a[j];
a[j]=k;
} 原理是用第一个数和后面的比如果比第一个小,他俩就交换值,继续比较如果还有比交换后的第一个数更小的继续交换值一次一直比到最后一个数,这是第一个数是10个数中最小的数,然后从第2个数开始比较同理第2个数是剩下的9个数中最小的数,以此类推从小到大排序。
选择法(和上面的差不多,只不过执行的步骤少点,如果大量的数做比较,比上面的节省时间)
for(i=0;i<10;i++)
{t=i;
for(j=i;j<10;j++)
if(a[t]>a[j]) t=j;
if(t!=i)或if(t==j)
{j=a[i];
a[i]=a[t];
a[t]=j;
}
冒泡发(我觉得这个方法不好!有不同观点可以无视这句话!)
for(i=0;i<9;i++)
for(j=0;j<9-i;j++)
if(a[j]>a[j+1])
{t=a[j];a[j]=a[j+1];a[j+1]=t;}
原理是相邻的2个数比较,把大的数放后面,一次比较,循环一次就把最大的放到最后一位上了,然后在循环一次把第二大的放到倒数第二位,一次……

不明白发信息哈!如果没学循环可能觉得比较麻烦,学完就觉得简单了,不着急!!!
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
清心又谦恭丶布丁9
2009-08-08 · TA获得超过6604个赞
知道小有建树答主
回答量:1247
采纳率:100%
帮助的人:1866万
展开全部
//用一维数组来排序,3个以上的数
#include<stdlib.h>
#include<stdio.h>
main()
{
int a[10];
int i,j,temp;
for(i=0;i<=9;i++)
scanf("%d",&a[i]);

for(i=0;i<=9;i++)
for(j=i;j<=9;j++)
if(a[i]>a[j])//从小到大这样排。要从大到小,换成a[i]<a[j]
{
temp=a[i];//这三行是经典。又叫冒泡法。请注意
a[i]=a[i+1];
a[i+1]=temp;
}

for(i=0;i<=9;i++)
printf("%d\t",a[i]);
system("pause");}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
jack87918
2009-08-09 · TA获得超过2048个赞
知道小有建树答主
回答量:1618
采纳率:100%
帮助的人:1445万
展开全部
冒泡法

1楼的那个所谓经典三行,应该是两个变量的值的交换吧```
真正的冒泡法就是他写的中间那一块.
理解起来很简单:
有n个数,从第n个数开始和前面的数比较n-1次,如果比前面的数大,就交换位置,否则位置不变.然后这样比较n-1次,顺序就出来了.
和一楼的兄弟潜水去游泳,然后在水底吐泡泡一个道理...

加油哟`~
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(6)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式