Este tema requiere una ecuación cuadrática en una desconocida ax 2 + bx + c = 0 ax ^ {2} + bx + c = 0una x2 +bx+c=la raíz de0y el resultado retiene 2 lugares decimales.
Formato de entrada:
La entrada da 3 coeficientes de coma flotante en una línea, a、b、c
separados por espacios.
Formato de salida:
Según el coeficiente, se emiten diferentes resultados:
-
1) Si la ecuación tiene dos raíces reales que no son iguales, se generará una raíz por línea, con la más grande primero y luego la más pequeña;
-
2) Si la ecuación tiene dos raíces complejas desiguales, genere una raíz en cada línea de acuerdo con el formato "parte real + parte imaginaria i", primero genere la parte imaginaria como positiva y luego la parte imaginaria como negativa;
-
3) Si la ecuación tiene solo una raíz, genere esta raíz directamente;
-
4) Si los coeficientes son todos 0, entonces la salida "
Zero Equation
"; -
5) Si
a和b为0,c不为0
, entonces salida "Not An Equation
".
Ejemplo de entrada 1:
2.1 8.9 3.5
Ejemplo de salida 1:
0.44
-3.80
Ejemplo de entrada 2:
1 2 3
Ejemplo de salida 2:
1.00+1.41i
-1.00-1.41i
Ejemplo de entrada 3:
0 2 4
Muestra de salida 3:
2.00
Ejemplo de entrada 4:
0 0 0
Muestra de salida 4:
Zero Equation
Ejemplo de entrada 5:
0 0 1
Muestra de salida 5:
Not An Equation
Código:
# include <stdio.h>
# include <stdlib.h>
# include <math.h>
int main() {
double a,b,c,value,value1,complex;
scanf("%lf %lf %lf",&a,&b,&c);
double de_ta = b * b - 4 * a * c;
if (a == 0 && b == 0) {
if (c == 0) printf("Zero Equation");
else printf("Not An Equation");
}else {
if (de_ta == 0) {
value = (-1 * b) / (2 * a);
printf("%.2lf",value);
}else if (de_ta > 0) {
// 有特殊情况a = 0时,方程有唯一实数根
if (a == 0) {
value = (-1) * (c / b);
printf("%.2lf",value);
}else {
value = (-1 * b - sqrt(de_ta)) / (2 * a);
value1 = (-1 * b + sqrt(de_ta)) / (2 * a);
printf("%.2lf\n%.2lf",value1,value);
}
}else {
value1 = sqrt(-1 * de_ta) / (2 * a);
value = (-1) * (b / (2 * a));
// 有特殊情况,为纯虚数且前面输出要加上0.00
if (b == 0) {
printf("0.00+%.2lfi\n0.00%.2lfi",value1,-1*value1);
}else {
// 有两个复数根,先输出虚部是正的
complex = (value1 > 0) ? value1:(-1)*value1;
printf("%.2lf+%.2lfi\n%.2lf%.2lfi",value,complex,value,-1*complex);
}
}
}
return 0;
}
Enviar captura de pantalla:
Instrucciones de resolución de problemas:
La situación a considerar para esta pregunta es realmente demasiado grande. Sabrá lo que siente después de hacerlo usted mismo. Aquí hay algunos puntos a tener en cuenta:
- Cuando hay una raíz de número real única, corresponde a dos situaciones, una es que hay dos raíces de números reales iguales, y la otra situación se
a = 0
obtiene así.x = -c / b
- Cuando hay dos raíces complejas, si
b = 0
la ecuación tiene dos纯虚根
, entonces preste atención a sumar antes de la salida0.00
- La ecuación de cálculo de raíz compleja normal es
(x + b 2 a) 2 = b 2 - 4 ac 4 a 2 (x + \ frac (b) (2a)) ^ {2) = \ frac (b ^ 2-4ac} {4a ^ 2}( x+2 ab)2=4 a2B2-4 un c