此程序为死循环,请问错误的原因是什么?如何改正?

来源:百度知道 编辑:UC知道 时间:2024/05/23 00:31:10
是输出杨辉三角形的前七行的题目
#include <stdio.h>
void main ()
{
int i,j;
int a[7][7];
for(i=0;i<7;i++)
{
for(j=0;j<7;j++)
{
if(j=0) a[i][j]=1;
else if(i<j) a[i][j]=0;
else a[i][j]=a[i-1][j]+a[i-1][j-1];
if(a[i][j]=0) printf(" ");
else printf("%3d",a[i][j]);
}
printf("\n");
}
}

错误原因在于错误使用比较运算符
比较运算符是==,而=是赋值运算符

程序在if中使用=,意味着改变了循环变量,使得条件永远成立
应用==比较
改好程序如下
#include <stdio.h>
void main ()
{
int i,j;
int a[7][7];
for(i=0;i<7;i++)
{
for(j=0;j<7;j++)
{
if(j==0) a[i][j]=1;
else if(i<j) a[i][j]=0;
else a[i][j]=a[i-1][j]+a[i-1][j-1];
if(a[i][j]==0) printf(" ");
else printf("%3d",a[i][j]);
}
printf("\n");
}
}

看起来不像啊

是不是编译出错了?