C语言编程 用泰勒展开式计算e^x的值
编写程序,计算e^x=1+x+(x^2)/(2!)+(x^3)/(3!)+(x^4)/(4!)+...+(x^n)/n!说明:e^x表示e的x次方,2!表示2的阶乘输入输...
编写程序,计算
e^x=1+x+(x^2)/(2!)+(x^3)/(3!)+(x^4)/(4!)+...+(x^n)/n!
说明:e^x表示e的x次方,2!表示2的阶乘
输入输出格式要求:
输入格式:x n回车
e^x, x, n均用double类型存储。
要求输出小数点后6位。
只输出运算结果,请不要输出其他字符,遇到异常情况(如n为负数),输出error
上面是题目要求,下面的程序哪里不对?本人初学C语言,恳请大佬指教!!
#include<stdio.h>
#include<math.h>
int main()
{
double x, n,sum;
scanf_s("%lf %lf", &x, &n);
double add(double x, double n);
sum = add(x, n);
if(n<=0||x<=0)
{
printf("error");
}
else { printf("%.6lf", sum); }
return 0;
}
double add(double x,double n)
{
int b = 1, c = 1;
double sum = 1;
for (int i = 1; i <=n; i++)
{
sum = sum +( pow(x, i))/c;
b = b + 1;
c = c*b;
}
return sum;}
When test group(3) step(1),the input is (10.45 20 ),the real output is not right.
When test group(1) step(1),the input is (3 20 ),the real output is not right.
When test group(2) step(1),the input is (0 100 ),time out.
忘了说,这是错误的原因,大佬们能不能看一下这样类似的问题怎么解决呢?非常感谢 展开
e^x=1+x+(x^2)/(2!)+(x^3)/(3!)+(x^4)/(4!)+...+(x^n)/n!
说明:e^x表示e的x次方,2!表示2的阶乘
输入输出格式要求:
输入格式:x n回车
e^x, x, n均用double类型存储。
要求输出小数点后6位。
只输出运算结果,请不要输出其他字符,遇到异常情况(如n为负数),输出error
上面是题目要求,下面的程序哪里不对?本人初学C语言,恳请大佬指教!!
#include<stdio.h>
#include<math.h>
int main()
{
double x, n,sum;
scanf_s("%lf %lf", &x, &n);
double add(double x, double n);
sum = add(x, n);
if(n<=0||x<=0)
{
printf("error");
}
else { printf("%.6lf", sum); }
return 0;
}
double add(double x,double n)
{
int b = 1, c = 1;
double sum = 1;
for (int i = 1; i <=n; i++)
{
sum = sum +( pow(x, i))/c;
b = b + 1;
c = c*b;
}
return sum;}
When test group(3) step(1),the input is (10.45 20 ),the real output is not right.
When test group(1) step(1),the input is (3 20 ),the real output is not right.
When test group(2) step(1),the input is (0 100 ),time out.
忘了说,这是错误的原因,大佬们能不能看一下这样类似的问题怎么解决呢?非常感谢 展开
3个回答
展开全部
#include<stdio.h>
#include<math.h>
int main()
{
double add(double x, double n);
double x, n,sum;
scanf("%lf %lf", &x, &n);
if(n<0||x<0)
{
printf("error");
return 0;
}
else
{
sum = add(x, n);
printf("%.6lf", sum);
}
return 0;
}
double add(double x,double n)
{
double b = 1, c = 1;
double sum = 1;
for (b = 1; b <=n; b++)
{
sum = sum +( pow(x, b))/c;
b = b + 1;
c = c*b;
}
return sum;
}
你这样做,那个输出错误的结果判断要在计算之前,并且出错后要退出,而且你的异常条件要写成:if(n<0||x<0),因为0是允许的。然后计算和的函数我减去了一个变量,有循环变量就可以替代n了
我的运行结果,但我不知道运算的对不对,程序反正没有错误了,也可以运行的
追问
你的意思是 在报错之前,我那个函数就已经开始运行了是吗?(这个可能是超时的原因。)但是接下来它判断是否错误时,n和x的范围还是对的啊,输出的结果我觉得不应该是错的啊。。为什么运行顺序改了之后差别那么大啊??
还有哦,我把那个i去掉改用d结果就和你一样了。。但是其他结果又不对了,,,好崩溃
展开全部
When test group(3) step(1),the input is (10.45 20 ),the real output is not right.请问下这个怎么解决的呀,我也碰到啦
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这个程序跑起来是报故还是结果不对?
追问
我我我。。我也不知道确切结果,但它报错了,应该是不对,而且有些数据太大,程序跑超时了。。。
追答
能不能传个运行结果的图
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询