法一:用三维数组
#include <stdio.h>
#include <stdlib.h>
int main(){
int n,i,j,k,l;
int a[11][11][11];
scanf("%d",&n);
int T[n];
for(i=0;i<n;i++){ //读入矩阵,第一次没有用三维数组,导致最后一次输入的数覆盖了前面的数据
scanf("%d",&T[i]);
j = T[i];
for(k=0;k<j;k++){
for(l=0;l<j;l++){
scanf("%d",&a[i][k][l]);
}
// scanf("\n");
}
}
int flag = 0;
for(i=0;i<n;i++){
j = T[i];
for(k=1;k<j;k++){
for(l=0;l<k;l++){
if(a[i][k][l]!=0){
flag++;
}
}
}
if(flag == 0){
printf("YES\n");
}else{
printf("NO\n");
flag = 0;
}
}
}
法二用二维数组存储,每次输入一个矩阵后先判断是否是上三角矩阵,然后把结果存在一个一维数组中,最后再遍历一维数组打印结果,代码略