帮我看看这个求解一元二次方程的程序哪有问题了?》

来源:百度知道 编辑:UC知道 时间:2024/09/25 11:38:25
#include<stdio.h>
#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("",x1,x2);
}
float f2(float a,float b)
{
float x1;
x1=-b/2/a;
return printf("方程两根相同为%f",x1);
}
f3()
{
printf("此方程无解");
return;
}
void main()
{
float a,b,c;
printf("输入a,b,c\n");
scanf("%f,%f,%f",&a,&b,&c);
if(b*b>4*a*c)
f1(a,b,c);
else if(b*b>4*a*c)
f2(a,2);
else
f3();
}

首先 sqrt( b*b>4*a*c) 是啥意思, 应该是 sqrt(b*b-4*a*c)

然后 f3()这个函数的定义要写返回值, 没返回值就写 void f3()

然后 else if (b*b > 4*a*c) 这里怎么还是 >啊,应该是小于号

你必须定义一个float变量去存放sqrt(b*b>4*a*c))的值 否则会出错的 括号内的也因该定义 一个int 的变量去存放
没有为什么 我也不知道

f1函数中的求根公式有误,应该是x1=(-b+sqrt(b*b-4*a*c))/2/a; x2=(-b-sqrt(b*b-4*a*c))/2/a; 你怎么是x1=(-b+sqrt(b*b>4*a*c))/2/a; x2=(-b-sqrt(b*b>4*a*c))/2/a; ?