在 C 语言中计算有理表达式

CBeginner
立即练习

简介

在本实验中,你将学习如何在 C 编程中计算有理表达式的值。该实验涵盖了读取分子和分母表达式、通过处理除以零的情况安全地计算分数值以及打印最终结果的基本步骤。这个实践练习将帮助你培养使用 C 处理代数表达式所需的技能。

实验首先引导你完成从用户读取分子和分母输入的过程,确保这些值在你的程序中正确存储。然后介绍处理除以零的概念,这是处理分数时常见的问题,并演示如何解决这种情况。最后,实验涵盖分数值的计算和最终结果的输出。

读取分子和分母表达式

在这一步中,你将学习如何在 C 语言中读取分子和分母表达式,这是计算有理表达式的一项基本技能。

首先,创建一个新的 C 文件来实现有理表达式输入:

cd ~/project
nano rational_expressions.c

现在,添加以下代码来读取分子和分母:

#include <stdio.h>

int main() {
    int numerator, denominator;

    printf("输入分子:");
    scanf("%d", &numerator);

    printf("输入分母:");
    scanf("%d", &denominator);

    printf("分子:%d\n", numerator);
    printf("分母:%d\n", denominator);

    return 0;
}

编译并运行程序:

gcc rational_expressions.c -o rational_expressions
./rational_expressions

示例输出:

输入分子:10
输入分母:5
分子:10
分母:5

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

  • scanf() 用于从用户读取整数输入
  • %d 格式说明符用于整数输入
  • 我们将分子和分母分别存储在单独的整数变量中
  • printf() 用于显示输入的值

计算分数值

在这一步中,你将学习如何通过处理潜在的除以零情况并进行计算来安全地计算分数值。

更新之前的 rational_expressions.c 文件以包含分数计算:

cd ~/project
nano rational_expressions.c

修改代码以计算分数值:

#include <stdio.h>

int main() {
    int numerator, denominator;
    float fraction_value;

    printf("输入分子:");
    scanf("%d", &numerator);

    printf("输入分母:");
    scanf("%d", &denominator);

    // 检查是否除以零
    if (denominator == 0) {
        printf("错误:不允许除以零。\n");
        return 1;
    }

    // 计算分数值
    fraction_value = (float)numerator / denominator;

    printf("分子:%d\n", numerator);
    printf("分母:%d\n", denominator);
    printf("分数值:%.2f\n", fraction_value);

    return 0;
}

编译并运行程序:

gcc rational_expressions.c -o rational_expressions
./rational_expressions

示例输出:

输入分子:10
输入分母:4
分子:10
分母:4
分数值:2.50

代码中的关键点:

  • 添加了除以零的检查以防止运行时错误
  • 使用 (float) 类型转换以确保浮点除法
  • 使用 %.2f 以两位小数显示分数值

打印结果或处理除以零的情况

在这一步中,你将增强有理表达式程序,以提供更强大的错误处理和结果展示功能。

更新 rational_expressions.c 文件以改进输出和错误处理:

cd ~/project
nano rational_expressions.c

修改代码以包含高级错误处理和结果格式化:

#include <stdio.h>
#include <stdlib.h>

int main() {
    int numerator, denominator;

    // 输入验证和错误处理
    printf("输入分子:");
    if (scanf("%d", &numerator)!= 1) {
        printf("错误:无效的分子输入。\n");
        return 1;
    }

    printf("输入分母:");
    if (scanf("%d", &denominator)!= 1) {
        printf("错误:无效的分母输入。\n");
        return 1;
    }

    // 全面的除以零处理
    if (denominator == 0) {
        printf("错误:不能除以零。分母必须是非零的。\n");
        return 1;
    }

    // 计算并以不同格式打印结果
    double fraction_value = (double)numerator / denominator;

    printf("\n--- 有理表达式结果 ---\n");
    printf("分子:      %d\n", numerator);
    printf("分母:    %d\n", denominator);
    printf("分数值: %.2f\n", fraction_value);
    printf("整数结果: %d\n", numerator / denominator);
    printf("余数:      %d\n", numerator % denominator);

    return 0;
}

编译并运行程序:

gcc rational_expressions.c -o rational_expressions
./rational_expressions

示例输出:

成功计算:

输入分子:10
输入分母:4

--- 有理表达式结果 ---
分子:      10
分母:    4
分数值: %.2f
整数结果: 2
余数:      2

除以零:

输入分子:10
输入分母:0
错误:不能除以零。分母必须是非零的。

无效输入:

输入分子:abc
错误:无效的分子输入。

主要改进:

  • 使用 scanf() 的返回值添加输入验证
  • 针对不同场景增强错误消息
  • 提供多种结果表示形式
  • 使用 double 进行更精确的浮点计算

总结

在本实验中,你学习了如何在 C 语言中读取分子和分母表达式,这是计算有理表达式的一项基本技能。你还学习了如何通过处理潜在的除以零情况并进行计算来安全地计算分数值。最后,你实现了打印结果或处理除以零情况的功能。这些步骤为在 C 编程中处理有理表达式奠定了坚实的基础。