C语言--怎样实现输入任意几个数排序

#include<stdio.h>
main()
{
float a[10];
int i,j;
printf("请输入要比较的数:");
for(i=0;i<=9;i++)
{
scanf("%f",&a[i]);
}
for(i=0;i<9;i++)
for(j=0;j<9-i;j++)
if(a[j]>a[j+1])
{a[j]=a[j]+a[j+1];a[j+1]=a[j]-a[j+1];a[j]=a[j]-a[j+1];}
printf("这10个数从小到大排列的顺序是:");
for(i=0;i<=9;i++)
printf("%-7.2f",a[i]);
}
这个是输入10个数用冒泡排序法排列的程序,我想问的是如何实现任意多个数排序,比如说我输入10个,100,250个都能将其排序!
非常感谢!
一楼的意思我懂,我想实现的是不用每次都修改源程序,就可以实现任意多个数排序!就像EXCEL里面的排序函数一样,你无论输入多少个数,他都可以自动排序,而不用修改它的源代码!
我现在感觉我是在寻找C语言中如何能够实现数组的“动态定义”(C不允许直接对数组直接动态定义,比如说int a[n];)。

第1个回答  2009-12-17
#include<stdio.h>
#include<stdlib.h>
int main()
{
float *a,temp;
int i,j,n;
printf("你要比较多少个数?\n");
scanf("%d",&n);
a=(float*)calloc(n,sizeof(float));
if(a==NULL)
{
printf("application failure.\n");
exit(1);
}
printf("请输入要比较的数:\n");
for(i=0;i<n;i++)
{
scanf("%f",&a[i]);
}
for(i=0;i<n-1;i++)
for(j=i+1;j<n;j++)
if(a[i]>a[j])
{
temp=a[i];
a[i]=a[j];
a[j]=temp;
}
printf("这%d个数从小到大排列的顺序是:\n",n);
for(i=0;i<n;i++)
printf("%-7.2f",a[i]);
free(a);
return 0;
}

相关了解……

你可能感兴趣的内容

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