超简单如何打印杨辉三角

杨辉三角性质

1、每个数等于它上方两数之和。(打印杨辉三角最重要的一条性质,下面不重要)

2、每行数字左右对称,由 1 开始逐渐变大。

3、第n 行的数字有n+1 项。

4、第n 行数字和为2(n-1) (2 的(n-1) 次方)。

5 (a+b) n 的展开式中的各项系数依次对应杨辉三角的第(n+1) 行中的每一项。

6、第n 行的第m个数和第n-m 个数相等,即C(n,m)=C(n,n-m) 。

打印杨辉三角

首先我们把杨辉三角想象成一个二维数组,所以得定义一个二维数组int arr[m][m] = { 0 };
因为我这里只想打印10行得杨辉三角,但是vs不支持c99,所以得这样定义一下#define m 10,方便以后想打印几行就打印几行
注意杨辉三角图片,第一列和最后一列都为1
所以代码首先这样写``

	int x = 0;
	int y = 0;
	//行
	for (x = 1; x <= m; x++)
	{
    
    
		//列
		for (y = 1; y <= x; y++)
		{
    
    
			if (y == 1 || y == x)
			{
    
    
				arr[x][y] = 1;
				printf("%d ", arr[x][y]);
			}

这里用arr[x][y]=1;使因为杨辉三角性质下面一个数,等于上面两个数之和,
在这里插入图片描述
接下来我们看看下面得代码

		//不是第一列和最后一列
		else
			{
    
    
				arr[x][y] = arr[x - 1][y - 1] + arr[x - 1][y];
				printf("%d ", arr[x][y]);
			}

该数就加上,arr[x - 1][y - 1] ,arr[x - 1]

全部代码

#define m 10
int main()
{
    
    
	int arr[m][m] = {
    
     0 };
	int x = 0;
	int y = 0;
	for (x = 1; x <= m; x++)
	{
    
    
		//打印数字
		for (y = 1; y <= x; y++)
		{
    
    
			if (y == 1 || y == x)
			{
    
    
				arr[x][y] = 1;
				printf("%d ", arr[x][y]);
			}
			else
			{
    
    
				arr[x][y] = arr[x - 1][y - 1] + arr[x - 1][y];
				printf("%d ", arr[x][y]);
			}
		}
		printf("\n");

	}
	return 0;
}

效果图

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/fight_p/article/details/124962484