c语言编程,打印杨辉三角,要求打印的行数由键盘输入,并且不得使用二维数组
#include<stdio.h>
#include"string.h"
int a[10000]; //容器,由n*(n+1)/2<=10000可知,n<=141
int b=3,CR,i; //b为当前行数,CR为要求显示的行数,i为循环数
int YHSJ(int CR)
{
a[1]=a[2]=1; //前两行数值少且全为1,故直接输出
printf("%d\n",a[1]);
printf("%d %d\n",a[1],a[2]);
while(b<=CR) //从第三行开始判断
{
for(i=b;i>=2;i--)//从倒数第一个数开始加
{
a[i]=a[i]+a[i-1]; //杨辉三角的规律,没有值的数组默认为0
}
for(i=1;i<=b;i++) //显示循环
{
printf("%d ",a[i]);
}
printf("\n"); //显示完一行换行
b++; //下一行
}
return 0;
}
void main()
{
printf("请输入要显示的行数(3~141):");
scanf("%d",&CR);
YHSJ(CR);
}
杨辉三角前n项和公式
杨辉三角的第n行第n个数为1。C(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 …… 其中第n行的第n个数为每行最后一个数,都为1。
杨辉三角的证明思路及其形成过程描述
回答如下:杨辉三角是由中国数学家杨辉在13世纪发明的,它是一种数数列的排列方式,其中每个数等于上方两数之和。杨辉三角的形式如下所示:
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
1 10 45 120 210 252 210 120 45 10 1
杨辉三角的证明思路如下:
1. 杨辉三角有很多规律,其中最重要的规律是每个数等于它上方的两个数之和。这可以通过数学归纳法证明。
2. 另一个重要的规律是每一行的数字之和都是2的n-1次方,其中n为行数。这可以通过二项式定理证明,即(a+b)n的展开式中各项系数之和为2的n次方。
3. 杨辉三角还有很多其他的规律,例如每一行的第一个数和最后一个数都是1,每一行的中间数等于前一行的相邻两个数之和等等。
杨辉三角的形成过程是这样的:从1开始,每一行的第一个数和最后一个数都是1,中间的数等于上一行相邻两个数之和。这个过程可以用递推公式表示为:C(n,m) = C(n-1,m-1) + C(n-1,m),其中C(n,m)表示杨辉三角中第n行第m个数字,n和m都从0开始计数。
还没有评论,来说两句吧...