如何解决用c程序计算e ^ x的值,最多可校正10个小数位
我正在写一个程序,根据扩展公式计算e ^ x的值,我需要打印答案以使其正确至小数点后10位。我尝试使用for,while和while循环来完成此操作,但是我无法弄清楚在何处终止循环,可以使用哪种条件终止循环。我写的代码如下:
#include<stdio.h>
#include<math.h>
int factorial(int x);
int main()
{
int x,n;
float sum,d_1;
printf("Enter the value of power :");
scanf("%d",&x);
n=1;sum=1;
while(sum <= %.10f)
{
d_1=pow(x,n)/factorial(n);
sum=sum+d_1;
n++;
}
printf("Answer is %f",sum);
return 0;
}
int factorial(int y)
{
int fact=1,i;
for(i=1;i<=y;i++)
{
fact=fact*i;
}
return(fact);
}
,并且我在%之前收到错误消息预期的表达式。 请帮忙。
解决方法
您要在当前项小于某个值时终止循环。另外,您还希望循环至少执行一次,因此最好使用do-while循环:
n = -1;
do {
n++;
d_1 = pow(x,n) / factorial(n);
sum = sum + d_1;
} while (d_1 > epsilon);
正如评论中提到的,关于精度和溢出,代码还有其他问题,但这是另一回事。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。