C语言编程问题 急!判断上三角矩阵 求帮助看哪一步出错就好

题目:输入一个正整数 repeat (0<repeat<10),做 repeat 次下列运算:
输入1 个正整数 n (1≤n≤6)和 n 阶方阵 a 中的元素,如果 a 是上三角矩阵, 输出"YES", 否则, 输出"NO"。上三角矩阵指主对角线以下的元素都为0的矩阵, 主对角线为从矩阵的左上角至右下角的连线。
输入输出示例:括号内为说明
输入:
2 (repeat=2)
3 (n=3)
1 2 3
0 4 5
0 0 6
2 (n=2)
1 0
-8 2
输出:
YES
NO
以下是我的解答,希望帮忙看下哪里有一步有问题,不要答案!谢谢大神们了!
#include <stdio.h>
#include <math.h>
int main(void)
{
int ri,repeat;
int n,i,j;
int flag=0;
int a[6][6];
scanf("%d",&repeat);
for(ri=0;ri<repeat;ri++)
{scanf("%d",&n);
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
scanf("%d",&a[i][j]);
}
for(i=0;i<n;i++)
{
for(j=0;j<i;j++)
if(a[i][j]!=0)
{
flag=1;
break;
}
if(flag)
break;
}

if(flag)
printf("NO\n");
else
printf("YES\n");
}
}

首先说下你错在哪里:

从上图可以看出来是每一次循环计算一次结果,所我的想法是使用数组去记录每次结果,后再打印,代码如下:

#include <stdio.h>
#include <math.h>
#include <stdlib.h>
int main(void)
{
int ri, repeat;
int n, i, j;
int flag[2] = {0};
int a[6][6];
scanf_s("%d", &repeat);
for (ri = 0; ri<repeat; ri++)
{
scanf_s("%d", &n);
for (i = 0; i<n; i++)
{
for (j = 0; j<n; j++)
scanf_s("%d", &a[i][j]);
}
for (i = 0; i<n; i++)
{
for (j = 0; j<i; j++)
if (a[i][j] != 0)
{
//使用数组记录每次的结果
flag[ri] = 1;
break;
}
if (flag)
break;
}
}
//打印的位置调整大循环外
for (int i = 0; i < 2; i++)
{
if (flag[i])
printf("NO\n");
else
printf("YES\n");
}
//专业解答
system("pause");
//点击我头像入群.
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2017-09-13
流程如下0)程序开始1)输入3边2)利用沟古定理判断是否是三角形 是:步骤3 否:步骤83)判断是否等边三角形 是:步骤8 否:步骤44)等腰三角形 是:步骤8 否:步骤55)等边三角形 是:步骤8 否:步骤66)直角三角形 是:步骤8 否:步骤77)其他三角形8)输出结果 由步骤3到达的不是三角形
相似回答