问题描述
- 帮忙看看这个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""); } } }
解决方案
感觉你这个n = 6 的时候会出问题吧。。。数组下表是从0开始的呀 = = 你n = 6的时候输入就越界了。。。把循环里i,j初始化为0试一试 0.0
解决方案二:
printf(""NO"")是对的,但是printf(""YES"")过早。你在个位子仅查到了某一个元素而已。全部查完才可以printf(""YES"").另外计算机一般都是先行后列所以你判断的j循环是不是应该从1到i-1?
解决方案三:
这个程序,其代码还算简单。如果读代码找不出哪里逻辑错误,建议你单步调试一下。
学习编程,调试是一个重要的过程。再进一步,可以增加一个 LOG 输出,例如:将输入 YES 时的 i 和 j 打印出来,这样就可以判断出错误的原因。
解决方案四:
我估计错误行在判断语句上if (a[i][j] =0) 应为if (a[i][j] ==0)
这是我初步判断
我上机测试一下后给你结果
解决方案五:
还有一个原因我也怀疑,就是变量i最初赋值是不是应该是i=0啊
解决方案六:
for(i=1; i<=n; i++)改为for(i=1; i<n; i++)