我也来发发段代码,可能效率没楼上的好:qsort函数没有去查它的介绍,所以只是用了最简单的冒泡排序.
程序代码:
程序代码:#include <stdio.h>
#include <stdlib.h>
#define N 10000
int
cmpFun (int n1,int n2)
{
char *p1 =( char[20] ){ 0 } ,
*p2 =( char[20] ){ 0 } , ch = 0 ;
sprintf( p1,"%d",n1 );
sprintf( p2,"%d",n2 );
for ( --p1,--p2; (*++p1 == *++p2) && (p1[1]) ; ) ;
return (*p1 > *p2 ) ? 1 :
(*p1 < *p2 ) ? -1 :
( p1[0] > p2[1]) ? 1 : -1;
}
void
sort (int *arrNum,unsigned long j)
{
#define SWAP(x,y,temp) ( (temp)=(x), (x)=(y), (y)=(temp) )
int temp=0, *walk,
*first = arrNum,
*last = arrNum+j+1;
for ( ; first<--last; )
for ( walk=first-1; ++walk<last; )
if ( cmpFun(walk[0],walk[1]) < 0 ) SWAP(walk[0],walk[1],temp);
}
int
main( void )
{
int input, i,j,ch,nZero=0,
arrNum[N]={0};
for ( j=i=-1; ++i < N ; )
{
scanf( "%d",&input );
if ( input<0 ) break;
else if ( input==0 ) ++nZero;
else arrNum[++j]=input;
while( (ch=getchar()) != '\n' ) ;
}
sort(arrNum,j);
puts ( "\n--------------------------------");
for ( i=-1; ++i<=j ; )
printf( "%d",arrNum[i] );
if ( nZero ) printf( "%0*d",nZero,0);
return 0;
}
悄悄地来。。。 然后悄悄地走。。。。。。









