C语言 写杨辉三角的两种方法

目录

前言

一、二维数组(方法一)

二、排列组合(方法二)

 写在最后


前言

  今天来讲一下用两种方法写杨辉三角,话不多说,直接进入正题。

一、二维数组(方法一)

  第一种方法就是用到二维数组,初始化代码后,通过for循环,用i确定行,用j确定列。

发现杨辉三角的规律,每行第一个和最后一个都是1。

除了第一行,每行的每个数的每个数都等于这个数上一行这个位置的数和上一行这个位置前一个位置的数的和,知道这些规律就可以用代码实现了。

以下是整个代码,带了一些注释

#include<stdio.h>
int main()
{
	int arr[20][20] = { 0 };  //初始化数组
	int i, j,n;
	scanf("%d", &n);  //输入要打印几行
		for (i = 0; i < n; i++)  //i确定行
		{
			for (j = 0; j <= i; j++)  //j确定列
			{
				if (j==0 || j == i)
					arr[i][j] = 1;  //每行第一个和最后一个为1
				else
					arr[i][j] = arr[i - 1][j] + arr[i - 1][j - 1];  
			}
		}
		for (i = 0; i < n; i++) //用循环把数组打印出
		{
			for (j = 0; j <= i; j++)
				printf("%-3d ", arr[i][j]); //这里用%-3d是为了打印的更整齐
			printf("\n");
		}
		return 0;
}

二、排列组合(方法二)

  第二种方法就用到了数学中的排列组合的思想

那个符号打不出来,这里就直接上代码了,有点难理解,请见凉,代码都带了注释,帮助更好理解。

#include<stdio.h>
int main()
{
	int i, j, n;
	scanf("%d", &n);  //输入要打印几行
	for (i = 0; i <=n; i++) //i确定行
	{
		for (j = 0; j <= i; j++)  //j确定列
		{
			if (j == 0 || i == j)  //每行第一个和最后一个为1
				printf("1");
			else
			{
				int a = 1, b = i, sum1 = 1, sum2 = 1;
				while (a <= j)  //排列组合中分母乘几次分子就乘几次
				{
					sum1 *= a; //分母是j的阶乘
					sum2 *= b; //分子是从i一直乘到i-j
					a++;
					b--;
				}
				printf("%-3d ", sum2 / sum1); //两者相除得到结果
			}
		}
		printf("\n");
	}
	return 0;
}

三、代码的呈现 

这里以10为例

 写在最后

   以上就是用C语言写杨辉三角的两种方法,如果有什么不对的地方,欢迎指正,感觉不错的话,还请点个赞,蟹蟹了。

  • 8
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值