编译不通过,这段代码错在哪里?

#include<stdio.h>
#include<stdlib.h>
int main()
{
    int n,i,j,k,t,z,sum=0;
    scanf("%d",&n);
    int a[z][3],b[n];
    for(i=0;i<n;i++)
      for(j=0;j<3;j++)
        scanf("%d",&a[i][j]);
    for(i=0;i<n;i++)
      for(j=0;j<3;j++)
        {
            sum=sum+a[i][j];
            b[i]=sum;
        }
    for(i=0;i<n;i++)
    {
        
        for(j=i+1;j<=n;j++)
        {
            if(b[i]<b[j])
            {
                k=i;
                i=j;
                j=k;
            }
            else if(b[i]==b[j])
            {
                if(a[i][1]<a[j][1])
                {
                    k=i;
                    i=j;
                    j=k;
                }
            }    
        }
    if(j<6) printf("%d %d",i,b[i]);     
    }
    return 0;
}

这行代码有问题

int a[z][3],b[n];

定义数组的长度不能用变量z,n,只能用常量。

 int a[z][3]

因为这里z未赋值,所以定义数组会编译不通过。

咋又编译不通过了呢?你不是说能通过吗?

您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632