用 C 语言求解线性方程 (ax + b = 0)

CBeginner
立即练习

简介

在本实验中,你将学习如何使用 C 语言求解形如 ax + b = 0 的线性方程。你将首先从用户那里读取系数 a 和 b,然后通过应用公式 x = -b/a来计算解x,同时确保系数a不为零。最后,你将输出解或者指出该方程无解。

本实验涵盖了代数表达式的基本概念及其在 C 语言中的实现。完成本实验后,你将对如何通过编程求解简单的线性方程有深入的理解。

读取系数 a 和 b

在这一步中,你将学习如何在 C 语言中读取求解线性方程所需的系数 a 和 b。我们将创建一个简单的程序,提示用户输入系数并将它们存储在变量中。

首先,在项目目录中创建一个新的 C 文件:

cd ~/project
nano linear_equation.c

现在,输入以下代码来读取系数:

#include <stdio.h>

int main() {
    double a, b;

    // 提示用户输入系数 a
    printf("Enter coefficient a (must not be zero): ");
    scanf("%lf", &a);

    // 提示用户输入系数 b
    printf("Enter coefficient b: ");
    scanf("%lf", &b);

    // 打印输入的系数
    printf("Coefficient a: %.2f\n", a);
    printf("Coefficient b: %.2f\n", b);

    return 0;
}

编译并运行该程序:

gcc linear_equation.c -o linear_equation
./linear_equation

示例输出:

Enter coefficient a (must not be zero): 2
Enter coefficient b: 4
Coefficient a: 2.00
Coefficient b: 4.00

让我们来分析一下这段代码:

  • 我们使用double类型来允许输入带小数的系数
  • printf()用于提示用户输入
  • scanf()读取用户输入并将其存储在变量ab
  • 我们打印输入的系数以确认它们被正确读取

计算 x = -b/a(检查a是否不等于0)

在这一步中,你将修改之前的程序来计算线性方程 ax + b = 0 的解,特别要注意处理 a 为零的情况。

打开之前的文件并更新代码:

cd ~/project
nano linear_equation.c

将内容替换为以下代码:

#include <stdio.h>

int main() {
    double a, b, x;

    // 提示用户输入系数 a
    printf("Enter coefficient a (must not be zero): ");
    scanf("%lf", &a);

    // 检查 a 是否为零
    if (a == 0) {
        printf("Error: Coefficient 'a' cannot be zero.\n");
        return 1;
    }

    // 提示用户输入系数 b
    printf("Enter coefficient b: ");
    scanf("%lf", &b);

    // 计算解 x
    x = -b / a;

    // 打印解
    printf("Solution of the equation %.2fx + %.2f = 0:\n", a, b);
    printf("x = %.2f\n", x);

    return 0;
}

编译并运行程序:

gcc linear_equation.c -o linear_equation
./linear_equation

有效输入的示例输出:

Enter coefficient a (must not be zero): 2
Enter coefficient b: 4
Solution of the equation 2.00x + 4.00 = 0:
x = -2.00

无效输入(a = 0)的示例输出:

Enter coefficient a (must not be zero): 0
Error: Coefficient 'a' cannot be zero.

这段代码的要点:

  • 在计算解之前,我们添加了一个检查以确保 a 不为零
  • 如果 a 为零,我们打印错误消息并退出程序
  • 使用公式 x = -b/a计算解x
  • 我们使用%.2f将输出格式化为保留两位小数

输出解或说明无解

在这最后一步中,你将完善线性方程求解器,以处理不同的情况并为解提供清晰的输出。

打开之前的文件并更新代码:

cd ~/project
nano linear_equation.c

将内容替换为以下代码:

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

int main() {
    double a, b, x;

    // 提示用户输入系数 a
    printf("Enter coefficient a: ");
    scanf("%lf", &a);

    // 提示用户输入系数 b
    printf("Enter coefficient b: ");
    scanf("%lf", &b);

    // 检查不同情况
    if (a == 0 && b == 0) {
        printf("有无数解:任意实数都是解。\n");
    } else if (a == 0 && b!= 0) {
        printf("无解:该方程无法求解。\n");
    } else {
        // 计算解 x
        x = -b / a;

        // 输出解
        printf("方程:%.2fx + %.2f = 0\n", a, b);
        printf("解:x = %.2f\n", x);
    }

    return 0;
}

编译并运行程序:

gcc linear_equation.c -o linear_equation
./linear_equation

示例输出情况:

情况 1(正常解):

Enter coefficient a: 2
Enter coefficient b: 4
方程:2.00x + 4.00 = 0
解:x = -2.00

情况 2(无解):

Enter coefficient a: 0
Enter coefficient b: 5
无解:该方程无法求解。

情况 3(有无数解):

Enter coefficient a: 0
Enter coefficient b: 0
有无数解:任意实数都是解。

此版本的主要改进:

  • 处理线性方程的三种不同情况
  • 针对不同情况提供清晰、有用的信息
  • 使用精确的数学逻辑来确定解的类型

总结

在本实验中,你学习了如何在 C 语言中读取求解线性方程所需的系数 a 和 b。你创建了一个简单的程序,提示用户输入系数并将它们存储在变量中。你还学习了如何计算线性方程 ax + b = 0 的解,特别关注了 a 为零的情况。程序会检查 a 是否为零,如果是则给出错误信息,否则计算解 x = -b/a并输出。