c语言天梯室不知哪错了

img


#include<stdio.h>
int main()
{
int n,a[102],b[102][102]={0};
int i,j,k,t;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
scanf("%d",&a[i]);
a[i]*=10;
}
t=0;
i=k=1;
while(t!=n-1&&t!=n)
{
for(j=1;j<=n;j++)
{
if(a[j]>0)
{
b[j][i]=k;
k++;
a[j]--;
}
if(a[j]==0)
{
t++;
a[j]=-1;
}
}
i++;
}
k++;
for(j=1;j<=n&&n!=1;j++)
{
if(a[j]>0)
{
while(a[j])
{
b[j][i]=k;
k+=2;
i++;
a[j]--;
}
}
}
for(j=k=1;j<=n&&n==1;j++)
{
if(a[j]>0)
{
while(a[j])
{
b[j][i]=k;
k+=2;
i++;
a[j]--;
}
}
}
for(i=1;i<=n;i++)
{
printf("#%d\n",i);
for(j=1;b[i][j]!=0;j++)
{
if(j%10==0)
printf("%d",b[i][j]);
else
printf("%d ",b[i][j]);
if(j%10==0)
printf("\n");
}
}
}

修改如下,供参考:

#include <stdio.h>
int main()
{
    int n, a[101] = {0}, b[101][101] = { 0 };
    int i, j, k, t;
    scanf("%d", &n);
    for (i = 1; i <= n; i++)
    {
        scanf("%d", &a[i]);
        a[i] *= 10;
    }
    t = 0;
    i = k = 1;
    while (t != n - 1)  //&&)t != n
    {
        for (j = 1; j <= n; j++)
        {
            if (a[j] > 0)
            {
                b[j][i] = k;
                k++;
                a[j]--;
            }
            if (a[j] == 0)
            {
                t++;
                a[j] = -1;
            }
        }
        i++;
    }
    k++;
    for (j = 1; j <= n; j++)
    {
        if (a[j] > 0)
        {
            while (a[j])
            {
                b[j][i] = k;
                k += 2;
                i++;
                a[j]--;
            }
        }
    }
    for (i = 1; i <= n; i++)
    {
        printf("#%d\n", i);
        for (j = 1; b[i][j] != 0; j++)
        {
            if (j % 10 == 0)
                printf("%d\n", b[i][j]);
            else
                printf("%d ", b[i][j]);
        }
    }
}