这道题是要我们将给的数字进行接龙成一个很长的数字,然后找出其中最大的数字。所以排序不是
比较两个数字的大小,而是比较两个数字按照前后顺序接龙获得的数字的大小,因为数字可能很大
所以用数组,借助strcmp函数来排序。最后再将排序后的数组输出。这次熟悉了下strcat函数,看
来蛮好用。
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
char num[55][100];
int n;
void init()
{
for( int i = 0; i < n; i ++)
scanf( "%s", num[i]);
}
void output()
{
for( int i = 0; i < n; i ++)
printf( "%s", num[i]);
printf("\n");
}
int cmp( const void *_p, const void *_q)
{
char s1[500], s2[500];
char *p = (char *)_p;
char *q = (char *)_q;
strcpy( s1, p);
strcat( s1, q);
strcpy( s2, q);
strcat( s2, p);
return strcmp( s1, s2) < 0 ? 1 : -1;
}
int main()
{
while(true)
{
scanf( "%d", &n);
if( !n) break;
init();
qsort( num, n, sizeof(num[0]), cmp);
output();
}
return 0;
}
浙公网安备 33010602011771号