杨辉三角:
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
... ... ... ... .... ....
定义一个数组yf[7],本例只打印6行,首先让yf[1]=1,在for循环中让最后一个数y[i]=1,这样只需要计算中间的数即可,中间的数等于更新前的数组的前两个元素相加之和,由于一元数组每次都需要更新,因此从逆序更新每一个数组元素。即for循环for(j=i-1;j>=2;j--) {yf[j]=yf[j]+yf[j-1];}。
#include<stdio.h>
#define N 6
int main()
{
//利用一维数组打印杨辉三角形
int yf[N+1],i,j;
yf[1]=1;
printf("%5d\n",yf[1]);
for(i=2;i<=N;i++)
{
yf[i]=1;
for(j=i-1;j>=2;j--)//i等于2时for循环是不能进入的
{
yf[j]=yf[j]+yf[j-1];
}
for(j=1;j<=i;j++)
{
printf("%5d",yf[j]);
}
printf("\n");
}
return 0;
}
后期补充:二维数组打印如下:
#include<stdio.h>
#define N 10
//打印杨辉三角
int main()
{
int i,j;
int yh[N][N]={0};
yh[0][0]=1;
for(i=1;i<N;i++)
{
yh[i][0]=yh[i][i]=1;
for(j=1;j<i;j++)
{
yh[i][j]=yh[i-1][j-1]+yh[i-1][j];
}
}
for(i=0;i<N;i++)
{
for(j=0;j<=i;j++)
{
printf("%5d",yh[i][j]);
}
printf("\n");
}
return 0;
}