生成pascal三角形时出错

时间:2014-10-10 07:13:45

标签: c pascals-triangle

这是我用C语言生成Pascal三角形的代码。

#include<stdio.h>
#include<conio.h>

void main()
{
    int i, n, c;
    scanf("%d", &n);
    for (i = 0; i < n; i++)
    {
        for (c = 0; c <= (n - i - 2); c++)
            printf(" ");
        for (c = 0; c <= i; c++)
            printf("%ld", factorial(i) / (factorial(c)*factorial(i - c)));
        printf("\n");
    }
    getche();
}

long factorial(int n)
{
    int c;
    long res = 1;
    for (c = 1; c <= n; c++)
        res = res*c;
    return(res);
}

编译时会显示两个错误:

  • “因子”的冲突类型&#39;

  • 以前隐含的'阶乘&#39;在这里

这里我的错误是什么?

2 个答案:

答案 0 :(得分:1)

  

'factorial'的冲突类型
  先前隐含的'factorial'声明就在这里

两个错误都指一件事:函数factorial应在使用前声明 只需在main之前移动定义,或在main之前为其写一个声明。

我不会为你写详细的解释,因为已经有一些,例如What is the difference between a definition and a declaration?

答案 1 :(得分:0)

在定义之前,您在factorial中使用了main。这在C语言中是合法的,但会使编译器猜测您的函数返回int。但是,当达到factorial的定义时,编译器会注意到它实际上返回long,这会导致错误。

您可以通过两种方式解决此问题:

  1. 交换mainfactorial

  2. 的定义
  3. 通过添加factorial,在定义main之前引入long factorial(int n);的前瞻性声明。