白骑士的C语言教学实战项目篇 4.1 计算器程序

30 篇文章 0 订阅
22 篇文章 0 订阅

系列目录

上一篇:白骑士的C语言教学高级篇 3.5 性能优化

        在本项目中,我们将设计并实现一个简单的计算器程序,涵盖程序设计与实现、用户输入处理、算术运算与结果显示。该计算器可以进行基本的加减乘除运算,并能处理用户的连续输入。

程序设计与实现

        首先,我们需要设计计算器的基本结构和功能。我们将创建一个命令行程序,用户可以输入简单的算术表达式,程序会解析并计算结果,然后将结果显示给用户。

        程序的主要模块包括:

  • 用户输入处理模块
  • 算术运算模块
  • 结果显示模块

用户输入处理

        用户输入处理模块负责接收用户输入的算术表达式,并将其拆分成操作数和操作符。这部分需要注意输入的合法性和错误处理。以下是用户输入处理的示例代码:

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


// 判断字符是否为运算符
int isOperator(char ch) {
    return ch == '+' || ch == '-' || ch == '*' || ch == '/';
}


// 提取操作数
double getOperand(char *input, int *index) {
    double operand = 0.0;

    while (isdigit(input[*index]) || input[*index] == '.') {
        operand = operand * 10 + (input[*index] - '0');

        (*index)++;
    }

    return operand;
}


// 获取操作符
char getOperator(char *input, int *index) {
    char operator = input[*index];

    (*index)++;

    return operator;
}


int main() {
    char input[100];

    printf("请输入算术表达式(例如 3 + 5):\n");
    fgets(input, sizeof(input), stdin);
    
    int index = 0;
    double operand1 = getOperand(input, &index);
    char operator = getOperator(input, &index);
    double operand2 = getOperand(input, &index);

    // 处理运算结果
    double result = 0.0;

    switch (operator) {
        case '+': result = operand1 + operand2; break;
        case '-': result = operand1 - operand2; break;
        case '*': result = operand1 * operand2; break;
        case '/': result = operand1 / operand2; break;
        default: printf("无效的运算符\n"); return 1;
    }
    
    // 显示结果
    printf("结果: %lf\n", result);

    return 0;
}

算术运算与结果显示

  • 算术运算模块:负责执行基本的加减乘除运算,并将计算结果返回给主程序。我们将使用 ‘switch‘ 语句来处理不同的运算符,并进行相应的运算;
  • 结果显示模块:负责将计算结果格式化并输出给用户。为了提高用户体验,程序可以处理一些特殊情况,比如除数为零等错误。

        以下是算术运算与结果显示的示例代码:

double calculate(double operand1, char operator, double operand2) {
    double result = 0.0;

    switch (operator) {
        case '+': result = operand1 + operand2; break;
        case '-': result = operand1 - operand2; break;
        case '*': result = operand1 * operand2; break;
        case '/':
            if (operand2 != 0) {
                result = operand1 / operand2;
            } 

            else {
                printf("错误: 除数不能为零\n");

                exit(1);
            }

            break;

        default:
            printf("无效的运算符\n");

            exit(1);
    }

    return result;
}


int main() {
    char input[100];

    printf("请输入算术表达式(例如 3 + 5):\n");
    fgets(input, sizeof(input), stdin);
    
    int index = 0;
    double operand1 = getOperand(input, &index);
    char operator = getOperator(input, &index);
    double operand2 = getOperand(input, &index);

    // 处理运算结果
    double result = calculate(operand1, operator, operand2);

    // 显示结果
    printf("结果: %lf\n", result);

    return 0;
}

总结

        通过本项目,我们实现了一个简单的计算器程序,涵盖了程序设计、用户输入处理、算术运算与结果显示等模块。这不仅让我们巩固了C语言的基础知识,也提升了我们对实际项目开发的理解和能力。在实际开发中,可以根据需要扩展计算器的功能,例如支持更多的运算符和复杂表达式处理等。

下一篇:白骑士的C语言教学实战项目篇 4.2 文件加密与解密​​​​​​​

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

白骑士所长

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值