我也来发发段代码,可能效率没楼上的好: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; }
悄悄地来。。。 然后悄悄地走。。。。。。