c++求根问题

来源:百度知道 编辑:UC知道 时间:2024/06/16 10:04:59
#include<stdio.h>
我下面的程序求一元二次方程的根,不知哪有问题,当德尔塔大于零时只能输出x1一个根,而不是x1,x2?希望高手不吝指教。
#include<math.h>
float f1(float a,float b,float c)
{
float x1,x2;
x1=(-b+sqrt(b*b-4*a*c))/2/a;
x2=(-b-sqrt(b*b-4*a*c))/2/a;
return (printf("方程有两根%f",x1,x2));
}
float f2(float a,float b)
{
float x1;
x1=-b/2/a;
return (printf("方程两根相同为%f",x1));
}
void f3()
{
printf("此方程无解");
}
int main()
{
float a,b,c;
printf("输入a,b,c\n");
scanf("%f,%f,%f",&a,&b,&c);
if(b*b-4*a*c>0)
{
f1(a,b,c);
}
else if(b*b-4*a*c==0)
{
f2(a,b);
}
else
{
f3();
}
return 0;

}

#include<stdio.h>
//我下面的程序求一元二次方程的根,不知哪有问题,当德尔塔大于零时只能输出x1一个根,而不是x1,x2?希望高手不吝指教。
#include<math.h>
float f1(float a,float b,float c)
{
float x1,x2;
x1=(-b+sqrt(b*b-4*a*c))/2/a;
x2=(-b-sqrt(b*b-4*a*c))/2/a;
return (printf("方程有两根%f %f",x1,x2)); //改这里
}
float f2(float a,float b)
{
float x1;
x1=-b/2/a;
return (printf("方程两根相同为%f",x1));
}
void f3()
{
printf("此方程无解");
}
int main()
{
float a,b,c;
printf("输入a,b,c\n");
scanf("%f,%f,%f",&a,&b,&c);
if(b*b-4*a*c>0)
{
f1(a,b,c);
}
else if(b*b-4*a*c==0)
{
f2(a,b);
}
else
{
f3();
}
return 0;

}

return (printf("方程有两根%f",x1,x2)) 错了。return (printf("方程有两根%f %f",x1,x2))应该是这个

这问题我今天看到3,4次了, 是一个人问n次还是这一班的同学都来这做作业来了