键盘输入N(N ≤ 20)个0-9数字,你可以以任意顺序排列这些数字,但必须全部使用。目标是使得最后得到的数尽可能小(注意0不能做首位)。
例如:
给定两个0,两个1,三个5,一个8,我们得到的最小的数就是10015558。
编程要求:
1、N的取值:N ≤ 20;
2、输入的数中至少包含一个非零数;
3、请利用数组的方式实现;
4、请严格按照输出效果输出;(影响成绩评定)
5、 任务提交代码时需保证其符合行业代码规范,需进行必要的缩进及换行。(影响成绩评定)
运行效果1:
请输入数字个数N:6
请输入6个数字:0 1 7 2 0 3
组成的最小数是:100237
请按任意键继续. . .
运行效果2:
请输入数字个数N:8
请输入8个数字:0 1 5 5 8 1 0 5
组成的最小数是:10015558
请按任意键继续. . .
#include <stdio.h>
int main(void)
{
int N ,arr[20] ,i ,j ,temp;
printf("请输入数字个数N:");
scanf("%d" ,&N);
printf("请输入%d个数字:", N);
for (i = 0; i < N; i++)
scanf("%d" ,&arr[i]);
for (i = 0; i < N - 1; i++)
for(j = 0; j < N - i -1 ; ++j)
{
if(arr[j] > arr[j+1])
{
temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
for (i = 0; i < N; i++)
if(arr[i] != 0)
{
temp = arr[i];
arr[i] = arr[0];
arr[0] = temp;
break;
}
printf("组成的最小数是:" );
for (i = 0; i < N; i++)
printf("%d" ,arr[i]);
printf("\n");
return 0;
}
#include <stdio.h>
int main(void)
{
int a[21];
int n,i,j,m;
printf("请输入数字的个数N: ");
scanf("%d",&n);
printf("请输入%d个数字: ",n);
for(i=0;i<n;++i){
scanf("%d",&a[i]);
}
for(i=0;i<n-1;++i){
for(j=0;j<n-1;++j){
if(a[j]>a[j+1]){
m=a[j];
a[j]=a[j+1];
a[j+1]=m;
}
}
}
for(i=0;a[i]==0;++i);
m=a[i];
a[i]=a[0];
a[0]=m;
printf("组成最小的数是: ");
for(i=0;i<n;++i){
printf("%d",a[i]);
}
printf("\n");
return 0;
}