换了好多数据,测试的结果都是正确的,也找朋友帮忙看了,也没找出错误点,请问是哪里出错了呢
你的flag没清零呀
你测试的时候只测试一组,没有测试多组吧
第一组因为flag初始值是0,所以怎么测肯定逻辑都是对的
从第二组开始,flag一旦变成1就变不回来了,那后续判断肯定都错了呀
下面是一个示例代码,望采纳:
#include<stdio.h>
#define MAX_N 10
int main()
{
int t;
scanf("%d", &t);
while (t--) {
int n;
scanf("%d", &n);
int matrix[MAX_N][MAX_N] = {0};
for (int i = 0; i < n; i++)
for (int j = 0; j < n; j++)
scanf("%d", &matrix[i][j]);
int is_triangle = 1;
for (int i = 0; i < n; i++)
for (int j = 0; j < i; j++)
if (matrix[i][j] != 0) {
is_triangle = 0;
break;
}
printf("%s\n", is_triangle ? "YES" : "NO");
}
return 0;
}
注意:C语言中数组的下标是从0开始的,所以循环条件是j < i
,而不是j < n
。