江苏旅游局官网报名:这道C程序哪里出错了啊?

来源:百度文库 编辑:高校问答 时间:2024/05/11 16:08:43
【程序61】
题目:打印出杨辉三角形(要求打印出10行如下图)
1.程序分析:
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
我的做法是:
void main()
{int a[10][10],i,j;
printf("\n");
for(i=1;i<=10;i++)
{
j=1;
a[i][j]=1;
}
for(i=2;i<=10;i++)
{
j=i;
a[i][j]=1;
}
for(i=3;i<=10;i++)
{
for(j=2;j<i;j++)
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(" %5d",a[i][j]);
printf("\n");
}
}

for(i=1;i<=10;i++)
i取值应该在0到9之间,你用10哪行,不是溢出了么?
如果想用10可以这样做:
#define N 11
#include <stdio.h>
main()
{int a[N][N],i,j;
printf("\n");
for(i=1;i<=N-1;i++)
{
j=1;
a[i][j]=1;
}
for(i=2;i<=N-1;i++)
{
j=i;
a[i][j]=1;
}
for(i=3;i<=N-1;i++)
{
for(j=2;j<i;j++)
a[i][j]=a[i-1][j-1]+a[i-1][j];
}
for(i=1;i<=N-1;i++)
{
for(j=1;j<=i;j++)
printf(" %5d",a[i][j]);
printf("\n");
}
}