#include<iostream>
using namespace std;
int main()
{
int i=0,j=0,a[10];
for (i = 0; i < 10; i++)
{
cin >> a[i];
}
if (a[0] == 0)
{
for (i = 1; i < 10; i++)
{
for (j=1;j<=a[i];j++)
{
cout << i;
}
}
}
else
{
for (i=1;i<10;i++)
{
if (a[i]!=0)
{
for (j = 1; j==1; j++)
{
cout << i;
a[i]--;
}
}
break;
}
for (i = 0; i < 10; i++)
{
for (j = 1; j <= a[i]; j++)
{
cout << i;
}
}
}
}
肯定是因为待测试的数据里出现了0,而你没好好处理
你应该先对所有数据排序,
然后把0之后的第1个非0数字挪到最左边,就是最小的数字了
你是要计算什么的
#include<iostream>
#include<string>
#include <cstring>
#include <cstdlib>
using namespace std;
int main(){
int i=0,j=0,a[10],num=0,flag=0;
string zifu="";
for (i = 0; i < 10; i++)
{
cin >> a[i];
}
for(i=0;i<10;i++){
for(j=0;j<10-i;j++){
if(a[j]>a[j+1]){
int temp=a[j+1];
a[j+1]=a[j];
a[j]=temp;
}
}
}
for(i=0;i<10;i++){
if(a[i]==0){
num=num+1;
flag=1;
}else{
printf("%d",a[i]);
if(flag==1){
for(j=0;j<num;j++){
printf("%d",a[j]);
}
}
flag=0;
}
}
return 0;
}