在C中打印一个pascal三角形

时间:2014-11-08 08:19:35

标签: c pascals-triangle

void Pascal(int n){
    int i,j;
    int a[100], b[100];
    a[0]= 1;

    for(i = 0; i <= n; i++){
        printf(" ");
        b[i]=1;
        for(j = 0; j <= i; j++){
            if (j <= 1) a[j-1]=0;
            b[j] = a[j-1] + a[j];
            printf("%d", b[j]);
        }
        for (j = 0; j <= i; j++){
            a[j] = b[j];
        }
        printf("%d \n");
    }
}    

这是我一直在努力建立的功能;请告诉我它有什么问题?

4 个答案:

答案 0 :(得分:1)

在第11行中,您使用-1作为索引。先检查一下。 检查代码 -

void Pascal(int n){
    int i,j;
    int a[100]={0}, b[100]={0};
    a[1]= 1;
    for (i = 1; i <= n; i++){
        printf(" ");
        b[i]=1;
        for (j = 1; j <= i; j++){
            if (j <= 1) a[j-1]=0;
            b[j] = a[j-1] + a[j];
            printf("%d ", b[j]);
        }
        for (j = 1; j <= i; j++){
            a[j] = b[j];
        }
        printf("\n");
    }
}

我已经从1开始编制索引。

答案 1 :(得分:0)

我做了一个类似的程序:

#include <stdio.h>


int nk (int n, int k)
{
    int erg = 0;

    erg = fak(n)/(fak(k)*fak(n-k));
    return (erg);
}

int fak (int n)
{
    if (n==0)
        return 1;
    if (n==1)
        return 1;
    else
        return n = n*fak(n-1);

}

int main ()
{
    int n = 0;
    int k = 0;
    int s = 0; 
    int i = 0; 
    int a = 0; 
    printf ("How many rows: ");
    scanf ("%d", &a);
    s = (a-1);
    printf ("\nPascal'sches Dreieck\n");


    for (n = 0; n <= (a-1); n++)
    {

        for (i=0; i<=s; i++)
            printf("  ");

        for (k=0; k<=n; k++ )
        {
            if (nk(n,k)<=10)
                printf (" %d  ", nk(n,k));
            else
                printf ("  %d", nk(n,k));
        }
        s--;
        printf ("\n");

    }
        getch();
    return 0;
}

答案 2 :(得分:0)

  请告诉我它有什么问题?

从我的角度来看,从大局来看,它的错误在于你在每次迭代时都将数组ngOnDestroy的内容复制到数组b中:

a

这正是指针允许我们避免的那种不必要的内存改组!所以让我们解决这个问题,当我们处理它时,修复代码中的所有其他小错误:

for (j = 0; j <= i; j++) {
    a[j] = b[j];
}

答案 3 :(得分:0)

试试这段代码!

我还附上了输出的截图。

/ ********************************************** *********

                            Online C Compiler.
                Code, Compile, Run and Debug C program online.
Write your code in this editor and press "Run" button to compile and execute it.

*******************************************************************************/

#include <stdio.h>
void Pascal(int n);
int main()
{
    int rows, coef = 1, space;

    printf("Enter number of rows: ");
    scanf("%d",&rows);

    Pascal(rows);

    return 0;

}
void Pascal(int rows)
{
    int coef = 1, space;
     for(int i=0; i<rows; i++)
    {
        for(space=1; space <= rows-i; space++)
            printf("  ");

        for(int j=0; j <= i; j++)
        {
            if (j==0 || i==0)
                coef = 1;
            else
                coef = coef*(i-j+1)/j;

            printf("%4d", coef);
        }
        printf("\n");
    }

}

enter image description here