一个小问题
以下一个程序为什么不加绿色的语句结果会是死循环呀?
main()
{ int i,j,a[11][11];
for( i=1;i<=11;i++)
for( j=1;j<=i;j++)
{ if(j==1||j==i)
a[i][j]=1;
else
a[i][j]=a[i-1][j-1]+a[i-1][j];
}
for( i=1;i<=10;i++)
{ for( j=1;j<=i;j++)
printf( "%d,",a[i][j]);
printf("\n");
}
}[ ----------------解决方案--------------------------------------------------------
以下是引用powermike在2005-7-25 19:57:07的发言:
以下一个程序为什么不加绿色的语句结果会是死循环呀?
main()
{ int i,j,a[11][11];
for( i=1;i<=11;i++)
for( j=1;j<=i;j++)
{ if(j==1||j==i)
a[i][j]=1;
else
a[i][j]=a[i-1][j-1]+a[i-1][j];
}
for( i=1;i<=10;i++)
{ for( j=1;j<=i;j++)
printf( "%d,",a[i][j]);
printf("\n");
}
}[ <---这个是什么?
----------------解决方案--------------------------------------------------------
那个写错了,把那个符号去掉
----------------解决方案--------------------------------------------------------
这个程序不是出错在绿色的那句
而是出错在数组的边界的判断
不知道你是不是故意的,要知道,数组是从0开始计算的
----------------解决方案--------------------------------------------------------
a[11][11]的边界是0-10,for语句的判断条件只能是i<=10或者i<11,j的判断条件也是一样。
----------------解决方案--------------------------------------------------------