为了账号安全,请及时绑定邮箱和手机立即绑定

关于程序填空,不要改变与输入输出有关的语句?

关于程序填空,不要改变与输入输出有关的语句?

慕尼黑8549860 2022-07-20 15:11:25
输入一个正整数 m(0<m<10),求1! + 2! + … + m!,要求定义并调用函数fact(n)计算 n!,函数形参 n 的类型是int,函数类型是double。输入输出示例:括号内是说明输入5 (m=5)输出:1!+2!+...+5! = 153.000000#include <stdio.h>double fact(int n);int main(void){int i, m;double sum;scanf("%d", &m);/*---------*/printf("1!+2!+...+%d! = %f\n", m, sum);}
查看完整描述

3 回答

?
慕婉清6462132

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;

}

祝你顺利通过考试!



查看完整回答
反对 回复 2022-07-24
?
杨魅力

TA贡献1811条经验 获得超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);
}


查看完整回答
反对 回复 2022-07-24
?
12345678_0001

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);
}


查看完整回答
反对 回复 2022-07-24
  • 3 回答
  • 0 关注
  • 116 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信