besaudade4me 2022-12-08 00:24 采纳率: 100%
浏览 29
已结题

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

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

  • 写回答

1条回答 默认 最新

  • 於黾 2022-12-08 08:57
    关注

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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 12月17日
  • 已采纳回答 12月9日
  • 创建了问题 12月8日

悬赏问题

  • ¥20 求各位懂行的人,注册表能不能看到usb使用得具体信息,干了什么,传输了什么数据
  • ¥15 个人网站被恶意大量访问,怎么办
  • ¥15 Vue3 大型图片数据拖动排序
  • ¥15 Centos / PETGEM
  • ¥15 划分vlan后不通了
  • ¥20 用雷电模拟器安装百达屋apk一直闪退
  • ¥15 算能科技20240506咨询(拒绝大模型回答)
  • ¥15 自适应 AR 模型 参数估计Matlab程序
  • ¥100 角动量包络面如何用MATLAB绘制
  • ¥15 merge函数占用内存过大