用C语言编程求一元二次函数的根,用3个函数分别求当判别式大于,小于,等于0的值,从主函数输入a,b,c的值

用C语言编程求一元二次函数的根,用3个函数分别求当判别式大于,小于,等于0的值,从主函数输入a,b,c的值(包括虚根)
我想问的是用一个主函数和三个分支函数编程。

#include<stdio.h>
#include<math.h>
float e,f,g,h,i;
int main()
{
float yishigen(float x,float y);
float denggen(float x);
float xugen();
float a,b,c,p,q,k;
scanf("%f,%f,%f",&a,&b,&c);
p=-b/(2*a);
q=b*b-4*a*c;
k=sqrt(q)/(2*a);
if(q>0)
{
yishigen(p+k,p-k);
printf("x1=%f,x2=%f",p+k,p-k);
}

else if(q==0)
{
denggen(p);
printf("x1=x2=%f",p);
}
else
{
xugen();
printf("No!");
}

}
float yishigen(float x,float y)
{
h=-f/(2*e);
i=sqrt(e*e-4*e*f);
x=h+i;
y=h-i;
}
float denggen(float x)
{
h=-f/(2*e);
x=h;
}
float xugen()
{
printf("No!");
}经过运行是可以的,这道题有点难度,我也写了几次,希望对你有帮助
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-11-30
#include <stdio.h>
#include <math.h>/*用到数学函数时要把这个包含进来*/

int main(void)
{
int a,b,c;
double X,X1,X2;

printf("Input a:");
scanf("%d",&a); /*%f改成%d*/

printf("Input b:");
scanf("%d",&b); /*%f改成%d*/

printf("Input c:");
scanf("%d",&c); /*%f改成%d*/

if (a==0) /*=改成==*/
printf("该方程不是一元二次方程");
else if ((b*b-4*a*c)<0)
printf("该方程无解");
else if ((b*b-4*a*c)==0)/*应该是先判断后计算*/
{
X=(double)(-b/(2*a));
printf("X= %lf",X);)/*double的格式输出符对应是%lf*/

}
else if ((b*b-4*a*c)>0)
{
X1=(double)((-b+sqrt(b*b-4*a*c))/(2*a));
X2=(double)((-b-sqrt(b*b-4*a*c))/(2*a));
printf("X1=%lf, X2=%lf",X1,X2);
}
getch();

return 0;
}
第2个回答  2010-11-28
#include <stdio.h>
#include <stdlib.h>
#include <math.h>

int main()
{
float a,b,c,l,t,x1,x2;

printf("input three numbers\n");
scanf("%f%f%f",&a,&b,&c);

t=b*b-4*a*c;

if(t>0)
{
x1=(-b+sqrt(t))/(2*a);
x2=(-b-sqrt(t))/(2*a);
printf("%f\n%f\n",x1,x2);
}
else if(t==0)
{
x1=-(b/(2*a));
printf("%f\n%f\n",x1,x1);
}
else
{
l=sqrt(-t)/2/a;
t=-b/2/a;
printf("%f%+fi\n%f%+fi",t,l,t,-l);
}
return 0;
}本回答被提问者和网友采纳