这是我的第一次博客发表,记录的是自己的一次小练习。目的就是阶乘求和
1!+2!+3!...+n!
//#define _CRT_SECURE_NO_WARNINGS 1//如果scanf报错就用这句话
#include<stdio.h>
void fac(int n,int* p)//一个求阶乘的函数,主函数里面没用它
{
for (int i = 1; i <= n; i++)
{
(*p) *= i;// 等价于(*p) = (*p)*i
}
}
void add_fac( int n,int* p,int* add)
{
for (int i = 0; i < n; i++)
{
p[i] = 1;
for (int j = 1; j <= i + 1; j++)
{
p[i] *= j;//将1!,2!,3!...分别保存在p[0],p[1],p[2]...
}
(*add) += p[i];//将1!,2!,3!...加起来,结果保存在*add中
}
}
int main()
{
int n = 0;
scanf("%d", &n);//求n个阶乘的和1!+2!+...+n!
int result[10] ;//数组只给了10个元素,显然这里只能存放10个阶乘数
int addresult = 0;
add_fac(n,result,&addresult);//阶乘求和函数,result数组用于存放阶乘结果,addresult存放求和结果。
//例如result[0]存放的就是1!
//result[1]存放的就是2!
//...
//result[9]存放的就是10!
printf("%d\n", addresult);
return 0;
}