设有n个整数,排成一排,组成一个多位数。求最大的多位数。n暂时定为20.
ver1.0 简单实现了功能,函数,指针等需要继续更新。
#include <math.h>
void main()
{
int a[20],n;
int i,j,k;
int temp,count = 0;
printf("请输入你想输入整数的个数:\n");
scanf("%d",&n);
printf("请输入各个值:\n");
for(i=0;i<n;i++)
scanf("%d",&a[i]);
for(i = 0;i < n;i++)///把每个数都变成四位数
{
if(a[i] < 10)
a[i] *= 1000;
else if(a[i] >= 10 && a[i] < 100)
a[i] *= 100;
else if(a[i] > 100 && a[i] < 1000)
a[i] *= 10;
}
for(i = 0;i < n-1;i++)///简单选择排序法按从大到小的顺序排序
{
k = i;
for(j = i+1;j < n;j++)
{
if(a[k] < a[j])
{
k = j;
if(k != i)
{
temp = a[i];
a[i] = a[k];
a[k] = temp;
}
}
}
}
for(i = 0;i < n;i++)
{
if(a[i] % 1000 == 0)
{
a[i] /= 1000;
count += 3;
}
else if(a[i] % 100 ==0)
{
a[i] /= 100;
count += 2;
}
else if(a[i] % 10 ==0)
{
a[i] /= 10;
count ++;
}
}
int num,weishu = 0;
long double sum = 0;
for(i = 0;i < n;i++)
{
if(a[i] < 10)
{
weishu ++;
sum += a[i] * pow(10, (4*n - count - weishu));
}
else if(a[i] > 10 && a[i] < 100)
{
weishu += 2;
sum += a[i] * pow(10, (4*n - count - weishu));
}
else if(a[i] > 100 && a[i] < 1000)
{
weishu += 3;
sum += a[i] * pow(10, (4*n - count - weishu));
}
else if(a[i] > 1000)
{
weishu += 4;
sum += a[i] * pow(10, (4*n - count - weishu));
}
}
printf("最大的组合多位数是%32.0lf",sum);
}