杨辉三角的打印

本文介绍了杨辉三角的概念,其在二项式定理中的应用及其独特性质,包括数的生成规则、行数与项数的关系、组合数的表示等。通过探讨杨辉三角的性质,文章还提供了一个实现生成杨辉三角的代码示例。
摘要由CSDN通过智能技术生成

       在书上刚看到这个题目的时候,我一时都有点懵,在以前学习编程的时间里,我可能因为不咋看书的缘故,就没有接触过这样的内容,一时觉得束手无策,所以我只好找了强大的百度学习知识,终于明白了杨辉三角的定义。

杨辉三角:杨辉三角形,又称贾宪三角形,帕斯卡三角形,是二次项系数在三角形中的一种几何排列。杨辉三角形同时对应于二项式定理的系数。

性质特点:

前提:端点的数为1.

1、每个数等于它上方两数之和。

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

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

4、第n行数字和为2^(n-1)。

5、第n行的第m个数和第n-m+1个数相等,即C(n-1,m-1)=C(n-1,n-m),这是组合数性质

性质6的公式表述之一

6、每个数字等于上一行的左右两个数字之和。可用此性质写出整个杨辉三角。即第n+1行的第i个数等于第n行的第i-1个数和第i个数之和,这也是组合数的性质之一。

7、第n行的m个数可表示为C(n-1,m-1)(n-1下标,m-1上标),即为从n-1个不同

杨辉三角的组合数表示元素中取m-1个元素的组合数。

组合数计算方法:C(n,m)=n!/[m!(n-m)!]

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

                 

1

                 
               

1

 

1

               
             

1

 

2

 

1

             
           

1

 

3

 

3

 

1

           
         

1

 

4

 

6

 

4

 

1

         
       

1

 

5

 

10

 

10

 

5

 

1

       
     

1

 

6

 

15

 

20

 

15

 

6

 

1

     
   

1

 

7

 

21

 

35

 

35

 

21

 

7

 

1

   
 

1

 

8

 

28

 

56

 

70

 

56

 

28

 

8

 

1

 

1

 

9

 

36

 

84

 

126

 

126

 

84

 

36

 

9

 

1

       刚开始,我只是想到了能把三角形打印出来的方法,没有考虑到每行的空格问题,因此打印出来了直角三角形。代码如下:
#include<stdio.h> 
 
int main()
{ 
     int i = 0;
     int j = 0;
     int n = 0;
     int a[17][17]={0,1};
     while(n<1 || n>16)
    { 
         printf("请输入杨辉三角形的行数:");
         scanf("%d",&n);
    }
    for(i=1; i<=n; i++)
    {
	   for(j=1;j<=i; j++)
	   {
		   a[i][j]=a[i-1][j-1]+a[i-1][j];
	   }
    }
    for(i=1; i<=n; i++)          
    { 
	   for(j=1; j<=i; j++) 
	   {
		   printf("%d ",a[i][j]);
	   }
	    printf("\n");
   } 
    system("pause");
    return 0;
}
不用数组,用指针的方法:

完整代码:

#include<stdio.h>
#define N 10
void main()
{
	unsigned int i = 0;
	unsigned int j = 0;
	unsigned int k = 0;
        unsigned int b = 0;
	unsigned int c = 0;

    for(i=0;i<N;i++)
	{
		for(j=N;j>i;j--)
		{
			printf("");
		}
                for(j=0;j<=i;j++)
		{
			b=c=1;
			if(j>=1)
			{
				for(k=i-j+1;k<=i;k++)
				{
					b*=k;
				}
				for(k=1;k<=j;k++)
				{
					c*=k;
				}
			}
		    printf("%4d",b/c);
			}
			printf("\n");
	}
system("pause");
return 0;
}
金字塔杨辉三角:
#include <stdio.h>  
#define N 10      
int main()  
{  
    int a[N][2*N+2];  
    int i, j;  
      
    for(i=0; i<N; i++) 
    {  
        for(j=0; j<=2 * N + 1; j++) 
	{  
            a[i][j] = 0;  
        }<pre name="code" class="objc">        a[0][N] = 1;  
        for(i=1; i<N; i++) 
        {  
            for(j=1; j<=2 * N; j++) 
	    {  
                a[i][j] = a[i-1][j-1]+a[i-1][j+1];  
            }  
        }  
        for(i=0; i<N; i++) 
        {  
            for(j=0; j<2*N; j++) 
	    {  
                 if(a[i][j] != 0)
	         {  
                      printf("%3d", a[i][j]);  
                  } 
	         else 
	         {  
                      printf("   ");  
                  }  
             }  
              printf("\n");  
       }  
	system("pause");
	return 0;
}

 
 

 






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值