首页 > 试题广场 >

四则运算

[编程题]四则运算
  • 热度指数:122270 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
输入一个表达式(用字符串表示),求这个表达式的值。
保证字符串中的有效字符包括[‘0’-‘9’],‘+’,‘-’, ‘*’,‘/’ ,‘(’, ‘)’,‘[’, ‘]’,‘{’ ,‘}’。且表达式一定合法。

数据范围:表达式计算结果和过程中满足 ,字符串长度满足


输入描述:

输入一个算术表达式



输出描述:

得到计算结果

示例1

输入

3+2*{1+2*[-4/(8-6)+7]}

输出

25
const readline = require('readline');

const rl = readline.createInterface({
    input: process.stdin,
    output: process.stdout
});
rl.on('line', function (line) {
    const tokens = line.replace('{', '(').replace('}', ')').replace('[','(').replace(']',')');
    console.log(eval(tokens));
});

发表于 2021-11-25 18:29:50 回复(0)
const readline = require("readline");
const rl = readline.createInterface({
    input: process.stdin,
    output: process.stdout
})
rl.on('line',(line)=>{
    console.log(eval(line.replace('{','(').replace('}',')')))
})

发表于 2021-09-04 15:04:14 回复(0)
const readLine = require('readline')
const rl = readLine.createInterface({
  input: process.stdin,
  output: process.stdout
})
function prt(params) {
  console.log(params)
}
rl.on('line', (line) => {
  prt(eval(line))
})

发表于 2021-08-19 12:54:33 回复(0)
line=line.replace(new RegExp('{','g'),"(").
    replace(new RegExp('}','g'),")").
    replace(/\[/g,"(").
    replace(/\]/g,")")
    console.log(eval(line))

发表于 2021-08-05 23:58:18 回复(0)
let str
while(str = readline()) {
    console.log(eval(str));
}
发表于 2021-07-04 11:22:31 回复(0)
解法:eval()方法
var str = readline();
console.log(eval(str))
编辑于 2021-02-28 11:58:38 回复(0)
const line = readline()
const result = line.replace('{', '(').replace('}',')')
console.log(eval(result))

发表于 2020-10-19 15:46:49 回复(0)
javascript 不用 eval() 解法,正则表达式绕了我好久,欢迎改进。

while(line=readline()){
    var str = line.trim();
    var str = str.replace(/[\{\[]/g,"(").replace(/[\}\]]/g,")");

    console.log(cal(str));
}
function cal(str){
    var reg = /\(([^\(\)]+)\)/g;        
    while(reg.test(str)){
        str = str.replace(reg,function($1,$2){
            return cal2($2);
        })
    }
    return cal2(str); 
}
function cal2(str){
    var arr = [];
    var sub = "";
    for(var i = 0; i < str.length; i++){
        if(/[\+\*\/-]/.test(str[i]) && !(/[\+\*\/-]/.test(str[i-1]))){
            arr.push(sub);
            sub = "";
            arr.push(str[i]);
        }else{
            sub += str[i];
        }
    }
    arr.push(sub);
    var temp = [];
    var result = [];
    for(var i = 0; i < arr.length; i++){
        if(/[\*\/]/.test(arr[i])){
            var num1 = Number(temp.pop());
            var num2 = Number(arr[i+1]);
            if(arr[i] == "*"){
                temp.push(num1*num2);
            }else{
                temp.push(num1/num2);
            }
            i++;
        }else{
            temp.push(arr[i]);
        }
    }
    for(var i = 0; i < temp.length; i++){
        if(/[\+-]/.test(temp[i])){
            var num1 = Number(result.pop());
            var num2 = Number(temp[i+1]);
            if(temp[i] == "+"){
                result.push(num1+num2);
            }else{
                result.push(num1-num2);
            }
            i++;
        }else{
            result.push(temp[i]);
        }
    }
    return result[0];
}
发表于 2018-08-06 20:50:22 回复(1)

问题信息

难度:
8条回答 46012浏览

热门推荐

通过挑战的用户

查看代码