pcl54188 2023-10-10 16:52 采纳率: 0%
浏览 28

c语言二元一次方程问题求解

从键盘任意输入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位有效数字(四舍五入),不足补零。

  • 写回答

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;
    }
    
    
    评论

报告相同问题?

问题事件

  • 创建了问题 10月10日