# C 程序：查找数字阶乘

> 原文： [https://www.programiz.com/c-programming/examples/factorial](https://www.programiz.com/c-programming/examples/factorial)

#### 在此示例中，您将学习计算用户输入的数字的阶乘。

要理解此示例，您应该了解以下 [C 编程](/c-programming "C tutorial")主题：

*   [C 数据类型](/c-programming/c-data-types)
*   [C 编程运算符](/c-programming/c-operators)
*   [C `if...else`语句](/c-programming/c-if-else-statement)
*   [C `for`循环](/c-programming/c-for-loop)

* * *

正数`n`的阶乘由下式给出：

```c
factorial of n (n!) = 1 * 2 * 3 * 4....n 
```

负数的阶乘不存在。 并且，阶乘 0 为 1。

* * *

## 数字的阶乘

```c
#include <stdio.h>
int main() {
    int n, i;
    unsigned long long fact = 1;
    printf("Enter an integer: ");
    scanf("%d", &n);

    // shows error if the user enters a negative integer
    if (n < 0)
        printf("Error! Factorial of a negative number doesn't exist.");
    else {
        for (i = 1; i <= n; ++i) {
            fact *= i;
        }
        printf("Factorial of %d = %llu", n, fact);
    }

    return 0;
} 
```

**输出**

```c
Enter an integer: 10
Factorial of 10 = 3628800 
```

* * *

该程序从用户处获取一个正整数，并使用`for`循环计算阶乘。

由于数字的阶乘可能很大，因此阶乘变量的类型声明为`unsigned long long`。

如果用户输入一个负数，程序将显示一个自定义错误消息。

您还可以使用递归查找数字的[阶乘](https://www.programiz.com/c-programming/examples/factorial-recursion)。