C语言输出杨辉三角形,并求和

本文介绍了杨辉三角形的特点,如其数字表示的组合数和二项式系数,以及如何通过代码实现一个4行的杨辉三角形打印,展示了计算每个数字的公式。代码中运用了外部和内部循环来控制行数和数字的输出。
摘要由CSDN通过智能技术生成

一、杨辉三角形特点

1.每一行的首尾都是1。

2.每个数字有它上方的两个数字求和所得。

3.杨辉三角形中的每个数字表示一个组合数。第 i行第 j列的数字对应着 C(i-1, j-1),即从 (i-1) 个元素中选择 (j-1) 个元素的方法数。

4. 特殊性质:杨辉三角形的每一行都是二项式系数展开式的系数。例如,((a+b)^n) 的展开式中的系数就可以在第 (n) 行找到。

因此,杨辉三角形提供了一种直观的方式来理解和计算组合数。

二、对应的代码

通过两个循环来打印杨辉三角形,外部循环控制行数,内部循环控制每行输出的数字

当 `rows` 被设置为 4 时,程序的执行逻辑如下:

(1)用户被要求输入要打印的行数。

(2)因为 `rows` 被设置为 4,所以程序将打印一个 4 行的杨辉三角形。

(3)外部循环 `for (i = 0; i < rows; i++)` 开始执行,`i` 从 0 开始,直到 3(因为 `rows` 是 4)。

(4) 内部循环 `for (space = 1; space <= rows - i; space++)` 开始执行,这个循环负责打印每行前面的空格确保输出的数字居中对齐。对于每一行来说,行数 `rows - i` 决定了当前行的前导空格数,随着行数增加,前导空格数逐渐减少。

   - 当 `i` 是 0 时,第一行打印 4 个前导空格;

   - 当 `i` 是 1 时,第二行打印 3个前导空格;

   - 当 `i` 是 2 时,第三行打印 2个前导空格;

   - 当 `i` 是 3 时,第四行打印 1个前导空格。

(5)内部循环 `for (j = 0; j <= i; j++)` 开始执行,负责打印当前行的数字。

   - 对于每一行,`j` 从 0 开始,直到 `i`。

   - 当 `j` 是 0 时,`coef` 被设置为 1。

   - 对于每一行的其余位置,`coef` 的值通过杨辉三角形的规则计算而来:

`coef = coef * (i - j + 1) / j`。这个公式表示当前位置的值是上一行相邻两个位置的值之和。

举例:假设 `rows` 被设置为 4。

当 `i` 为 0 时(第一行):

- `j` 从 0 开始,直到 `i`(也就是 0),所以内部循环只执行一次。

- 因为 `j == 0 || i == 0` 成立,所以 `coef` 被设置为 1。

- 然后程序输出 `coef`,也就是 `1`。

当 `i` 为 1 时(第二行):

- `j` 从 0 开始,直到 `i`(也就是 1),所以内部循环执行两次。

- 当 `j` 是 0 时,`coef` 被设置为 1。

- 当 `j` 是 1 时,`coef` 的计算为 `coef = coef * (1 - 1 + 1) / 1`,即 `coef = 1 * 1 / 1`,结果仍然是 1。

- 然后程序输出两个 `coef`,也就是 `1` 和 `1`。

当 `i` 为 2 时(第三行):

- `j` 从 0 开始,直到 `i`(也就是 2),所以内部循环执行三次。

- 当 `j` 是 0 时,`coef` 被设置为 1。

- 当 `j` 是 1 时,`coef` 的计算为 `coef = coef * (2 - 1 + 1) / 1`,即 `coef = 1 * 2 / 1`,结果为 2。

- 当 `j` 是 2 时,`coef` 的计算为 `coef = coef * (2 - 2 + 1) / 2`,即 `coef = 2 * 1 / 2`,结果为 1。

- 然后程序输出三个 `coef`,也就是 `1`、`2` 和 `1`。

当 `i` 为 3 时(第四行):

- `j` 从 0 开始,直到 `i`(也就是 3),所以内部循环执行四次。

- 当 `j` 是 0 时,`coef` 被设置为 1。

- 当 `j` 是 1 时,`coef` 的计算为 `coef = coef * (3 - 1 + 1) / 1`,即 `coef = 1 * 3 / 1`,结果为 3。

- 当 `j` 是 2 时,`coef` 的计算为 `coef = coef * (3 - 2 + 1) / 2`,即 `coef = 3 * 2 / 2`,结果为 3。

- 当 `j` 是 3 时,`coef` 的计算为 `coef = coef * (3 - 3 + 1) / 3`,即 `coef = 3 * 1 / 3`,结果为 1。

- 然后程序输出四个 `coef`,也就是 `1`、`3`、`3` 和 `1`。

通过这种方式,内部循环计算并输出了每一行的数字,最终构成了一个 4 行的杨辉三角形。

6. 每次打印完一行数字后,程序输出一个换行符,进入下一行的打印。

7. 最终,程序输出了一个 4 行的杨辉三角形。

8.通过sum=sum+coef进行简单的求和。

#include<stdio.h>
int main()
{
	int rows, space, i, j;
	int coef = 1;
	int sum = 0;
	printf("请输入需要的行数:");
	scanf("%d", &rows);
	for (i = 0; i < rows; i++)
	{
		for (space = 1; space <=rows - i; space++)
			printf("  ");
	
	for (j = 0; j <= i; j++)
	{
		if (i == 0 || j == 0)
			coef = 1;
		else
			coef = coef * (i - j + 1) / j;
		printf("%4d", coef);
		sum = sum + coef;
	}
	printf("\n");
	}
	printf("所有数字总和为:%d\n", sum);
	return 0;
}
!!!对于`coef = coef * (i - j + 1) / j`这个公式是怎么推导的我也不会,请大佬在评论区留言指教!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值