解题思路:

输入一个数N,作为循环步数;

先写出每一个数的阶乘的循环体;

在加上一个求和即可;

注意事项:
把变量定义长一些,避免溢出;
最后输出不带小数位;
参考代码:

c++:

#include <iostream>
#include <iomanip>
using namespace std;

int main()
{
    int        N;
    long double    JC = 1, SUM = 0;
    cin >> N;

    for ( int i = 1; i <= N; i++ )
    {
        JC    *= i;
        SUM    += JC;
    }

    cout << fixed << setprecision( 0 ) << SUM;
    return(0);
}

c:

#include <stdio.h>

int main()
{
    int        N;
    long double    JC = 1, SUM = 0;
    scanf( "%d", &N );

    for ( int i = 1; i <= N; i++ )
    {
        JC    *= i;
        SUM    += JC;
    }

    printf( "%.0LF", SUM );
    return(0);
}


别忘点赞哦-.-

点赞(19)
 

0.0分

12 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 17 条评论

怎么又报错啊 2年前 回复TA

@rlei 函数返回也要用long long int

rlei 2年前 回复TA

#include <stdio.h> int add(int n) { int s = 1; for (int i = 1; i <= n; i++) { s = s * i; } return s; } int main() { long long int n,a=0; scanf("%lld", &n); if (n <= 20) { for (int i = 1; i <= n; i++) { a += add(i); } printf("%lld", a); } return 0; } 我这有什么问题?

SinzoL 2年前 回复TA

储存sum变量的值时,double精度不够,要用long double

20212320 3年前 回复TA

@正在努力 n == 0 时呢?

正在努力 3年前 回复TA

#include<stdio.h> int factorial(int n){ if(n<=1) return 1; return n*factorial(n-1); } int main(){ int n,i; long long s=0; scanf("%d",&n); if(n>20) return 0; for(i=1;i<=n;i++){ s+=factorial(i); } printf("%lld",s); return 0; }不懂就问,帮忙看一下答案不正确呢

满天星 3年前 回复TA

@AGP #include<stdio.h> int main() { long num=1,sum=0; int N; scanf("%d",&N); for(int i=1;i<=N;i++) { num*=i; sum+=num; } printf("%lld ",sum); return 0; }

满天星 3年前 回复TA

@AGP long long 定义是没问题的,提交也是对的,vc6编译不通过而已

满天星 3年前 回复TA

@AGP printf("%lld",sum)

满天星 3年前 回复TA

题目要求输出的结果是整型的数据,怎么办?

上单皇阿玛 4年前 回复TA

@虎子胡 是N==1不是N=1