读取一列整数,并按升序排列他们,最后打印这个列表。运行环境:Turbo2.0
#include<stdio.h>
#include<stdlib.h>
int
compare_integers(void const*a,void const*b)
{
register int const *pa=a;
register int const *pb=b;
return *pa>*pb?1:*pa<*pb?-1:0;
}
int
main()
{
int *array;
int n_values;
int i;
printf("How many values are there?");
if(scanf("%d",&n_values)!=1||n_values<=0)
{
printf("Illegal number of values.\n");
exit(EXIT_FAILURE);
}
array=malloc(n_values*sizeof(int));
if(array==NULL)
{
printf("Can't get memory for that many values.\n");
exit(EXIT_FAILURE);
}
for(i=0;i<n_values;i+=1)
{
if(scanf("%d",&array[i])!=1)
{
printf("Error reading value #%d\n",i);
free(array);
exit(EXIT_FAILURE);
}
}
qsort(array,n_values,sizeof(int),compare_integers);
for(i=0;i<n_values;i+=1)
printf("%d\n",array[i]);
free(array);
return EXIT_SUCCESS;
}