第三周作业

7-1 判断上三角矩阵 (15 分)

上三角矩阵指主对角线以下的元素都为0的矩阵;主对角线为从矩阵的左上角至右下角的连线。

本题要求编写程序,判断一个给定的方阵是否上三角矩阵。

输入格式:

输入第一行给出一个正整数T,为待测矩阵的个数。接下来给出T个矩阵的信息:每个矩阵信息的第一行给出一个不超过10的正整数n。随后n行,每行给出n个整数,其间以空格分隔。

输出格式:

每个矩阵的判断结果占一行。如果输入的矩阵是上三角矩阵,输出“YES”,否则输出“NO”。

输入样例:

2
3
1 2 3
0 4 5
0 0 6
2
1 0
-8 2

输出样例:

YES
NO

#include<stdio.h>
int main(void)
{
    int x,rowcols;
    int num[10][10];
  scanf("%d",&x);
  int flag[x];
    
    for(int k= 0;k<x;k++)
    {
        scanf("%d",&rowcols);
         for(int i = 0;i<rowcols;i++)
         {    
              for(int j = 0;j<rowcols;j++)
            {
               scanf("%d",&num[i][j]);
          
              }
           }
          for(int i = 0;i<rowcols;i++)
         {    
              for(int j = 0;j<i;j++)
            {
                if(num[i][j]==0)
                   flag[k] = 0;
                else{
                    flag[k] = 1;
                    break;
                }
              }
           }
       }
       for(int a = 0;a<x;a++)
       {
            if(flag[a])
            {
               printf("NO\n");
            }
            else 
            {
                 printf("YES\n");
            }
               
       }                
       return 0;
}

代码思路:首先这是一个二维数组,我们需要将数组的值先录入进去,输入之后,两个for循环嵌套找出下三角的下标,再通过一个if的判断出循环,之后的for循环if语句进行最后的判断。

流程图

所遇到的问题及其解决方法:

这个截图是一个错误截图,是原来代码的改变,想请教一下看我截图的大佬,这个代码应该是有问题的,明明第一个值是6却输出的yes。

这个截图呢是找上面三个值的。 

在这道题遇到的问题呢由于时间紧张,我未进行截图,但是我记得的,一个是第二个for循环

for(int j = 0;j<i;j++)这里原来我是j<rowcols  但是根据逻辑这里应该是j<i。还有一个错误是段错误是在pta上的
scanf("%d",&x);
  int flag[x];  scanf应该在int 前面不然会出现答案错误。


作业二
posted @ 2019-03-16 10:34  PeanutLeo  阅读(104)  评论(0)    收藏  举报