首先将问题分解
第一步:输出单个数字的阶乘
第二步:利用循环递减求出多个连续阶乘的值,并且将每次求出的阶乘累加
第一步:
//baizhen
#include <stdio.h>
int main(void)
{
int a=0,b=1;
scanf("%d",&a);
for(;a>0;a--)
b=b*a;
printf("%d\n",b);
return 0;
}
第二步:
//baizhen
#include <stdio.h>
int main(void)
{
int a=0;
int c=0;
scanf("%d",&a);
for(;a>0;a--)
{
int x=a;
int b=1;
for(;x>0;x--)
{
b=b*x; //计算阶乘
}
c+=b; //累加所有的阶乘
}
printf("%d",c);
return 0;
}
至此,代码的逻辑就没有问题了,但是提交是会出错的。
注意看题目,20的阶乘已经超过了int的取值范围,所以我们需要使用范围更大的数据类型储存数据,具体使用什么数据类型根据题目要求确定,本题我们使用 long long int。
//baizhen
#include <stdio.h>
int main(void)
{
int a=0;
long long int c=0;
scanf("%d",&a);
for(;a>0;a--)
{
int x=a;
long long b=1;
for(;x>0;x--)
{
b=b*x;
}
c+=b;
}
printf("%lld",c);
return 0;
}
以上代码提交后可满分通过测试。
代码不唯一 本文仅针对初学小白。