从键盘任意输入a、b、c的值,编程计算并输出一元二次方程ax2 + bx + c = 0的根。分成下面四种情况来输出:
1)当a等于0时(即a小于10-6时),输出“FALSE”(不输出引号)。
2)当b2 - 4ac = 0时(即b2 - 4ac小于10-6时),有两个相等的实根,输出其中一个实根的值。
3)当b2 - 4ac > 0时,有两个不相等的实根,输出实根和,两项之间用一个空格隔开。
4)当b2 - 4ac < 0时,有两个复数根,输出复数根和,两项之间用一个空格隔开。为了简化问题,假定a为正数。
输出要求小数点后必须保留2位有效数字(四舍五入),不足补零。
c语言二元一次方程问题求解
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
2条回答
- 「已注销」 2023-10-10 17:15关注
#include <stdio.h> #include <math.h> int main() { double a, b, c; double discriminant, root1, root2; printf("请输入a、b、c的值:"); scanf("%lf %lf %lf", &a, &b, &c); if (fabs(a) < 1e-6) { printf("FALSE\n"); } else { discriminant = b * b - 4 * a * c; if (fabs(discriminant) < 1e-6) { root1 = -b / (2 * a); printf("%.2lf\n", root1); } else if (discriminant > 1e-6) { root1 = (-b + sqrt(discriminant)) / (2 * a); root2 = (-b - sqrt(discriminant)) / (2 * a); printf("%.2lf %.2lf\n", root1, root2); } else { double realPart = -b / (2 * a); double imaginaryPart = sqrt(-discriminant) / (2 * a); printf("%.2lf+%.2lfi %.2lf-%.2lfi\n", realPart, imaginaryPart, realPart, imaginaryPart); } } return 0; }解决 无用评论 打赏 举报