C语言问题 求一元二次方程的解· 为什么我的程序运行时一直有问题啊,只会出现没实根的结果

2025-02-25 09:42:39
推荐回答(4个)
回答1:

#include
#include
float x1,x2,tell,p,q;
void main()
{void bigger(float x,float y); //void类型
void equal(float x,float y);
void smaller(float x,float y);
float a,b,c;
printf("input a,b,c:");
scanf("%f%f%f",&a,&b,&c); //这里不要用逗号
tell=b*b-4*a*c;
printf("The root is:\n");
if(tell>0)
{
bigger(a,b);
printf("x1=%f x2=%f",x1,x2);
}
else if(tell==0)
{
equal(a,b);
printf("x1=%f x2=%f",x1,x2);
}
else if(tell<0)
{
smaller(a,b); //如果是虚数根,函数里已经打印了,不要再打印
}
}
void bigger(float x,float y)
{
x1=(-y+sqrt(tell))/(2*x);
x2=(-y-sqrt(tell))/(2*x);
}
void equal(float x,float y)
{
x1=x2=(-y)/(2*x);
}
void smaller(float x,float y)
{
p=-y/(2*x);
q=sqrt(-tell)/(2*x);
printf("x1=%f+%fi x2=%f-%fi\n",p,q,p,q);
}

回答2:

#include
#include
void main()
{ void large(double a,double b,double c);
void medium(double a,double b,double c);
void small(double a,double b,double c);
double a,b,c,d;
printf("请随意输入三个数");
scanf("%lf%lf%lf",&a,&b,&c);//不要逗号,也不要\n,而且要在f前加l,因为是双精度的
d=b*b-4*a*c;
if(d>0)large(a,b,c);
if(d==0)medium(a,b,c);
if(d<0)small(a,b,c);
}
void large(double a,double b,double c)
{
double x1,x2;
x1=(-b+sqrt(b*b-4*a*c))/(2*a);
x2=(-b-sqrt(b*b-4*a*c))/(2*a);
printf("两个根是:x1=%f ,x2=%f\n",x1,x2);
}
void medium(double a,double b,double c)
{
double x;
x=-b/(2*a);
printf("x=%f\n",x);
}
void small(double a,double b,double c)
{
printf("这个方程没有实根");
}

回答3:

#include
#include
void main()
{ void large(double a,double b,double c);
void medium(double a,double b,double c);
void small(double a,double b,double c);
double a,b,c,d;
printf("请随意输入三个数");
scanf("%f,%f,%f\n",&a,&b,&c); //这里写错了,不能加\n
d=b*b-4*a*c;
if(d>0)large(a,b,c);
if(d==0)medium(a,b,c);
if(d<0)small(a,b,c);
}
void large(double a,double b,double c)
{
double x1,x2;
x1=(-b+sqrt(b*b-4*a*c))/(2*a);
x2=(-b-sqrt(b*b-4*a*c))/(2*a);
printf("两个根是:x1=%f,x2=%f\n",x1,x2);
}
void medium(double a,double b,double c)
{
double x;
x=-b/(2*a);
printf("x=%f\n",x);
}
void small(double a,double b,double c)
{
printf("这个方程没有实根");
}

回答4:

你的输入格式错误了,应改成scanf("%lf%lf%lf",&a,&b,&c);中间不要逗号喔,也不要\n!