本题目要求一元二次方程ax2+bx+c=0的根,结果保留2位小数。
输入格式:
输入在一行中给出3个实数系数a、b、c,中间用空格隔开。
输出格式:
根据系数情况,输出不同结果:
1)如果方程有两个不相等的实数根,则按照格式"x1=大根,x2=小根"输出;
2)如果方程有两个不相等复数根,则按照格式"x1=实部+虚部i,x2=实部-虚部i"输出;
3)如果方程有相等根,则输出x1=x2=此根;
4)如果方程退化为一元一次方程,则输出"x=值”。
5)如果系数都为0,则为任意解,输出"Any Answer";
6)如果a和b为0,c不为0,则无解,输出"No Answer"。
7)结果保留两位小数。
输入样例1:
1 2 1
输出样例1:
x1=x2=-1.00
输入样例2:
3 4 5
输出样例2:
x1=-0.67+1.11i,x2=-0.67-1.11i
#include<stdio.h>
#include<math.h>
int main()
{
int a,b,c,d;
double x;
scanf("%d %d %d",&a,&b,&c);
x=b*b-4*a*c;
d=b*b-a*c*4;
if(a==0&&b==0&&c==0)
printf("Any Answer");
else if(a==0&&b==0&&c!=0)
printf("No Answer");
else if (a==0)
printf("x=%.2lf",(double)-c/b);
else if (a!=0&&b!=0&&c!=0)
{
if(d>0)
{
printf("x1=%.2lf,x2=%.2lf",(double)(-b+sqrt(x))/(2*a),(double)(-b-sqrt(x))/(2*a));
}
else if(d==0)
printf("x1=x2=%.2lf",(double)-b/(2*a));
else if(d<0)
printf("x1=%.2lf+%.2lfi,x2=%.2lf-%.2lfi",(double)-b/(2*a),(double)sqrt(-x)/(2*a),(double)-b/(2*a),(double)sqrt(-x)/(2*a));
}
return 0;
}