您的位置:

c语言杨辉三角不用数组,C语言杨辉三角数组

本文目录一览:

C语言 杨辉三角代码(非数组)求解释

#includestdio.h

#define N 15

void main()

{

    int i,j,k;

    long long b,c;//下面的乘法计算的时候如果N大了,会超过int的最大值,改为long long

    for(i=0; iN; i++)

    {

        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("%-5d",b/c);

        }

        printf("\n");

    }

}

你让注释的地方,给你个图你就明白在模拟什么计算了。

c语言:不使用数组编写杨辉三角形10行的递归程序

//输出杨辉三角

# include stdio.h

void main()

{

int yang(int x, int y);

int i, j, k;

for(i = 1; i = 10; i++)//i控制行数

{

for(j = 0; j 10-i; j++)

printf(" ");

for(k = 1; k = i; k++)//y表示这一行中第几个数

printf("%4d", yang(i, k));

printf("\n");

}

}

int yang(int x, int y)

{

int z;

if(y == 1 || y == x)  z = 1;

else z = yang(x-1, y-1) + yang(x-1, y);

return z;

}

不知道能不能满足lz要求。

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