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

请问下错在哪里,另外是1/x还是1.0/x,谢谢

请问下错在哪里,另外是1/x还是1.0/x,谢谢

吃鸡游戏 2022-07-20 15:11:50
编写程序,输入一个正整数n,求下列算式的值。要求定义和调用函数fact(k)计算k的阶乘,函数返回值的类型是double。1+1/2+ .... +1/n!输出保留5位小数。#include<stdio.h>#include<math.h>int main(){double x,n,k=1,sum;scanf("%lf",&n);while(k<=n){x=fact(k);sum=sum+1/x;k++;}printf("sum=%.5f",sum);return 0;}
查看完整描述

2 回答

?
猛跑小猪

TA贡献1858条经验 获得超8个赞

fact是用户自定义函数,不包含在<math.h>头文件里,需要自己定义啊

程序这样写
#include
double fact(int k)
{
	double sum=0;
	double x=1;
	while(x<=k)
	{
		sum=sum+1/x;
		x++;
	}
	return sum;
}
int main()
{
	int n;
	printf("请输入一个正整数:\n");
	while(1)
	{
		scanf("%d",&n);
		if(n<1)
		{
			printf("请输入正确的数!\n");
		}
		else
		{
			break;
		}
	}
	printf("sum=%.5lf\n",fact(n));
	return 0;
}


查看完整回答
反对 回复 2022-07-24
?
呼如林

TA贡献1798条经验 获得超3个赞

你还没有定义FACT函数吧
fact是函数库外的,要定义

#include 
double fact(int n);
int main()
{
	int i,k;
	double sum=0;
	printf("please input a integer number :");//最好加上这句,不然其他人不知道你想人家干什么
	scanf("%d",&k);
	for(i=1;i<=k;i++)
	{

		sum+=fact(i);
	}
	printf("sum is %.5f\n",sum);
	return 0;

}

double fact(int n)
{
	if(n==0||n==1)//当n=0或n=1时,n!=0
		return 1;
	else return 1.0/n*fact(n-1);
} 

本程序已用Microsoft visual c++6.0检测过


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

添加回答

举报

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