一道c程序题,用三个函数求方程的根,编程错误,大神求解,谢谢

#include<stdio.h>#include<math.h>floatX2;intmain(){floatroot_1(float);floatroot_2(flo... #include <stdio.h>
#include <math.h>
float X2;
int main()
{
float root_1(float );
float root_2(float );
float root_3(float );
extern float a,b,c;
float m,x1;
printf("enter a,b,c:\n");
scanf("%f%f%f",&a,&b,&c);
m=b*b-4*a*c;
if(m>0) x1=root_1(m);
else if(m==0) x1=root_2(m);
else x1=root_3(m);
printf("x1=%f,x2=%f",x1,X2);
return 0;
}
float a,b,c;
float root_1(float )
{
float n;
n=sqrt(m);
p=-b/(2*a);q=n/(2*a);
x1=p+q;X2=p-q;
return x1;
}
float root_2(float )
{
x1=-b/(2*a);X2=-b/(2*a);
return x1;
}
float root_3(float )
{
printf("has no real root");
}
展开
 我来答
IT孤鹜
推荐于2016-05-21 · TA获得超过4197个赞
知道大有可为答主
回答量:3960
采纳率:71%
帮助的人:3515万
展开全部
#include <stdio.h>
#include <math.h>
float X2;
int main()
{
    float root_1(float );
    float root_2(float );
    void root_3( );
    extern float a,b,c;
    float m,x1;
    printf("enter a,b,c:\n");
    scanf("%f%f%f",&a,&b,&c);
    m=b*b-4*a*c;
    if(m>0) x1=root_1(m);
    else if(m==0) x1=root_2(m);
    else
        root_3();
    printf("x1=%f,x2=%f",x1,X2);
    return 0;
}
float a,b,c;
float root_1(float m) //加参数, 下同,还有几处错误,认真找找
{
    float n,p,q,x1;
    n=sqrt(m);
    p=-b/(2*a);q=n/(2*a);
    x1=p+q;X2=p-q;
    return x1;
}
float root_2(float m)
{
    float x1,x2;
    x1=-b/(2*a);X2=-b/(2*a);
    return x1;
}
void root_3()
{
    printf("has no real root");
}
更多追问追答
追问
它说数据从double变成float会丢失数据 怎么办
追答
把程序里面的float 全改为double 就可以了

但是一般没什么关系,你也可以强制类型转换
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式