用栈的知识和算符优先法对算术表达式求值一、实验目的:熟练掌握栈的基本操作,进一步理解栈的应用.二、实验内容:设计一个程序,用算符优先法对算术表达式求值.三、基本要求:以字符

来源:学生作业帮助网 编辑:作业帮 时间:2024/11/02 16:40:17

用栈的知识和算符优先法对算术表达式求值一、实验目的:熟练掌握栈的基本操作,进一步理解栈的应用.二、实验内容:设计一个程序,用算符优先法对算术表达式求值.三、基本要求:以字符
用栈的知识和算符优先法对算术表达式求值
一、实验目的:
熟练掌握栈的基本操作,进一步理解栈的应用.
二、实验内容:
设计一个程序,用算符优先法对算术表达式求值.
三、基本要求:
以字符序列的形式从终端输入语法正确的、不含变量的算术表达式,利用算符优先关系,实现对算术四则混合运算表达式求值
五、测试数据:
8.25;
1+2.5+3+4;
8.7-1*5.2;
1024/4*8;
1024/(4*8);
(17.7+2.3)*(6/2);
3-3-3;
8/(9-9);
虽然很想自己搞出来,但是自己的能力实在是很有限,那位大侠给个参考.

用栈的知识和算符优先法对算术表达式求值一、实验目的:熟练掌握栈的基本操作,进一步理解栈的应用.二、实验内容:设计一个程序,用算符优先法对算术表达式求值.三、基本要求:以字符
正好我做了一个相关的东西,和你说的不太一样,具体你自己看吧!你参考下吧 写的不是很好 输入时数字只能是0-9,算式末尾以#结束,因为用的是字符,所以说功能有限,
#include
#include
#define NULL 0
typedef struct node{
char date;
struct node *next;
}SNode;
SNode *InitStack(){
SNode *top;
top=(SNode *)malloc(sizeof(SNode));
top->next=NULL;
return top;
}
void PushOptr(SNode *top,char x){
SNode *p;
p=(SNode *)malloc(sizeof(SNode));
p->date=x;
p->next=top->next;
top->next=p;
}
char PopOptr(SNode *top){
SNode *p;
char x;
if(top==NULL)
return NULL;
p=top->next;
x=p->date;
top->next=p->next;
free(p);
return x;
}
void PushOpnd(SNode *top,char x){
SNode *p;
p=(SNode *)malloc(sizeof(SNode));
p->date=x;
p->next=top->next;
top->next=p;
}
char PopOpnd(SNode *top){
SNode *p;
char x;
if(top==NULL)
return NULL;
p=top->next;
x=p->date;
top->next=p->next;
free(p);
return x;
}
char GetTop(SNode *top){
return (top->next)->date;
}
int In(char c){
int n;
switch(c){
case '+':
case '-':
case '*':
case '/':
case '(':
case ')':
case '#':n=1;break;
default:n=0;break;
}
return n;
}
char Precede(char x,char y){
int i,j;
int form[7][7]={{1,1,-1,-1,-1,1,1},{1,1,-1,-1,-1,1,1},{1,1,1,1,-1,1,1},{1,1,1,1,-1,1,1},{-1,-1,-1,-1,-1,0,2},{1,1,1,1,2,1,1},{-1,-1,-1,-1,-1,2,0}};
switch(x){
case '+':i=0;break;
case '-':i=1;break;
case '*':i=2;break;
case '/':i=3;break;
case '(':i=4;break;
case ')':i=5;break;
case '#':i=6;break;
}
switch(y){
case '+':j=0;break;
case '-':j=1;break;
case '*':j=2;break;
case '/':j=3;break;
case '(':j=4;break;
case ')':j=5;break;
case '#':j=6;break;
}
if(form[i][j]==1)
return '>';
else
if(form[i][j]==-1)
return '':b=PopOptr(top[0]);
a=PopOpnd(top[1]);
z=PopOpnd(top[1]);
result=Operate(z,b,a);
f=result+'0';
PushOpnd(top[1],f);
break;
}
}
}
return f;
}
void main(){
char result;
result=Eval_Exp();
printf("%d\n",result-'0');
}

用栈的知识和算符优先法对算术表达式求值一、实验目的:熟练掌握栈的基本操作,进一步理解栈的应用.二、实验内容:设计一个程序,用算符优先法对算术表达式求值.三、基本要求:以字符 算术表达式求值 【问题描述】 表达式计算是实现程序设计语言的基本问题之一,也是栈的应用的一个典型例子.设计一个程序,演示符优先法对算术表达式求值的过程【基本要求】以字符序列 用C语言数据结构算法编写程序!算术表达式求值:以字符序列的形式从终端输入语法正确的、不含变量的整数表达式,利用给定的算符优先关系,实现对算术四则混合运算表达式的求值,并演示 按照四则运算优先关系的惯例,画出下列算术表达式求值时操作数栈和运算符栈的变化过程:3+5*7-4 按照运算符优先法,算术表达式9-2*4+(8+1)/3在求值时,画出操作数栈和运算符栈的变化过程!谢 数据结构 用C语言描述按照四则运算加、减、乘、除和幂运算(↑)优先关系的惯例,画出对下列算术表达式求值时操作数栈和运算符栈的变化过程:A-B*C/D+E↑F 我用C语言写一个关于算术表达式求值的程序.(用数据结构中的栈知识) 算术表达式求值 高手,求助!问题描述:设计一个程序,演示用栈实现算术表达式求值的过程 基本要求: (1)以字符形式输入语法正确,不含变量的常规实数表达式; (2)判断表达式是否合法 c#算术表达式 求值 求一程序:用C语言编写,要求如下:实验内容:(1) 判断一个算术表达式中开括号和闭括号是否配对.(2) 假设算术表达式仅由加减乘除运算符组成,编写一个函数对用后缀表达式表示的算 算术表达式求值 C语言算术表达式求值(1)用户可通过键盘输入四则运算的表达式(2)判断表达式是否正确(3)对正确的表达式,计算该表达式的值 求《数据结构》课程设计(题目:算术表达式求值)系统应具备的功能:(1)设计算术表达式的存储结构(2)实现前缀表达式、中缀表达式和后缀表达式的求值 (3)输出求值结果希望 算术表达式求值算法?用C语言版 编写一个表达式求值演算的 算法程序 要求:使用栈,需要将算法的过程显示出来 ,输入一连串算术值 如:2*(3+2)# 然后 显示出算术过程 和结果!先将输入的 C表达式类型(赋值表达式,算术表达式,关系表达式,逻辑表达式,条件表达式,逗号表达式)和求值规则. 算术表达式求值设计一个程序,利用栈实现算术表达式的求值要求:(1)以字符串形式输入语法正确算术表达式,参与运算的操作数为整数,运算符只包括+,-,*,/,可包含小括号();(2)计算算术 算术表达式能实现前缀后缀和中缀的表达是求值设计表达式的存储结构能求出结果 利用栈实现算术表达式的求值,表达式中可以包含加、减、乘、除、乘方、括号运算符,参加运算的操作数可以是实数.Input 输入一个算术表达式,以‘#’结尾,Output 输出算术表达式的结果(保留 C++的表达式求值用栈实现表达式求值,请问,出栈的是些什么数据?