C语言在区间[0,1]内用二分法求方程e^x+10x-2=0的近似根,误差不超过0.5*10^(-3),帮忙看一下错误怎么改?
#include<stdio.h>#include<math.h>#include<stdlib.h>#include<malloc.h>floatgetvalue(fl...
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#include <malloc.h>
float getvalue(float x)
{
return e^x+10x-2;
}
int main()
{
float a=0,b=1,c;
c=(a+b)/2;
while(fabs(getvalue(c))>0.5*10^(-3) && fabs(a-b)>0.5*10^(-3))
{
if(getvalue(c)*getvalue(b)<0)
a=c;
if(getvalue(a)*getvalue(c)<0)
b=c;
c=(a+b)/2;
}
printf("%0.3f\n",c);
return 0;
}
提示错误为:
[Error] C:\Users\Student\Documents\C-Free\Temp\未命名1.cpp:8: error: `e' was not declared in this scope
[Error] C:\Users\Student\Documents\C-Free\Temp\未命名1.cpp:8:13: invalid suffix "x" on integer constant
[Warning] C:\Users\Student\Documents\C-Free\Temp\未命名1.cpp:24:2: warning: no newline at end of file 展开
#include <math.h>
#include <stdlib.h>
#include <malloc.h>
float getvalue(float x)
{
return e^x+10x-2;
}
int main()
{
float a=0,b=1,c;
c=(a+b)/2;
while(fabs(getvalue(c))>0.5*10^(-3) && fabs(a-b)>0.5*10^(-3))
{
if(getvalue(c)*getvalue(b)<0)
a=c;
if(getvalue(a)*getvalue(c)<0)
b=c;
c=(a+b)/2;
}
printf("%0.3f\n",c);
return 0;
}
提示错误为:
[Error] C:\Users\Student\Documents\C-Free\Temp\未命名1.cpp:8: error: `e' was not declared in this scope
[Error] C:\Users\Student\Documents\C-Free\Temp\未命名1.cpp:8:13: invalid suffix "x" on integer constant
[Warning] C:\Users\Student\Documents\C-Free\Temp\未命名1.cpp:24:2: warning: no newline at end of file 展开
展开全部
首先,你的手写格式和编程语言格式是不一致的。然后,你使用的自然对数底数e,也没有定义。其他的都是小问题。
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#define e 2.7182828//定义自然对数底数的值
float getvalue(float x)
{
return pow(e,x)+10*x-2;
}
int main()
{
float a=0,b=1,c;
c=(a+b)/2;
while(fabs(getvalue(c))>0.5*1e-3)//此处可以简单化
{
if(getvalue(c)*getvalue(b)<0)
a=c;
if(getvalue(a)*getvalue(c)<0)
b=c;
c=(a+b)/2;
}
printf("%0.3f\n",c);
return 0;
}
我这边算出来的结果是0.091。
展开全部
1 #include<stdio.h>
2 #include<math.h>
3 #include<stdlib.h>
4 #include<malloc.h>
5 #define e (2.71818)
6 float getvalue(float x)
7 {
8 return pow(e,x)+10*x-2;
9 }
10 int main()
11 {
12 float a=0,b=1,c,ans;
13 float val = 0.5*1e-3;
14 c=(a+b)/2;
15 while(fabs(ans=getvalue(c)) > val)
16 {
17 if(ans<0)
18 a=c;
19 else
20 b=c;
21 c=(a+b)/2;
22 }
23 printf("%0.3f\n",c);
24 return 0;
25 }
(gcc 需要-lm链接库)
2 #include<math.h>
3 #include<stdlib.h>
4 #include<malloc.h>
5 #define e (2.71818)
6 float getvalue(float x)
7 {
8 return pow(e,x)+10*x-2;
9 }
10 int main()
11 {
12 float a=0,b=1,c,ans;
13 float val = 0.5*1e-3;
14 c=(a+b)/2;
15 while(fabs(ans=getvalue(c)) > val)
16 {
17 if(ans<0)
18 a=c;
19 else
20 b=c;
21 c=(a+b)/2;
22 }
23 printf("%0.3f\n",c);
24 return 0;
25 }
(gcc 需要-lm链接库)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2014-10-28
展开全部
#define e 2.71828
float getvalue(float x)
{
float temp;
int i;
temp = 1.0;
if(x == 0)
{
return temp = 1.0;
}
for(i = 1; i <= x; i++)
{
temp = temp*e;
}
return temp+10x-2;
}
while(fabs(getvalue(c))>0.5*10^(-3) && fabs(a-b)>0.5*10^(-3))改为
while(fabs(getvalue(c))>0.0005 && fabs(a-b)>0.0005)
float getvalue(float x)
{
float temp;
int i;
temp = 1.0;
if(x == 0)
{
return temp = 1.0;
}
for(i = 1; i <= x; i++)
{
temp = temp*e;
}
return temp+10x-2;
}
while(fabs(getvalue(c))>0.5*10^(-3) && fabs(a-b)>0.5*10^(-3))改为
while(fabs(getvalue(c))>0.0005 && fabs(a-b)>0.0005)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
e定义了没,还有e^x+10*x-2
追问
怎么定义e啊,e不是本来就是一个确定的数吗?
怎么定义e啊,e不是本来就是一个确定的数吗?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
e未定义 需要定义e
追问
怎么定义e啊,e不是本来就是一个确定的数吗?
追答
未命名1.cpp:8说的意思是你错出在第八行
float getvalue(float x)
{
return e^x+10x-2;
}
这个return里的e没有定义
你e是什么类型什么值都没有
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询