2021.01.29小型计算器

本文解析了一种小型计算器的设计实现,重点在于处理不同进制数值运算、转换和显示,以及如何利用长整型和进制记录变量简化操作。适合初学者理解进制计算器原理及编程应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

2021.01.29小型计算器

题目描述

模拟程序型计算器,依次输入指令,可能包含的指令有:

  1. 数字:‘NUM X’,X为一个只包含大写字母和数字的字符串,表示一个当前进制的数
  2. 运算指令:‘ADD’,‘SUB’,‘MUL’,‘DIV’,‘MOD’,分别表示加减乘,除法取商,除法取余
  3. 进制转换指令:‘CHANGE K’,将当前进制转换为K进制(2≤K≤36)
  4. 输出指令:‘EQUAL’,以当前进制输出结果
  5. 重置指令:‘CLEAR’,清除当前数字

指令按照以下规则给出:

  1. 数字,运算指令不会连续给出,进制转换指令,输出指令,重置指令有可能连续给出
  2. 运算指令后出现的第一个数字,表示参与运算的数字。且在该运算指令和该数字中间不会出现运算指令和输出指令
  3. 重置指令后出现的第一个数字,表示基础值。且在重置指令和第一个数字中间不会出现运算指令和输出指令
  4. 进制转换指令可能出现在任何地方

样例输入

7
CLEAR
NUM 1024
CHANGE 2
ADD
NUM 100000
CHANGE 8
EQUAL

样例输出

2040

数据规模和约定

运算过程中中间变量均为非负整数,且小于2^63。
以大写的’A’'Z’表示1035

思路

  1. 由于小于2^63,所以采用long型。
  2. 观察题目中:NUM出现只有两种情况:①和运算命令一同出现 ②和CLEAR命令一同出现。而CLEAR命令可以看成是0加上给定的数字,所以可以将NUM命令和运算命令绑定,即先通过运算命令明确运算规则,再通过NUM命令得到需要运算的数字。
  3. 由于题目中要进行进制转换,而非十进制的运算过于麻烦,所以可以用一个十进制变量和一个记录进制的整型变量记录计算器中的数字状态,输出时只需要调用java中的进制转换API即可。

代码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值