C语言二分法求方程(找问题)

#include<stdio.h>#include<math.h>#defineesp1e-6#definef(a)(((2*a)*a+3)*a-6)voidmain()... #include<stdio.h>
#include<math.h>
#define esp 1e-6
#define f(a) (((2*a)*a+3)*a-6)

void main()
{
float m,n,r;
printf("Please input two fugures:\n");///**/
scanf("%lf%lf\n",&m,&n);
for(;;)
{
scanf("%lf%lf\n",&m,&n);
if(f(m)*f(n)>=0)
{
printf("There is no consequence!Please input again:\n");
scanf("%lf%lf\n",&m,&n);
}
else
break;
}
while(fabs(f(m)-f(n))>=esp)
{
r=(m+n)/2;
if(f(m)*f(r)<0)
n=r;
else
if(f(m)*f(r)>0)
m=r;
else
break;
}
printf("Root is %lf.\n",(m+n)/2);
}
我用的vs 2010,又没可能是编译器的问题?
展开
 我来答
mr_shj
推荐于2016-10-12 · TA获得超过2682个赞
知道大有可为答主
回答量:1665
采纳率:94%
帮助的人:1386万
展开全部
#include<stdio.h>
#include<math.h>
#define esp 1e-6
#define f(a) (((2*a)*a+3)*a-6)

void main()
{
    double m,n,r; //你在下面都用%lf输入/输出,所以这几个数应该是double
    printf("Please input two fugures:\n");///**/
    scanf("%lf%lf\n",&m,&n);
    for(;;)
    {
        scanf("%lf%lf\n",&m,&n);
        if(f(m)*f(n)>=0)
        {
            printf("There is no consequence!Please input again:\n");
            scanf("%lf%lf\n",&m,&n);
        }
        else
            break;
    }
    while(fabs(f(m)-f(n))>=esp)
    {
        r=(m+n)/2;
        if(f(m)*f(r)<0)
            n=r;
        else
            //if(f(m)*f(r)>0)  //多余的
                m=r;
            //else   //多余的
               // break;  //多余的
    }
    printf("Root is %lf.\n",(m+n)/2);
}
追问
应该不是这个问题,输入以后回车直接没反应,只显示输入的数据。依然谢谢啦!
追答
//在你的源程序上修改了一下,调试通过 
#include<stdio.h>
#include<math.h>
#define esp 1e-6
#define f(a) (((2*(a))*(a)+3)*(a)-6)    //这地方的每一个a的左右都要加括号才是正确的,要不然负数可能会出现问题 
 
int main()
{
    double m,n,r; //你在下面都用%lf输入/输出,所以这几个数应该是double
    printf("Please input two fugures:\n");///**/
    for(;;){
    scanf("%lf%lf",&m,&n);
        if(f(m)*f(n)>=0)
         printf("There is no consequence!Please input again:\n");
        else
            break;
    }
    
    while(fabs(f(m)-f(n))>=esp)
    {
        r=(m+n)/2;
        if(f(m)*f(r)<0)
            n=r;
        else
            m=r;
    }
    printf("Root is %lf.\n",(m+n)/2);
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式