题记(41)--简易计算器

2024-02-14 22:20
文章标签 41 简易 计算器 题记

本文主要是介绍题记(41)--简易计算器,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

一、题目内容

二、输入描述

三、输出描述

四、输入输出示例

五、完整C语言代码


一、题目内容

读入一个只包含 +, -, *, / 的非负整数计算表达式,计算该表达式的值。

二、输入描述

  测试输入包含若干测试用例,每个测试用例占一行,每行不超过200个字符,整数和运算符之间用一个空格分隔。没有非法表达式。当一行中只有0时输入结束,相应的结果不要输出。

三、输出描述

对每个测试用例输出1行,即该表达式的值,精确到小数点后2位。

四、输入输出示例

输入:

1 + 2
4 + 2 * 5 - 7 / 11
0

输出:

3.00
13.36

五、完整C语言代码

AC代码~#include<stdio.h>
#include<string.h>int IsDigit(char s) {if ('0' <= s && s <= '9')return 1;return 0;
}int Isch(char s) {if (s == '+' || s == '-' || s == '*' || s == '/')return 1;return 0;
}double cal(double a, double b, char tmp) {if (tmp == '+')return a + b;else if (tmp == '-')return a - b;else if (tmp == '*')return a * b;elsereturn a / b;
}int main() {double s1[100]; // 数字栈char s2[100];   // 符号栈int top1, top2; // 二者指针char s[200];while (gets(s)) {if (strcmp(s, "0") == 0)break;top1 = top2 = -1;int i = 0;while (s[i] != '\0') {if (IsDigit(s[i])) {int num = 0;while (IsDigit(s[i])) {num = num * 10 + (s[i] - '0');i++;}top1++;s1[top1] = num * 1.0;} else if (Isch(s[i])) {if (top2 != -1) { // 符号栈不空情况if (s[i] == '+' || s[i] == '-') {while (top2 != -1) {char stmp = s2[top2];top2--;double n1 = s1[top1];double n2 = s1[top1 - 1];top1 = top1 - 1;       // 本应减2,后面加1,所以减1double tmp = cal(n2, n1, stmp);s1[top1] = tmp;}} else {while ((s2[top2] == '*' || s2[top2] == '/') && top2 != -1) {char stmp = s2[top2];top2--;double n1 = s1[top1];double n2 = s1[top1 - 1];top1 = top1 - 1;       // 本应减2,后面加1,所以减1double tmp = cal(n2, n1, stmp);s1[top1] = tmp;}}}top2++;s2[top2] = s[i];i++;} elsei++;}while (top2 != -1) {    // 结束后运算栈内剩余char stmp = s2[top2];top2--;double n1 = s1[top1];double n2 = s1[top1 - 1];top1 = top1 - 1;       // 本应减2,后面加1,所以减1double tmp = cal(n2, n1, stmp);s1[top1] = tmp;}printf("%.2f\n", s1[0]);}return 0;
}

这篇关于题记(41)--简易计算器的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/709726

相关文章

Python结合Flask框架构建一个简易的远程控制系统

《Python结合Flask框架构建一个简易的远程控制系统》这篇文章主要为大家详细介绍了如何使用Python与Flask框架构建一个简易的远程控制系统,能够远程执行操作命令(如关机、重启、锁屏等),还... 目录1.概述2.功能使用系统命令执行实时屏幕监控3. BUG修复过程1. Authorization

python实现简易SSL的项目实践

《python实现简易SSL的项目实践》本文主要介绍了python实现简易SSL的项目实践,包括CA.py、server.py和client.py三个模块,文中通过示例代码介绍的非常详细,对大家的学习... 目录运行环境运行前准备程序实现与流程说明运行截图代码CA.pyclient.pyserver.py参

使用PyQt实现简易文本编辑器

《使用PyQt实现简易文本编辑器》这篇文章主要为大家详细介绍了如何使用PyQt5框架构建一个简单的文本编辑器,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录分析主窗口类 (MyWindow)菜单操作语法高亮 (SyntaxHighlighter)运行程序主要组件代码图示分析实现

5分钟获取deepseek api并搭建简易问答应用

《5分钟获取deepseekapi并搭建简易问答应用》本文主要介绍了5分钟获取deepseekapi并搭建简易问答应用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需... 目录1、获取api2、获取base_url和chat_model3、配置模型参数方法一:终端中临时将加

用Java打造简易计算器的实现步骤

《用Java打造简易计算器的实现步骤》:本文主要介绍如何设计和实现一个简单的Java命令行计算器程序,该程序能够执行基本的数学运算(加、减、乘、除),文中通过代码介绍的非常详细,需要的朋友可以参考... 目录目标:一、项目概述与功能规划二、代码实现步骤三、测试与优化四、总结与收获总结目标:简单计算器,设计

如何用Python绘制简易动态圣诞树

《如何用Python绘制简易动态圣诞树》这篇文章主要给大家介绍了关于如何用Python绘制简易动态圣诞树,文中讲解了如何通过编写代码来实现特定的效果,包括代码的编写技巧和效果的展示,需要的朋友可以参考... 目录代码:效果:总结 代码:import randomimport timefrom math

通过C#和RTSPClient实现简易音视频解码功能

《通过C#和RTSPClient实现简易音视频解码功能》在多媒体应用中,实时传输协议(RTSP)用于流媒体服务,特别是音视频监控系统,通过C#和RTSPClient库,可以轻松实现简易的音视... 目录前言正文关键特性解决方案实现步骤示例代码总结最后前言在多媒体应用中,实时传输协议(RTSP)用于流媒体服

海龟绘图简易教程|Turtle for Python

turtle 是 python 内置的一个比较有趣味的模块,俗称 海龟绘图,它是基于 tkinter 模块打造,提供一些简单的绘图工具,海龟作图最初源自 20 世纪 60 年代的 Logo 编程语言,之后一些很酷的 Python 程序员构建了 turtle 库,让其他程序员只需要 import turtle,就可以在 Python 中使用海龟作图。 原文链接|海龟绘图简易教程 1. 基本

使用jetty和mongodb做个简易文件系统

使用jetty和mongodb做个简易文件系统 - ciaos 时间 2014-03-09 21:21:00   博客园-所有随笔区 原文   http://www.cnblogs.com/ciaos/p/3590662.html 主题  MongoDB  Jetty  文件系统 依赖库: 1,jetty(提供http方式接口) 2,mongodb的java驱动(访问mo

HarmonyOS】ArkTS学习之基于TextTimer的简易计时器的elapsedTime最小时间单位问题

本文旨在纪录自己对TextTimer使用过程的疑惑问题 我在查看教程时候,发现很多博客在onTimer(event: (utc: number, elapsedTime: number) => void) 这里提到elapsedTime:计时器经过的时间,单位为毫秒。我不清楚是否为版本问题。 在我查看version11和version10的api时候,说的都是设置格式的最小单位。 经过个人检验的