组数问题c程序编写?

来源:百度知道 编辑:UC知道 时间:2024/05/08 09:44:26
设有n个正整数(n<=20),将它们联成一排,组成一个最大的多位数。程序输入:n,程序输出:n个书连接成的多为位数。
以下是设计思路:
可以将问题这样变化一下:
比如我输入的是123,2,33,1006,12这几个数
我先找到最大的数字位数为四位,再将所有的数字变为四位数:
1230,2000,3300,1006,1200
然后进行排序
3300,2000,1230,1200,1006
这样将后面加上的0去掉的序列就是最大数字了
于是连成的最大的数字就是
332123121006

恩,算法很好,学习了

main()
{
int a[5],x,i,j,b=0,c=0,t;
clrscr();
for(i=0;i<5;i++)
{
scanf("%d",&x);
a[i]=x;
}
for(i=0;i<4;i++)
{
b=a[i];
while(b>10)
{
b=b/10;
}
for(j=i+1;j<5;j++)
{
c=a[j];
while(c>10)
{
c=c/10;
}
if(b<c)
{
t=a[i];
a[i]=a[j];
a[j]=t;
}
}

}
for(i=0;i<5;i++)
printf("%d",a[i]);
}

你说的方法没有想出来,不过这么也能达到你想要的要求!