本文目录一览:
用c语言打印杨辉三角 非数组,我只求过程,不求答案
不知道我这样解释能不能说清楚:
可以看看杨辉三角的定义,百科里介绍了一个杨辉三角的第六个性质,具体是:
6、第n行的第1个数为1,第二个数为1×(n-1),第三个数为1×(n-1)×(n-2)/2,第四个数为1×(n-1)×(n-2)/2×(n-3)/3…依此类推。
而程序中的i是表示第i行,那么上面的性质6里的n就是程序中的i,而k是保存了1×(n-1)×(n-2)/2×(n-3)/3...的值,其中(n-1)、(n-2)、(n-3)...中的1,2,3...是j的值。
比方说,一开始k=1,执行了一次内循环后,k=k*(i-j)/j 就是k=1×(n-1)/1;那么第二次循环执行k=k*(i-j)/j,就等于执行了1×(n-1)×(n-2)/2……依次类推,应该能明白了吧!
用c语言输出杨辉三角
C语言实现输出n层杨辉三角,注意n34时会导致长整型溢出,参考代码如下:
#includestdio.h
int main()
{
int i,j,n;
long a[34]={1};
scanf("%d",n);
if(n34)return 1;
for(i=0;in;i++){
for(j=i;j0;j--)
a[j]=a[j]+a[j-1];
for(j=0;j=i;j++)
printf("%ld ",a[j]);
printf("\n");
}
return 0;
}
c语言编程打印杨辉数字金字塔不用数组
#includestdio.h
#define N 10
void main()
{
unsigned int i,j,k;
unsigned int b,c;
for(i=0;iN;i++)
{
for(j=N;ji;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");
}
}
在打印杨辉三角时通常用到杨辉三角的两个性质。
第一个就是杨辉三角中除了最外层的数为1外,其余的数都是它肩上两个数之和。用数组输出杨辉三角就用这个性质。
第二个性质是杨辉三角的第n行恰好是C(n,0)~C(n,n)。这里的C表示组合。不用数组输出杨辉三角就用这个性质。
哪里不明白可以Hi我。