用一维数组打印杨辉三角的过程

杨辉三角:

    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;
}

猜你喜欢

转载自blog.csdn.net/weixin_55848732/article/details/132011546