请问一下测试点2和4为什么会报错?

img

#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;
}