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日

悬赏问题

  • ¥15 速帮,学校需要在外上班没空
  • ¥15 人在外地出差,速帮一点点
  • ¥15 如何使用canvas在图片上进行如下的标注,以下代码不起作用,如何修改
  • ¥15 Windows 系统cmd后提示“加载用户设置时遇到错误”
  • ¥50 vue router 动态路由问题
  • ¥15 关于#.net#的问题:End Function
  • ¥15 无法import pycausal
  • ¥15 VS2022创建MVC framework提示:预安装的程序包具有对缺少的注册表值的引用
  • ¥15 weditor无法连接模拟器Local server not started, start with?
  • ¥20 6-3 String类定义