pta 习题2-6 求阶乘序列前N项和 (15分)

浙大版《C语言程序设计(第3版)》题目集

习题2-6 求阶乘序列前N项和 (15分)

本题要求编写程序,计算序列 1!+2!+3!+⋯ 的前N项之和。

输入格式:

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

输出格式:

在一行中输出整数结果。

输入样例:

5

输出样例:

153

代码实现:

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main()
{
    int N,S1=1,S=0;
    scanf("%d",&N);
    for (int j=N; j>=1; j--)
    {
            S1=1;
        for (int i=j; i>=1; i--)
        {
            S1*=i;
        }
        S=S+S1;

    }
    printf("%d",S);
    return 0;
}

总结:

 for (int j=N; j>=1; j--)
    {
         S1=1;
        for (int i=j; i>=1; i--)
        {
            S1*=i;
        }
        S=S+S1;
    }

外部循环是控制循环的次数,内部的for循环是用来求阶乘,每次求出阶乘相加后,通过外部的赋值将S1定义为1,用于存储下次的阶乘结果。

阶乘序列N,即计算 `1! + 2! + 3! + ... + N!` 的值,通常可以通过以下步骤实现: 1. **定义阶乘函数**:编写一个函数来计算单个数字的阶乘阶乘的定义是 `n! = n * (n-1) * (n-2) * ... * 1`,其中 `0! = 1`。 2. **计算N阶乘**:使用循环从1到N调用阶乘函数,并将结果累加到一个总变量中。 3. **输出结果**:将累加的总输出。 以下是几种不同语言的实现代码: ### C语言实现 ```c #include <stdio.h> // 计算阶乘的函数 int factorial(int x) { int l = 1; for (int j = 1; j <= x; j++) { l = l * j; } return l; } int main() { int n, i, sum = 0; // 读取输入的N scanf("%d", &n); // 循环计算N阶乘 for (i = 1; i <= n; i++) { sum = sum + factorial(i); } // 输出结果 printf("%d", sum); return 0; } ``` ### C++实现 ```cpp #include <iostream> using namespace std; // 计算阶乘的函数 double fact(int n) { double sum = 1; for (int i = 1; i <= n; i++) { sum *= i; } return sum; } int main(void) { int n; int sum = 0; // 读取输入的N cin >> n; // 循环计算N阶乘 for (int i = 1; i <= n; i++) { sum += fact(i); } // 输出结果 cout << sum; return 0; } ``` ### Python实现 ```python # 计算阶乘的函数 def factorial(x): result = 1 for i in range(1, x + 1): result *= i return result # 读取输入的N n = int(input()) # 初始化总为0 sum = 0 # 循环计算N阶乘 for i in range(1, n + 1): sum += factorial(i) # 输出结果 print(sum) ``` 这些代码都遵循了上述的实现步骤,首先定义了计算阶乘的函数,然后使用循环计算N阶乘,并最终输出结果。在CC++代码中,使用了`scanf``cin`来读取输入,而Python使用`input`函数读取输入。输出结果时,CC++使用`printf``cout`,Python使用`print`函数。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值