c语言的程序编写错误,求高手指教。

例如,当n=10,x=0.3时,函数值为1.349859。但我的老是1.346353#include<conio.h>#include<stdio.h>#include<... 例如,当n=10,x=0.3时,函数值为1.349859。
但我的老是1.346353

#include<conio.h>
#include<stdio.h>
#include<math.h>
#include<stdlib.h>
double fun(double x, int n)
{
int i;
double l=0,sum=0,h=1;
for(i=1;i<=n;i++)
{
h=h*i;
l=l+(x/h);
x=x*x;

sum=l+1.0;

}
return sum;

}
void main()
{
FILE *wf;
system("CLS");
printf("%f ",fun(0.3,10));
/******************************/
wf=fopen("out.dat","w");
fprintf(wf,"%f",fun(0.3,10));
fclose(wf);
/*****************************/
}
fun函数为自己编写的
展开
 我来答
stlily2008
2014-03-20 · 知道合伙人数码行家
stlily2008
知道合伙人数码行家
采纳数:627 获赞数:2806
大学本科毕业于桂林电子工业学院,硕士毕业于广东工业大学。在电力建设行业从事计算机管理及施工管理10多年

向TA提问 私信TA
展开全部

我的运行结果和你的一样,我用的编译器分别是:gcc 3.4.2 和 Turbo C 2.0

我用Excel模拟了你的fun函数的运算过程,得到如下截图:

从截图可以看出,l 和 x 最后都产生了误差。但是结果都一直逼近。

而且,你的sum是每循环一次,就计算一次 sum = l + 1.0 ,这样写法,实际只有最后一次,当i==10的时候,才有效 ,其他9次赋值,都是多余的。

我不知道你原始题目是什么,也不知道你的迭代函数是什么,无法判断你的 fun() 的编写是否和原题中的迭代公式一致。

建议你将原始题目中的迭代内容发出来,再帮你看看。

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式