错误代码
#include <stdio.h>
int main()
{
int i,j,k;
int T,n;
scanf("%d",&T);
for (k=0; k<T; k++) {
//读入待判断矩阵大小;
scanf("%d",&n);
int flag=1;
//判断该矩阵是否为上三角矩阵;
int a[10][10]={0};
for (i=0; i<n; i++) {
for (j=0; j<n; j++) {
scanf("%d",&a[i][j]);
//printf("%d",a[i][j]);测试用
if (i>j&&a[i][j]!=0){
flag=0;
}//判断不是上三角矩形;
}
}
if (flag == 1){
printf("YES\n");
}else{
printf("NO\n");
}
}
return 0;
}
正确代码
# include <stdio.h>
// 判断一个给定的方阵是否是上三角矩阵
int main(){
int T;
scanf("%d",&T);
int i;
for (i=0;i<T;i++){
// 每次都需要初始化二维数组
int n;
scanf("%d",&n);
int a[n][n];
int j,k,status = 1;
for (j=0;j<n;j++){
for (k=0;k<n;k++){
scanf("%d",&a[j][k]);
// 所谓的上三角矩阵就是 行标大于列表元素是0
if (j > k && a[j][k] != 0){
status = 0;
}
}
}
if (status == 1){
printf("YES\n");
}else{
printf("NO\n");
}
}
return 0;
}
为什么?