解题思路:

输入一个数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