C语言练手项目--C 语言制作简单计算器

一、需求

使用 C 语言做一个简单的计算器,能执行加、减、乘、除操作

二、实现

1、思路

(1)标准输入到str中
(2)将str中运算符和数值分别记录在两个数组中
(3)然后逐次对每个运算符和相关的左值和右值进行运算
(4)将最后的结果输出

2、代码

/*
 * Author: sen
 * Date: 2018-12-04
 */

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

#define SUM 10
#define MAX 100
typedef enum {
    false, true        
} bool;

float operate(float, float, char);

int main()
{
    printf("************运算器************\n");
    float value[SUM];
    char operators[SUM];
    char str[MAX];
    int valueLen, operatorsLen;
    valueLen = operatorsLen = 0;
    if (fgets(str, MAX, stdin) != NULL) {
        int length = strlen(str) - 1;
        if (str[length - 1] != '=') { 
            printf("please input '=' at the end\n");
        } else {
            int start = 0;
            for (int i = 0; i < length; i++) {
                bool flag = false;
                switch (str[i]) {
                    case '+': 
                        flag = true;
                        operators[operatorsLen++] = '+';
                        break;
                    case '-': 
                        flag = true;
                        operators[operatorsLen++] = '-';
                        break;
                    case '*': 
                        flag = true;
                        operators[operatorsLen++] = '*';
                        break;
                    case '/': 
                        flag = true;
                        operators[operatorsLen++] = '/';
                        break;
                    case '=':
                        flag = true;
                        break;
                    default:
                        break;
                }
                if (flag) {
                    char valueTmp[MAX];
                    for (int j = 0; j <= (i - start + 1); j++) {
                        valueTmp[j] = str[start++];
                    }
                    value[valueLen++] = atof(valueTmp);
                    start = i + 1;
                } 
                flag = false;
            }
        }
    } else {
        printf("please restart!\n");
    }

    float leftValue = value[0];
    int  count = 0;
    while (count < operatorsLen) {
        leftValue = operate(leftValue, value[count + 1], operators[count]);
        count++;
    } 
    printf("The result is: %2.2f\n", leftValue);

    return 0;
}

float operate(float num1, float num2, char symbol)
{
    switch (symbol) {
        case '+':
            return num1 + num2;
            break;
        case '-':
            return num1 - num2;
            break;
        case '*':
            return num1 * num2;
            break;
        case '/':
            return num1 / num2;
            break;
        default:
            printf("Error,please restart!\n");
            return 0;
            break;
    }
}

3、运行结果

在这里插入图片描述

三、参考链接

1、C 语言制作简单计算器

展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 技术黑板 设计师: CSDN官方博客
应支付0元
点击重新获取
扫码支付

支付成功即可阅读