```c
请编写程序,解一元一次方程 ax
2
+bx+c=0 。
一元二次方程的求根公式为:
题图.jpg
要求:
若 a=0,则为一元一次方程。
若 b
=0,则方程有唯一解,输出这个解;
若 b=0,c
=0,则方程无解,输出“无解”;
若 b=0,c=0,则方程有无穷多解,输出“无穷多解”。
若 a
=0,则为一元二次方程。
若 Δ>0,则方程有两个不等的实根,输出这两个根;
若 Δ=0,则方程有两个相等的实根,输出这两个根;
若 Δ<0,则方程有两个共轭的虚根,输出这两个根。
输入格式
a,b,c
输出格式
x 或 x
1
,x
2
注:所有实数均输出6位有效数字,且不输出末尾无意义的0和小数点。
输入样例1
0 4.5 -3.6
结尾无空行
输出样例1
x = 0.8
结尾无空行
输入样例2
0 2.8 0
结尾无空行
输出样例2
x = 0
结尾无空行
输入样例3
0 0 3.6
结尾无空行
输出样例3
无解
结尾无空行
输入样例4
0 0 0
结尾无空行
输出样例4
无穷多解
结尾无空行
输入样例5
-2 0.8 -0.06
结尾无空行
输出样例5
x1 = 0.1, x2 = 0.3
结尾无空行
输入样例6
-1 0.2 0
结尾无空行
输出样例6
x1 = 0, x2 = 0.2
结尾无空行
输入样例7
1 -0.4 0.04
结尾无空行
输出样例7
x1 = x2 = 0.2
结尾无空行
输入样例8
0.3 0 0
结尾无空行
输出样例8
x1 = x2 = 0
结尾无空行
输入样例9
-0.2 0.04 -0.01
结尾无空行
输出样例9
x1 = 0.1-0.2i, x2 = 0.1+0.2i
结尾无空行
输入样例10
3 0 0.27
结尾无空行
输出样例10
x1 = 0+0.3i, x2 = 0-0.3i
结尾无空行
```c
#include <stdio.h>
#include <math.h>
int main()
{
double a,b,c,s,x1,x2,m,p,q;
scanf("%lf %lf %lf",&a,&b,&c);
s=b*b-4*a*c;
m=(-c)/b;
x1=(-b+sqrt(s))/(2*a);
x2=(-b-sqrt(s))/(2*a);
p=-b/(2*a);
q=sqrt(fabs(s))/(2*a);
if(a == 0)
{
if(b!=0)
{
printf("x = %.6g",fabs(m));
}
if(b==0&&c!=0)
{
printf("无解");
}
if(b==0&&c==0)
{
printf("无穷多解");
}
}
if(a!=0)
{
if(s>0.000001)
{
printf("x1 = %.6g, x2 = %.6g",fabs(p+q),fabs(p-q));
}
if(s<0.000001&&s>-0.000001)
{
printf("x1 = x2 = %.6g",fabs(p));
}
if(s<0)
{
printf("x1 = %.6g+%.6gi, ",fabs(p),q);
printf("x2 = %.6g-%.6gi",fabs(p),q);
}
}
return 0;
}