-->
当前位置:首页 > 题库

函数题:后缀式求值

Luz3年前 (2022-11-12)题库335
要求实现函数,借助如下自定义栈SqStack计算后缀表达式的值并返回。简单起见,后缀式的每个运算数都仅为一位数且只包含+ - * /运算符。后缀式以字符串表示,仅可能包含数字字符和+ - * /。

typedef double ElemType; // 为double取别名ElemType
struct SqStack{
ElemType *base; // 顺序栈的首地址,动态数组的首地址
int top; // 栈顶指针,栈非空时,为栈顶元素的下标(从0开始)
void Init( ); // 初始化栈
void Clear(); // 清空栈
ElemType GetTop(); // 取栈顶元素
void Push(ElemType e); // 入栈
void Pop(); // 出栈
bool Empty(); // 判断空栈
};

可供调用的两个辅助函数定义已提供,其函数原型如下:

// 判断字符c是否为操作数
bool IsNum(char c);

// 计算a op b,即a、b为运算数,op为运算符
double Calculate(double a, double b, char op);



### 函数接口定义:
c++
double Postfix_exp(string A);

其中参数 A是一个表示后缀式的字符串。

### 裁判测试程序样例:
c++
#include<iostream>
#include<string>
using namespace std;

bool IsNum(char c); // 判断字符是否为操作数
double Calculate(double a, double b, char op); // 计算c=a op b;
double Postfix_exp(string A); // 后缀式计算

// 调用后缀式计算函数,输出计算结果(保留2位小数)
int main() {
string s;
while(cin>>s){
printf("%.2lf\n",Postfix_exp(s));
}
return 0;
}


### 输入样例:

in
123*+68/-
931-3*+82/+


### 输出样例:

out
6.25
19.00







答案:若无答案欢迎评论