题目描述
设有n个正整数,将他们连接成一排,组成一个最大的多位整数。例如:n=3时,3个整数13、312、343连成的最大整数为:34331213。
输入
包含多组测试数据。
每组测试数据的第1行为N(0表示结束),第2行为N个数。
输出
连接成的最大整数。
样例输入
3
13 312 343
0
样例输出
34331213
#include <stdio.h>
int CompareInt(int a,int b)
{
int a1=a,b1=b,la=10,lb=10;
while(a/la)
{
la*=10;
}
while(b/lb)
{
lb*=10;
}
return (a*lb+b)-(b*la+a);
}
int main()
{
int i,j,n;
int data[20],temp;
while(1)
{
scanf("%d",&n);
if(n<=0||n>20) break;
for(i=0;i<n;i++)
{
scanf("%d",&data[i]);
}
for(j=0;j<n-1;j++)
for(i=0;i<n-1-j;i++)
{
if(CompareInt(data[i],data[i+1])<0)
{
temp=data[i+1];
data[i+1]=data[i];
data[i]=temp;
}
}
for(i=0;i<n;i++)
{
printf("%d",data[i]);
}
printf("\n");
}
return 0;
}