3 回答
TA贡献1804条经验 获得超2个赞
#include <stdio.h>
double fact(int n);
int main(void)
{
int i, m;
double sum;
scanf("%d", &m);
sum=fact(m);
printf("1!+2!+...+%d! = %f\n", m, sum);
}
double fact(int n)
{
float num=0.0;
int total,temp;
total=0;
temp=1;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=i;j++)
{
temp*=j;
}
total+=temp;
temp=1;
}
num=(float)total;
return num;
}
祝你顺利通过考试!
TA贡献1811条经验 获得超6个赞
用递归写的,比较挫,但是勉强实现了。写的有点急没加注释,不好意思。但是是比较简单的,可以看懂~
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
using namespace std;
double fact(int n)
{
double z=0;
if(n<0)
{
printf("\nCount Error:n=%d<0 ",n);
z=0;
}
else
if(n==0||n==1)
z=1;
else
z=fact(n-1)*n;
return(z);
}
void main()
{
int m=0;
double sum=0.0,temp=0.0;
scanf("%d", &m);
if(m<=0) //m为0或负数,无不需要向下进行
return ;
while(m)
{
temp=fact(m--);
sum+=temp;
}
printf("1!+2!+...+%d! = %f\n", m, sum);
}
TA贡献1802条经验 获得超5个赞
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
using namespace std;
double fact(int n)
{
double z=0;
if(n<0)
{
printf("\nCount Error:n=%d<0 ",n);
z=0;
}
else
if(n==0||n==1)
z=1;
else
z=fact(n-1)*n;
return(z);
}
void main()
{
int m=0;
double sum=0.0,temp=0.0;
scanf("%d", &m);
if(m<=0) //m为0或负数,无不需要向下进行
return ;
while(m)
{
temp=fact(m--);
sum+=temp;
}
printf("1!+2!+...+%d! = %f\n", m, sum);
}
- 3 回答
- 0 关注
- 140 浏览
添加回答
举报