上三角矩阵显示部分正确问题

该问题(上三角矩阵)显示部分正确,一直测试却找不到问题所在,希望各位指出错误并能够对鄙人的程序指出优化意见
描述
输入一个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

你这逻辑显然不对
一共只有2维数组,你为什么会写出个三重循环来
你定义一个y=x,后面y就不变了,那你直接用x不好吗,y是干什么的
你这逻辑乱糟糟的,还是先从头捋清楚如果手动判断是怎么样的过程,然后用代码自动实现这个过程
你自己回头看代码,能讲清楚它是怎么工作的吗
讲不清楚就删掉重来,不要在一个混乱的代码上修补
-=-=-=
提示:第i行前i个数是0,并且后面其余的数都不是0
如果不满足条件就立即break不要浪费时间,循环完毕则说明是个上三角矩阵