C 语言给出a b c的值求ax2+bx+c=0的解

来源:百度知道 编辑:UC知道 时间:2024/09/21 13:46:57
#include<stdio.h>
#include<math.h>
void main()
{
float a,b,c,d,e,f,g;
void root0(float,float);
void root1(float,float);
void root2(float,float,float);

printf("Please give values to the variale a, b and c respectively:\na=");
scanf("%f",&a);
printf("b=");
scanf("%f",&b);
printf("c=");
scanf("%f",&c);
d=b*b-4*a*c;
e=fabs(b);
f=-0.5*b/a;
g=0.5*sqrt(e)/a;
if(a=0)
root0(b,c);
else
{
if(d>0)
root1(g,f);
else
root2(g,f,d);
}
}

void root0(float x,float y)
{
if(x=0)
printf("The equation is extremely degenerate.\n");
else
printf("The equation is degenerate and has one solution: x=%.3f .\n",-y/x);
}

void root1(float x,float y)
{
float x1;
float x2;
x1=y+x;
x2=y

C语言判断是否相当用==而不是=。不过因为浮点数的精度误差你最好用fabs(x)<1E-7代替x==0,这样更好一些。
f=-0.5*b/a; 和g=0.5*sqrt(e)/a;要放在判断a是否为零的语句后面,否则有除数为零的错误提示。
你的e=fabs(b)是不小心打错了吧?因该是e=fabs(d)啊。

#include<stdio.h>
#include<math.h>
void main()
{
float a,b,c,d,e,f,g;
void root0(float,float);
void root1(float,float);
void root2(float,float,float);

printf("Please give values to the variale a, b and c respectively:\na=");
scanf("%f",&a);
printf("b=");
scanf("%f",&b);
printf("c=");
scanf("%f",&c);
d=b*b-4*a*c;
e=fabs(d);

if(a==0)
root0(b,c);
else
{
f=-0.5*b/a;
g=0.5*sqrt(e)/a;
if(d>0)
root1(g,f);
else
root2(g,f,d);
}
}

void root0(float x,float y)
{
if(x==0)
printf("The equation is extremely degenerate.\n");
e