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
展开
 我来答
cdinten
推荐于2016-12-02 · TA获得超过6588个赞
知道大有可为答主
回答量:3562
采纳率:56%
帮助的人:1295万
展开全部

首先,你的手写格式和编程语言格式是不一致的。然后,你使用的自然对数底数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。

老衲欠扁
2014-10-28
知道答主
回答量:30
采纳率:0%
帮助的人:11.7万
展开全部
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链接库)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
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)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
为梦而战china
2014-10-28
知道答主
回答量:38
采纳率:0%
帮助的人:2.9万
展开全部
e定义了没,还有e^x+10*x-2
追问
怎么定义e啊,e不是本来就是一个确定的数吗?
怎么定义e啊,e不是本来就是一个确定的数吗?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
我透明_的
2014-10-28 · TA获得超过190个赞
知道小有建树答主
回答量:214
采纳率:0%
帮助的人:163万
展开全部
e未定义 需要定义e
追问
怎么定义e啊,e不是本来就是一个确定的数吗?
追答
未命名1.cpp:8说的意思是你错出在第八行
float getvalue(float x)
{
return e^x+10x-2;
}
这个return里的e没有定义
你e是什么类型什么值都没有
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式