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

发布时间:2022-11-22

本文目录一览:

1、用c语言打印杨辉三角 非数组,我只求过程,不求答案 2、用c语言输出杨辉三角 3、c语言编程打印杨辉数字金字塔不用数组

用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时会导致长整型溢出,参考代码如下:

#include<stdio.h>
int main()
{
    int i,j,n;
    long a[34]={1};
    scanf("%d",&n);
    if(n>34)return 1;
    for(i=0;i<n;i++){
        for(j=i;j>0;j--)
            a[j]=a[j]+a[j-1];
        for(j=0;j<=i;j++)
            printf("%ld ",a[j]);
        printf("\n");
    }
    return 0;
}

c语言编程打印杨辉数字金字塔不用数组

#include<stdio.h>
#define N 10
void main()
{
    unsigned int i,j,k;
    unsigned int b,c;
    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");
    }
}

在打印杨辉三角时通常用到杨辉三角的两个性质。 第一个就是杨辉三角中除了最外层的数为1外,其余的数都是它肩上两个数之和。用数组输出杨辉三角就用这个性质。 第二个性质是杨辉三角的第n行恰好是C(n,0)~C(n,n)。这里的C表示组合。不用数组输出杨辉三角就用这个性质。 哪里不明白可以Hi我。