jzx_606
2015-05-11 15:37
采纳率: 81.8%
浏览 2.6k
已采纳

帮忙看看这个C语言程序

输入一个正整数n(1≤n≤6)和n 阶矩阵a 中的元素,如果a 是上三角矩阵,输出“YES”;否则,输出“NO”(上三角矩阵,即主对角线以下的元素都为0,主对角线为从矩阵的左上角至右下角的连线)。

【输入形式】

从键盘输入一个正整数n和矩阵阵列。

【输入输出样例1】(下划线部分表示输入)

Input n: 3

Input array:

1 2 3

0 4 5

0 0 6

include

int main( void)
{
int n, i, j;
int a[6][6];
printf("Input n: ");
scanf("%d",&n);
printf("Input array:\n");
for(i=1; i<=n; i++){
for(j=1; j<=n; j++){
scanf("%d",&a[i][j]);}
for (i=1;i<=n;i++){
for(j=n;j>=i;j--){
if (a[i][j] =0) {printf("NO");
break;}

                    else printf("YES");

                    }
                }
            }
  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

6条回答 默认 最新

  • 惜惜lemon 2015-05-12 06:37
    已采纳

    感觉你这个n = 6 的时候会出问题吧。。。数组下表是从0开始的呀 = = 你n = 6的时候输入就越界了。。。把循环里i,j初始化为0试一试 0.0

    点赞 评论
  • 知常曰明 2015-05-11 21:50

    printf("NO")是对的,但是printf("YES")过早。你在个位子仅查到了某一个元素而已。全部查完才可以printf("YES").另外,计算机一般都是先行后列,所以你判断的j循环是不是应该从1到i-1?

    点赞 评论
  • 91program 2015-05-12 00:02

    这个程序,其代码还算简单。如果读代码找不出哪里逻辑错误,建议你单步调试一下。
    学习编程,调试是一个重要的过程。再进一步,可以增加一个 LOG 输出,例如:将输入 YES 时的 i 和 j 打印出来,这样就可以判断出错误的原因。

    点赞 评论
  • flashpslogo024 2015-05-12 06:14

    我估计错误行在判断语句上if (a[i][j] =0) 应为if (a[i][j] ==0)
    这是我初步判断
    我上机测试一下后给你结果

    点赞 评论
  • flashpslogo024 2015-05-12 06:16

    还有一个原因我也怀疑,就是变量i最初赋值是不是应该是i=0啊

    点赞 评论
  • flashpslogo024 2015-05-12 06:17

    for(i=1; i<=n; i++)改为for(i=1; i<n; i++)

    点赞 评论

相关推荐 更多相似问题