7-4 计算阶乘和 (10分)

本文介绍了一个使用C语言编写的程序,该程序能够计算从1到N所有整数的阶乘之和。通过定义一个求阶乘的函数f,使程序更加清晰易懂。主函数读取用户输入的正整数N,并调用f函数计算每个整数的阶乘,最终输出阶乘和S。

对于给定的正整数N,需要你计算 S=1!+2!+3!+…+N!。

输入格式:

输入在一行中给出一个不超过10的正整数N。

输出格式:

在一行中输出S的值。

输入样例:

3

输出样例:

9


#include <stdio.h>
#include <stdlib.h>
int f(int n)
//定义一个求阶乘的函数可以使程序清晰易懂;
{
    int sum = 1,i;
    for(i=n;i>0;i--)
    {
        sum *=i;
    }
    return sum;
}
int main()
{

    int n,i;
    int sum = 0;
    //初始化;
    scanf("%d",&n);
    for(i=1;i<=n;i++)
    {
        sum+=f(i);
        //f为定义的一个求阶乘的函数;
    }
    printf("%d\n",sum);

    return 0;
}

![](https://cdn.jsdelivr.net/gh/DreamBuilderTeam/DreamBuilder@main/docs/images/logo.png) 您好,我是由优快云外部合作伙伴合作研发的AI作业模型机器人,很高兴为您服务。 --- ### 题目重述 输入一个正整数 $ n $,计算 $ 1! + 2! + 3! + \cdots + n! $ 的,并输出结果。 **输入格式:** 输入一个正整数 $ n $($1 \leq n \leq 10$) **输出格式:** 输出一个整数,表示阶乘 **输入样例:** ``` 5 ``` **输出样例:** ``` 153 ``` > 解释: > $ 1! = 1 $ > $ 2! = 2 $ > $ 3! = 6 $ > $ 4! = 24 $ > $ 5! = 120 $ > 为:$ 1 + 2 + 6 + 24 + 120 = 153 $ --- ### 给出答案(高效简洁代码) ```cpp #include <cstdio> using namespace std; int main() { int n, sum = 0, factorial = 1; scanf("%d", &n); for (int i = 1; i <= n; i++) { factorial *= i; // 计算 i! sum += factorial; // 累加到总 } printf("%d\n", sum); return 0; } ``` --- ### 代码解析 1. **`factorial *= i`**:利用前一项的阶乘快速计算当前项,避免重复计算。 2. **`sum += factorial`**:每得到一个 $ i! $,立即加到总中。 3. **循环从 1 到 n**:逐项计算并累加,时间复杂度 $ O(n) $。 4. **使用 `scanf` `printf`**:符合 PTA 常见输入输出要求,不依赖 `cin/cout`。 --- ### 知识点(列出该代码中遇到的知识点) 1. **阶乘的递推计算** 利用 $ i! = (i-1)! \times i $,避免重复乘法,提高效率。 2. **累加求思想** 使用变量 `sum` 持续累加每一项的阶乘值。 3. **循环控制与变量初始化** 正确设置循环范围初始值,确保逻辑正确执行。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

碧羽o(* ̄▽ ̄*)ブ回雪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值