【c语言初学者】用c语言打印杨辉三角

思路分析:

杨辉三角,是二项式系数在三角形中的一种几何排列。与杨辉三角联系最紧密的是二项式乘方展开式的系数规律,即二项式定理。例如在杨辉三角中,第3行的三个数恰好对应着两数和的平方的展开式的每一项的系数,第4行的四个数恰好依次对应两数和的立方的展开式的每一项的系数,依次类推。

 我们将组合数的“上标”表示为变量 n ,将“下标”表示为变量 m 。用两个 for 循环,外循环控制 m 的值,使 m 每次加一,直到输出到想要输出的行数( m 的值加一就是行数)。内循环控制 n 的值,使 n 每次加一,直到 n=m 。每次退出内循环后,控制换行。

由组合数的一个数学公式:

 再算出 m、(m-n)、n 的阶乘,分别赋给 s1、s2、s3,就可以表示这个组合数了,组合数的“上标”和“下标”恰好和二维数组元素的下标对应,每次算出一个组合数,就可以存储到一个二维数组的一个元素去。

代码实现:

#include <stdio.h>
int main()
{
    int m, n, i, s1 = 1, s2 = 1, s3 = 1, a[10][10];
    printf("%d\n", 1);//第一行的数字1就先打印出来吧 :-)
    for (m = 1; m <= 9; m++)//输出10行
    {
        for (n = 0; n <= m; n++)
        {
            s1 = 1, s2 = 1, s3 = 1;//不要忘记重置它们的值!!!
            //求m的阶乘
            for (i = 1; i <= m; i++)
            {
                s1 = s1 * i;
            }
            //求(m-n)的阶乘
            for (i = 1; i <= m - n; i++)
            {
                s2 = s2 * i;
            }
            //求n的阶乘
            for (i = 1; i <= n; i++)
            {
                s3 = s3 * i;
            }
            a[m][n] = s1 / (s2 * s3);//容易写成s1/s2*s3,这是错误的
        }
    }
    //开始打印杨辉三角
    for (m = 1; m <= 9; m++)
    {
        for (n = 0; n <= m; n++)
        {
            printf("%d ", a[m][n]);
        }
        printf("\n");//每次退出内循环后,即打印完杨辉三角的一行后,换行
    }
	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值