求教一道C语言题目

【问题描述】输入一个正整数n(1≤n≤6)和n阶矩阵a中的元素,如果a是上三角矩阵,输出“YES”;否则,输出“NO”(上三角矩阵,即主对角线以下的元素都为0,主对角线为... 【问题描述】
输入一个正整数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
YES
我的答案:
#include<stdio.h>
int main(void)
{
int i,j,n,a[6][6];
printf("Input n: ");
scanf("%d",&n);

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

}
}

return 0;
}
求解如何让a[i][j]!=0时输出NO并且结束循环,一直=0时输出YES,谢谢了!!
展开
 我来答
zhuhuaizhong
2013-05-15 · TA获得超过7276个赞
知道大有可为答主
回答量:3978
采纳率:63%
帮助的人:3589万
展开全部

不能那么判断输出 NO,那样的话不就不知道什么时候输出 YES 了吗

可以设定一个标记 flag ,先假设是上三角矩阵,用 1代表,等判断出不是了,将其置为 0 ,然后判断完毕之后接可以通过这个标记来决定输出什么信息了。


#include<stdio.h>
int main(void)
{
    int i,j,n,a[6][6];
    printf("Input n: ");
    scanf("%d",&n);
       
    printf("Input array: \n");
    for(i=0;i<n;i++)
        for(j=0;j<n;j++)
            scanf("%d",&a[i][j]);
           
        int flag=1;//先假设是
        for(i=1;i<n;i++)
        {
            for(j=0;j<i;j++)
            {
                if(a[i][j]!=0)
                {
                    flag=0;//找到一个不为0的,设置标记为0,代表不是
                    break;
                }
            }
            if(flag=0)  //已经有不是的了,后边的没必要继续判断了
                break;
        }
        //根据标记输出不同信息
        if(flag==1)
            printf("YES");
        else
            printf("NO");
           
        return 0;
}


推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式