You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C语言求解二元一次方程部分解的代码问题排查与修正请求

二元一次方程求解代码问题排查与修正

原代码存在的问题

  • 计算逻辑冗余错误:先通过y计算x、再通过新x反算y的操作无意义,二元一次方程只需固定其中一个变量的取值,即可直接计算出另一变量的对应解
  • 变量类型与精度判断错误:sol被定义为int类型,浮点数计算结果赋值给int会被自动截断,且浮点数存在精度误差,不能直接用==0判断是否满足方程,需判断计算结果与0的差值是否小于极小阈值
  • 执行顺序错误:在校验解满足条件前就对x、y做了递增操作,最终打印的是自增后的值,不是实际满足方程的解
  • 未处理边界异常:未判断系数a、b为0的情况,直接做除法会触发除零错误
  • 存在未使用的冗余变量Rx、Ry

修正后代码

#include <stdio.h>
// 浮点数判零阈值,可根据精度需求调整
#define EPS 1e-6

int main()
{
    float a, b, c;
    float x, y;
    int sol_count = 0; // 记录找到的解的数量

    printf("The Linear equation in two variable\n");
    printf("Format is   aX+bY+c=0\n");
    printf("Enter the coefficient of 'X'\n");
    scanf("%f", &a);
    printf("Enter the coefficient of 'Y'\n");
    scanf("%f", &b);
    printf("Enter the coefficient of constant 'c'\n");
    scanf("%f", &c);

    printf("Your equation looks like\n");
    printf("%0.0fX+%0.0fY+%0.0f=0\n", a, b, c);

    // 先处理边界情况:a和b同时为0
    if (a < EPS && b < EPS) {
        if (c < EPS) {
            printf("方程对所有x、y都成立\n");
        } else {
            printf("方程无解\n");
        }
        return 0;
    }

    // 固定x的取值,从0开始递增,找10组有效解
    for (x = 0; sol_count < 10; x++)
    {
        // 如果b不为0,通过x计算y
        if (b > EPS || b < -EPS) {
            y = (-a * x - c) / b;
        } else {
            // b为0时,方程为aX + c =0,x固定,y可以取任意值
            x = -c / a;
            y = sol_count; // 给y赋值不同值生成多组解
        }
        // 校验解是否满足方程
        float check = a * x + b * y + c;
        if (check < EPS && check > -EPS) {
            sol_count++;
            printf("第%d组解:x = %0.2f,y = %0.2f\n", sol_count, x, y);
        }
    }

    return 0;
}

修正说明

  • 新增了系数边界判断逻辑,避免除零错误,同时兼容a或b为0的特殊场景
  • 优化了解的计算逻辑,固定x的取值直接计算对应y,避免冗余计算
  • 新增浮点数精度阈值EPS,用差值判断替代直接等于0的判断,避免精度误差导致的校验失败
  • 调整了变量自增与解打印的顺序,保证输出的是实际满足方程的解
  • 移除了无用冗余变量,优化了计数逻辑,保证可以输出指定数量的有效解

内容的提问来源于stack exchange,提问作者B 04 Sant Yadav

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 10:00:00