求教一道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,谢谢了!! 展开
输入一个正整数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,谢谢了!! 展开
1个回答
展开全部
不能那么判断输出 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;
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询