欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

【C语言】求阶乘与阶乘之和

程序员文章站 2024-03-15 17:15:36
...

  中学我们都学习了阶乘的求法,比如要求整数n的阶乘,则n!=n×(n-1)×(n-2)×…×2×1。现在有两个问题,要用C语言编写程序求n的阶乘,以及求1!+2!+3!…+n!,该如何解决呢?
  问题1:求n的阶乘。
  实现思路:
  问题中的n需要我们从键盘输入。要计算n的阶乘,就得有一个变量i从1遍历到n(循环实现),进入循环用一个变量ret(初始值须为1)来“记住”本次的乘积ret×i,随着i的增加,ret=1×1,ret=1×1×2,ret=1×1×2×3…,当i增加到n时,ret=n!,然后输出ret。
  程序代码:

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
int main()
{
    int n = 0;
    int i = 0;
    int ret = 1;
    scanf("%d", &n);
    for (i = 1; i <= n; i++)
    {
        ret *= i;//ret=ret*i
    }
    printf("n的阶乘为ret=%d\n", ret);
    system("pause");
    return 0;
}

  输出结果:
  【C语言】求阶乘与阶乘之和
  【C语言】求阶乘与阶乘之和
  问题2:求sum=1!+2!+3!+…+10!=?
  实现思路:
  该问题和问题1的实现思路大体上相同,只是在计算出每项后要计算出和。我们可以在问题1的基础上定义一个变量sum,当每项得出结果后加到sum中,sum中的结果随着i的增加依次为:sum=0+1!,sum=1+2!,sum=3+3!…
  程序代码:

#include<stdio.h>
#include<stdlib.h>
int main()
{
    int i = 0;
    int ret = 1;
    int sum = 0;
    for (i = 1; i <= 10; i++)
    {
        ret *= i;//ret=ret*i
        sum += ret;//sum=sum+ret
    }
    printf("sum = %d\n", sum);
    system("pause");
    return 0;
}

  输出结果:
  【C语言】求阶乘与阶乘之和