就不放原题,直接给自己的思路和代码啦
思路:我其实能想到最简便的方法就是,创建一个char型的数组,然后对数组进行排序,从小到大,然后输出第一个不为0的数,然后再依次输出好吧,由于自己没读题的缘故,发现问题在于输入这部分,那就创建一个数组,数组的位置就是对应的值,数组里的内容就是对应值的数量
#include<stdio.h>
#include<string.h>
//组个最小数
int main()
{
double a[10]={0};//创建存储个数的数组,并初始化
int i;
double sum=0;
int zero=0;
for(i=0;i<10;i++){
scanf("%lf",&a[i]);//然后依次输入其中的个数
}
//然后统计输入的个数
for(i=0;i<10;i++){
sum+=a[i];
}
//再开始输出,主要就是在第一位上面,对0存不存在进行分类
if(a[0]!=0){//意思就是存在,0有几个就除了第一位之后,全是0
for(i=1;i<10;i++){
if(a[i]!=0){//找第一个不为0 的数
printf("%d",i);
a[i]--;
for(i=0;i<a[0];i++){
printf("%d",zero);
}
}
break;//找到第一个就跳出循环
}
//在进行一次循环,对剩下的操作
for(i=1;i<10;i++){
while(a[i]!=0){
printf("%d",i);
a[i]--;
}
}
}
else{//那就是没有0,直接计算
for(i=1;i<10;i++){
while(a[i]!=0){
printf("%d",i);
a[i]--;
}
}
}
return 0;
}