您的位置:

包含c语言输出n行杨辉三角不用数组的词条

本文目录一览:

用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我。