C语言经典20例(输入一个非负整数,求出阶乘并输出)

在C语言中,计算一个非负整数的阶乘可以通过递归循环来实现。以下是一个使用循环来计算阶乘的示例代码,并在代码中添加了注释来解释每一步:

 
#include <stdio.h>

// 函数声明
unsigned long long factorial(unsigned int n);

int main() {
    unsigned int number;
    unsigned long long result;

    // 提示用户输入一个非负整数
    printf("请输入一个非负整数来计算它的阶乘: ");
    scanf("%u", &number);

    // 计算阶乘
    result = factorial(number);

    // 输出结果
    printf("%u的阶乘是: %llu\n", number, result);

    return 0;
}

// 函数定义:计算n的阶乘
unsigned long long factorial(unsigned int n) {
    if (n == 0) {
        return 1; // 0的阶乘定义为1
    }

    unsigned long long fact = 1;
    for (unsigned int i = 1; i <= n; ++i) {
        fact *= i; // 将i乘到fact上,计算阶乘
    }
    return fact; // 返回计算结果
}
 

文字讲解:

1. 首先包含了stdio.h头文件,这是为了能够使用printf和scanf函数进行输入输出。

2. 声明了一个factorial函数,它接收一个无符号整数n作为参数,并返回一个无符号长长整型unsigned long long`的结果。这是因为阶乘的结果很快就会超过普通整型变量的范围。

3. 在main函数中,定义了两个变量number和result,分别用于存储用户输入的非负整数和计算得到的阶乘结果。

4. 使用printf函数提示用户输入一个非负整数,并使用scanf函数读取用户输入的值。

5. 调用factorial函数计算用户输入整数的阶乘,并将结果存储在result变量中。

6. 使用printf函数输出计算得到的阶乘结果。

7. factorial函数通过一个循环来计算阶乘,从1开始乘到用户输入的数n。如果输入的是0,则直接返回1,因为0的阶乘定义为1。

8. 最后,factorial函数返回计算得到的阶乘值。

注意:该程序没有进行错误检查,比如用户输入的是否为非负整数。在实际应用中,应该添加适当的错误检查来确保程序的健壮性。此外,对于非常大的数,即使是unsigned long long类型也可能不足以存储阶乘的结果,这种情况下需要使用特殊的大数库来处理。

猜你喜欢

转载自blog.csdn.net/lxsxjsj/article/details/143220513