这个C语言程序哪里错了?输出以下的杨辉三角形(要求输出10行)。

题目:输出以下的杨辉三角形(要求输出10行)。
错误如图

#include<stdio.h>void main(){ int a[9][9];int i,j; for(i=0,j=0;i<=9;i++) a[i][j]=1; for(i=1,j=1;i<=9;i++,j++) a[i][j]=1; for(i=0;i<=9;i++) { for(j=i+1;j<=9;j++) a[i][j]=0; } for(i=2;i<=9;i++) { for(j=1;j<i;j++) a[i][j]=a[i-1][j-1]+a[i-1][j]; } for(i=0;i<=9;i++) { for(j=0;j<i;j++) printf("%-4d",a[i][j]); printf("%d\n",a[i][j]); }}

第1个回答  2014-01-04
#include<stdio.h>
int main()
{
 int a[10][10];int i,j;//gaiwei 10
 for(i=0,j=0;i<=9;i++)//yuejie
  a[i][j]=1;
 for(i=1,j=1;i<=9;i++,j++)
  a[i][j]=1;
 for(i=0;i<=9;i++)
 {
  for(j=i+1;j<=9;j++)
   a[i][j]=0;
 }
 for(i=2;i<=9;i++)
 {
  for(j=1;j<i;j++)
   a[i][j]=a[i-1][j-1]+a[i-1][j];
 }
 for(i=0;i<=9;i++)
 {
  for(j=0;j<i;j++)
   printf("%-4d",a[i][j]);
   printf("%d\n",a[i][j]);
 }
}

本回答被提问者采纳
第2个回答  2014-01-04
int a[10][10];改成这样就好了。因为如果为9时,你下面的程序是按照10行10列访问内存的,所以就出现了越界的情况。
第3个回答  2014-01-04
#include<stdio.h>
void main()
{
int a[9][9];int i,j;
for(i=0,j=0;i<=9;i++)
a[i][j]=1;
for(i=1,j=1;i<=9;i++,j++)
a[i][j]=1;
for(i=0;i<=9;i++)
{
for(j=i+1;j<=9;j++)
a[i][j]=0;
}
for(i=2;i<=9;i++)
{
for(j=1;j<i;j++)
a[i][j]=a[i-1][j-1]+a[i-1][j];