该问题(上三角矩阵)显示部分正确,一直测试却找不到问题所在,希望各位指出错误并能够对鄙人的程序指出优化意见
描述
输入一个n行n列的矩阵,判断该矩阵是否为上三角矩阵。
所谓上三矩阵是指主对角线以下的元素都为0的矩阵,而主对角线为从矩阵的左上角至右下角的连线。
输入
在一行中输入一个整数n(0<n≤20);
接着输入n行数据,每行有n个整数,每个整数之间用空格隔开。
输出
在一行中输出一个字符串。如果输入的矩阵是上三角矩阵,则输出“Yes”,否则输出“No”。
#include<stdio.h>
int main()
{
int n, i, j, k, t = 0;
scanf("%d", &n);
int a[n][n];
for(i=0; i<n; i++)
for(j=0; j<n; j++)
scanf("%d", &a[i][j]);
int x, y;
for(i=0; i<n; i++)
{
for(j=0; j<n; j++)
{
for(x=0; x<n; x++)
{
y = x;
if(x>i && y>j && a[i][j] == 0)
{
t = 1;
if(i == x && j == x)
{
t = 0;
if(x==i && y==j && a[i][j] == 0)
t = 1;
}
}
}
}
}
if(t == 1) printf("Yes");
else printf("No");
return 0;
}
测试数据为:
3
1 2 3
0 4 5
0 0 6
显示:
Yes
或者:
2
1 0
2 3
显示:
No