C语言如何输入十个数,按从小到大顺序排列!为什么我的程序不对请你们看看。

#include <stdio.h>
int main()
{
int a[10];
int i,j;
int t;
printf("请输入10个整数:");
for(i=0;i<10;i++)
{
scanf("%d",&a[i]);
}
for(i=0;i<10;i++)
{

if(a[i]>a[i+1])
{
t=a[i];
a[i]=a[i+1];
a[i+1]=t;
}

}
printf("排列后顺序为:");
for(i=0;i<10;i++)
{
printf("%d ",a[i]);
}
printf("\n");

}

#include <stdio.h>
int main()
{
int a[10];
int i,j;
int t;
printf("请输入10个整数:");
for(i=0;i<10;i++)
{
scanf("%d",&a[i]);
}
for(i=0;i<10;i++)
{
for(j=i+1;j<10;j++) // 
if(a[i]>a[j])
{
t=a[i];
a[i]=a[j];
a[j]=t;
}

}
printf("排列后顺序为:");
for(i=0;i<10;i++)
{
printf("%d ",a[i]);
}
printf("\n");

}

排序需要使用嵌套循环,单循环只能完成一个数一次排序,不能完成总体排序。

追问

谢谢,能给我具体的说一下思路吗?我有点迷?谢谢。

追答

起泡排序(也叫冒泡排序),是一次比较找出一个最小或最大的数放在前面或最后面,
然后,把剩下的数继续做这样的比较与交换,直到没有可交换的。
比如,3 2 1排降序:
一次起泡:
比较交换3与2,得2 3 1,再比较交换2与1,得1 3 2(如果单层循环到这就结束了)
二次起泡:
比较交换3与2,得1 2 3
细节可以百度一下冒泡排序的原理。

温馨提示:答案为网友推荐,仅供参考

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网