回复 楼主 野猪佩奇
程序代码:
#include<stdio.h> #include<math.h> #define EXP 0.00000001 // 由于精度的原因,float、double类型不能比较大小 int main() { double a = 0.0; double b = 0.0; double c = 0.0; double disc,p,q; scanf_s("%lf%lf%lf",&a,&b,&c); if((a >= -EXP) && (a <= EXP)) { printf("不是一元二次方程\n"); } else { disc = b * b - 4 * a * c; } p = - b / (2 * a); q = sqrt(disc)) / (2 * a); if((disc >= - EXP) && (disc <= EXP)) { printf("有两个相同的实根:x = %.2lf\n",p); } else if(disc > 0.0) { printf("x1 = %.2lf x2 = %.2lf\n",p + q,p - q); } else { printf("有两个共轭的复根: %.2lfi %.2lfi\n",p + q,p - q); } return 0; }