2401_85230720 2024-09-02 09:13 采纳率: 81.3%
浏览 24
已结题

求阶乘和,简单的C语言程序

求阶乘和。
题目描述:
输入一个正整数 n (1≤ n ≤12),计算并输出 s 的值,其中 s =1!+2!+…+ n !。阶乘定义为 n != nx ( n -1) x ...x2x1,0!=1.
输入:
输入包含一个正整数 n 。
输出:
输出 s 的值。
样例输入:
3
样例输出
9

  • 写回答

1条回答 默认 最新

  • AitTech 2024-09-02 09:28
    关注

    以下是一个使用C语言编写的简单程序,用于计算从1到n的阶乘和:

    #include <stdio.h>
    
    // 函数声明,用于计算阶乘
    long long factorial(int n);
    
    int main() {
        int n;
        long long sum = 0; // 使用long long类型以支持较大的阶乘和
    
        // 读取输入
        scanf("%d", &n);
    
        // 计算从1到n的阶乘和
        for (int i = 1; i <= n; i++) {
            sum += factorial(i);
        }
    
        // 输出结果
        printf("%lld\n", sum);
    
        return 0;
    }
    
    // 定义计算阶乘的函数
    long long factorial(int n) {
        long long result = 1;
        for (int i = 2; i <= n; i++) {
            result *= i;
        }
        return result;
    }
    

    这个程序首先定义了一个factorial函数,该函数接收一个整数n作为参数,并返回n的阶乘。主函数main中,首先读取用户输入的正整数n,然后使用一个循环从1遍历到n,调用factorial函数计算每个数的阶乘,并将结果累加到sum变量中。最后,程序输出阶乘和sum的值。

    注意,这里使用了long long类型来存储阶乘和sum,因为当n较大时,阶乘的值会迅速增大,超出int类型的表示范围。然而,即使使用long long类型,当n接近或达到12时,阶乘的值也会变得非常大,可能接近或超过long long类型的表示范围,从而导致溢出。在实际应用中,需要根据具体需求和限制来选择合适的数据类型。对于本题而言,由于n的最大值是12,使用long long类型是足够的。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 9月10日
  • 已采纳回答 9月2日
  • 创建了问题 9月2日