超简单如何打印杨辉三角

杨辉三角

  • 杨辉三角性质
  • 打印杨辉三角
  • 全部代码
  • 效果图

杨辉三角性质

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;使因为杨辉三角性质下面一个数,等于上面两个数之和,
超简单如何打印杨辉三角_第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;
}

效果图

超简单如何打印杨辉三角_第2张图片

你可能感兴趣的:(C语言从入门到精通,c语言,算法,排序算法)