|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
- #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;
- }
复制代码
这个代码写得对吗,还能再修改提升吗
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;
- }
复制代码希望以上的回答能满足你的需求。如果有任何疑问,请随时提出。
球一个最佳答案谢谢啦!这对我非常重要!  
|
|