文章目录
一、问题描述
【问题描述】
从标准输入中读入一个整数算术运算表达式,如5 - 1 * 2 * 3 + 12 / 2 / 2 = 。计算表达式结果,并输出。
要求:
1、表达式运算符只有+、-、*、/,表达式末尾的’=’字符表示表达式输入结束,表达式中可能会出现空格;
2、表达式中不含圆括号,不会出现错误的表达式;
3、出现除号/时,以整数相除进行运算,结果仍为整数,例如:5/3结果应为1。
【输入形式】
在控制台中输入一个以’=’结尾的整数算术运算表达式。
【输出形式】
向控制台输出计算结果(为整数)。
【样例1输入】
5 - 1 * 2 * 3 + 12 / 2 / 2 =
【样例1输出】
2
二、AC代码
有点长
#include <stdio.h>
# define maxsize 1000
typedef struct {
int flag;//如果取1表示这个元素是整数,如果取0表示这个元素是运算符
int num;
char c;
int level;
}opts;
// 初始化堆栈
void initStack(int Top){
Top=-1;
}
// 测试堆栈是否为空
int isEmpty(int *Top){
return *Top==0;
//这里取0是因为我一开始把一个无关符号‘#’给压进去了,作为优先级最低的运算符,所以符号栈的栈底一直是这个无效符号
}
// 测试堆栈是否已满
int isFull(int *Top){
return *Top==maxsize-1;
}
// 进栈
void push(opts s[],opts item,int *Top){
if(isFull(&Top)){
printf("the stack is full\n");
return ;
}
else{
s[++(*Top)]=item;
}
}
// 出栈
opts pop(opts s[],int *Top){
if(isEmpty(&Top

本文详细介绍了如何将一个包含加、减、乘、除运算的中缀表达式转换为后缀表达式,并通过算法计算其结果。文章提供了完整的C语言代码示例,展示了使用栈数据结构实现中缀到后缀转换的过程,以及后缀表达式的求值方法。
最低0.47元/天 解锁文章
1526





