小羊爱吃小草 发表于 2023-11-2 19:36:47

C语言,这个代码写得对吗,还能再修改提升吗

#include <stdio.h>
#include <math.h>

int main()
{
        double a, b, c, p, q, x1, x2;
        a = 1.0;
        b = 8.0;
        c = 4.0;
        p = (-b) / (2*a);
        q = sqrt(b*b-4*a*c)/2*a;
        x1 = p+q;
        x2 = p-q;
        printf("%f\n%f", x1,x2);
        return 0;
}
这个代码写得对吗,还能再修改提升吗

isdkz 发表于 2023-11-2 19:37:00

这段代码是用来解二次方程的,但是有两个问题需要修改:

1. 在计算q的时候,分母的2*a没有加括号,导致计算结果不正确。应该修改为sqrt(b*b-4*a*c)/(2*a)。

2. 在使用printf函数输出x1和x2的时候,缺少了换行符。应该修改为printf("%f\n%f\n", x1, x2)。

修改后的代码如下:

#include <stdio.h>
#include <math.h>

int main()
{
    double a, b, c, p, q, x1, x2;
    a = 1.0;
    b = 8.0;
    c = 4.0;
    p = (-b) / (2*a);
    q = sqrt(b*b-4*a*c)/(2*a);
    x1 = p+q;
    x2 = p-q;
    printf("%f\n%f\n", x1, x2);
    return 0;
}


这样修改后的代码就能正确计算并输出二次方程的解了。

Mike_python小 发表于 2023-11-2 19:38:04

C语言代码分析和改进:

这段代码的主要目的是求解一元二次方程的根。现在来分析代码是否正确并提出改进:


#include <stdio.h>
#include <math.h>

int main() {
    double a, b, c, p, q, x1, x2;

    a = 1.0;
    b = 8.0;
    c = 4.0;

    p = (-b) / (2*a);
    q = sqrt(b*b-4*a*c)/2*a;

    x1 = p+q;
    x2 = p-q;

    printf("%f\n%f", x1,x2);

    return 0;
}


代码的逻辑基本正确,可以正确求解一元二次方程的根。然而,有几个地方可以进行改进:

1. 对于计算平方根的部分,应将2*a加上括号,以确保正确的运算顺序:q = sqrt(b*b-4*a*c)/(2*a);。

2. 在输出结果时,可以添加一些格式化控制符,使得输出更加美观:printf("x1 = %.2f\nx2 = %.2f\n", x1, x2);。

3. 考虑到代码的可读性和可维护性,可以将变量的定义和赋值放在一起,增加代码的清晰度:


double a = 1.0, b = 8.0, c = 4.0;
double p, q, x1, x2;

p = (-b) / (2*a);
q = sqrt(b*b-4*a*c)/(2*a);

x1 = p + q;
x2 = p - q;


4. 为了增强代码的健壮性,可以添加对判别式是否小于0的判断,并给出相应的提示信息。

综上所述,以下是改进后的代码:


#include <stdio.h>
#include <math.h>

int main() {
    double a = 1.0, b = 8.0, c = 4.0;
    double p, q, x1, x2;

    p = (-b) / (2*a);
    q = sqrt(b*b-4*a*c)/(2*a);

    if (b*b-4*a*c < 0) {
      printf("The equation has no real roots.\n");
    } else {
      x1 = p + q;
      x2 = p - q;
      printf("x1 = %.2f\nx2 = %.2f\n", x1, x2);
    }

    return 0;
}

希望以上的回答能满足你的需求。如果有任何疑问,请随时提出。

球一个最佳答案谢谢啦!这对我非常重要!{:10_254:}{:10_254:}{:10_254:}
页: [1]
查看完整版本: C语言,这个代码写得对吗,还能再修改提升吗