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

  中学我们都学习了阶乘的求法,比如要求整数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;
}

  输出结果:
  这里写图片描述
  这里写图片描述
  问题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;
}

  输出结果:
  这里写图片描述

猜你喜欢

转载自blog.csdn.net/Sunshine_R9H15Chen/article/details/78507125
今日推荐