本题目要求一元二次方程 a*x2+b*x+c=0 的根,结果保留2位小数。
输入格式:
输入在一行中给出3个浮点系数a, b, c,中间用空格分开。
输出格式:
根据系数情况,输出不同结果:
1)如果方程有两个不相等的实数根,则每行输出一个根,先大后小; 2)如果方程有两个不相等复数根,则每行按照格式“实部+虚部i”输出一个根,先输出虚部为正的,后输出虚部为负的; 3)如果方程只有一个根,则直接输出此根; 4)如果系数都为0,则输出"Zero Equation"; 5)如果a和b为0,c不为0,则输出"Not An Equation"。代码:
#include <stdio.h> #include <math.h> #include <string.h> int main() { double a,b,c; scanf("%lf%lf%lf", &a, &b, &c); if(a<0.00001 && a>-0.00001) if(b<0.00001 && b>-0.00001) if(c<0.00001 && c>-0.00001)printf("Zero Equation\n"); else printf("Not An Equation\n"); else printf("%.2f\n", -c/b); else { double d = b * b - 4 * a * c; if(d > 0) { double z = sqrt(d); printf("%.2f\n",(- b + z) / (2*a) ); printf("%.2f\n",(- b - z) / (2*a) ); } else if(d == 0) { printf("%.2f\n",- b / (2*a) ); } else { double z = sqrt(-d); double u = z / (2*a); u = u > 0 ? u : -u; double p = -b/(2*a); if( p < 0.005 && p > -0.005 )p = 0.0; printf("%.2f%+.2fi\n",p, u); printf("%.2f%+.2fi\n",p, -u); } } return 0; }
分支-18. 求一元二次方程的根(20)
最新推荐文章于 2023-10-10 20:37:55 发布