#include<stdio.h>
int main()
{
int t,n,i=0,j=0,k=0,flag=0;
scanf("%d",&t);
for(i=0;i<t;i++)
{
scanf("%d",&n);
int a[n][n];
for(j=0;j<n;j++)
{
for(k=0;k<n;k++)
{
scanf("%d",&a[j][k]);
if(j>k&&a[j][k]!=0)
flag=1;
}
}
if(flag)
printf("NO\n");
else printf("YES\n");
}
return 0;
}
请问我的代码哪里出错了?
修改如下,供参考:
#include<stdio.h>
#define N 11
int main()
{
int t,n,i=0,j=0,k=0,flag=0,a[N][N];
scanf("%d",&t);
while(t--) //for(i=0;i<t;i++)
{
scanf("%d",&n);
for(j=0,flag=0;j<n;j++) //for(j=0;j<n;j++)
{
for(k=0;k<n;k++)
{
scanf("%d",&a[j][k]);
if(j>k&&a[j][k]!=0)
flag=1;
}
}
if(flag)
printf("NO\n");
else
printf("YES\n");
}
return 0;
}
你应该在t的每次循环里重新设置flag=0;
,否则的话,上次flag的结果有可能影响下次输出。
框中可能有些错误:框中输入t,然后t等于2及2以上的,会输入多次n,数组的大小会改变多次。
以上仅供参考,如有任何疑问,可以评论回复,看到即回。
希望对题主有所帮助!可以的话,点个采纳!