C语言二次方程求根代码分析及修复:避免除零错误

在代码中,存在两个问题:

  1. 第一个问题是在输入的时候,使用了%lf来读取abc的值,但是应该使用%f来读取。

  2. 第二个问题是在计算x1x2的时候,有可能出现除以0的情况,需要对a进行判断,如果a等于0,则输出'000'。

下面是修改后的代码:

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

int main(){
    double a,b,c,m,x1,x2,z;
    scanf('%f%f%f',&a,&b,&c);

    if(a == 0){
        printf('000');
        return 0;
    }

    m = b*b - 4*a*c;
    z = sqrt(m);
    if(m < 0){
        printf('000');
    }
    else{
        x1 = (-b + z) / (2*a);
        x2 = (-b - z) / (2*a);
        printf('x1=%7.2f\nx2=%7.2f\n',x1,x2);
    }
    return 0;
}

总结

本篇文章通过分析C语言代码,指出了代码中存在的错误并提供了修正方法。希望能够帮助读者更好地理解C语言编程中的常见错误,并提高代码质量。


原文地址: https://www.cveoy.top/t/topic/pjze 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录