代码细节
>sum的类型选择float类型而不选择int类型,原因在于double类型的范围比int类型的大,可以在更 大程度上避免溢出
>为了方便理解,其他细节在代码里写了注释,下面请看代码
代码实现
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
int n = 0, i = 0;
printf("Enter a number: ");
scanf("%d", &n);
double sum = 0.0f;//double的范围大于int的范围,可以更大程度上避免溢出
for (i = 1; i <= n; i++)
{
int j = 0;
float ret = 1.0f;//每次进入内层for循环时ret必须为1
for (j = 1; j <= i; j++)
{
ret *= j;
}
sum += ret;//易错点,sum += ret 不是放在内层的for循环里,而是外层,
//内层for循环算的是每个数的阶乘,算完之后再加上,不是边算边加
}
printf("sum = %.0f", sum);
return 0;
}