试采用逻辑算式的后缀(逆波兰)表示法来实现对下列算式的计算并输出计算结果:
题目
试采用逻辑算式的后缀(逆波兰)表示法来实现对下列算式的计算并输出计算结果:
8+6×(24-3÷(5+6×2)-6)-12
要求:
1.从键盘输入公式
2.打印转换后的该算式的后缀表达式并计算
结果.
由0和1构成的n维方阵M表示一个迷宫,其中0表示通路,1表示墙壁.迷宫入口为(1,1),出口为(n,n).迷宫随机产生.试编一算法求出从入口点到出口点可沿八个方向前进进行自动寻路的递归程序,并显示所找到的路径.
入口
0 1 1 0 1
1 0 0 1 0
1 1 1 0 0
1 0 1 0 1
1 0 0 1 0出口
答案
改进版:
#include
#include
#include
#include
#define ERROR 0
#define OVERFLOW -2
#define OK 1
typedef int status;
typedef char SElemType;
//////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////
#define STACK_INIT_SIZE 100
#define STACKINCRMENT 10
typedef struct{
SElemType *base;
SElemType *top;
int stacksize;
}SqStack;
status initstack(SqStack *S)
{//构造一个空栈.
(*S).base=(SElemType * )malloc(STACK_INIT_SIZE * sizeof(SElemType));
if(!(*S).base)return(ERROR);
(*S).top=(*S).base;
(*S).stacksize=STACK_INIT_SIZE;
return(OK);
}
status push(SqStack *S,SElemType e)
{// 操作数和运算符依此进栈.
if((*S).top - (*S).base >=(*S).stacksize)
{
(*S).base =(SElemType * )realloc((*S).base,((*S).stacksize + STACKINCRMENT) *
sizeof(SElemType));
if(!(*S).base )exit(OVERFLOW);
(*S).top =(*S).base + (*S) .stacksize ;
(*S).stacksize +=STACKINCRMENT;
}
*(*S).top++=e;
return(e);
}
status pop(SqStack *S,SElemType *e)
{//出栈.
if((*S).top == (*S).base )return(ERROR);
*e=*--(*S).top ;
return (e);
}
SElemType GetTop(SqStack S)
{//取栈顶元素.
SElemType e;
if(S.base == S.top )return(OVERFLOW);
e=*(S.top-1);
return(e);
}
////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////
char Precede(char c1, char c2)
{
//符号优先级别的判断
switch(c1)
{
case '+':
case '-':
if(c2 == '*' || c2 == '/' || c2 == '(') return('');
break;
case'*':
case'/':
if(c2 == '(') return(''); break;
case'(':
if(c2 == ')')return('=');
else return('');break;
case'#':
if(c2 == '#')return('=');
else return('':
{
pop(&OPTR, &theta);
pop(&OPND, &b);
pop(&OPND, &a);
push(&OPND,Operate(a,theta,b));
break;
}
}
}
return GetTop(OPND);
}
/////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////
void main()
{
int i;
printf("'#'为结束符!");
printf("please input a suanshi:");
i=EvaluateExpression()-'0';
printf("the result is%d\n",i);
}
举一反三
已知函数f(x)=x,g(x)=alnx,a∈R.若曲线y=f(x)与曲线y=g(x)相交,且在交点处有相同的切线,求a的值和该切线方程.
我想写一篇关于奥巴马的演讲的文章,写哪一篇好呢?为什么好
最新试题
- 两辆车同时从甲,乙两地相向而行,一辆汽车的速度是60千米每时,一辆卡车的速度是48千米每时,两车相遇时
- 到达大气上界太阳辐射量的变化规律是从__向__递减?
- 某班一共有46名学生到公园划船.一条大船座6人,一条小船坐4人,要每天穿坐满,他们做了8条船,大小船各租
- 关于春节的英语作文(不超出5句话,要有中文意思)
- 用什么规律计算下面的题目:72 ÷12 三步解决
- 无色透明的强碱性溶液中,可能大量存在的离子组成是.
- 真情作文500字
- 《答谢中书书》和《记承天寺夜游》分别用的是什么表达方法?
- 人教版 17页第12题
- 极昼现象的疑惑
热门考点
- 那怎么才能画出一个圆的中心线呢?
- 一个正方体其中一个面的面积是36平方厘米,这个正方体的棱长之和是多少?
- 如何解释“文不加点”?
- 1.请问:出现“落红”两个字的诗句?分别表示什么?
- exsel中的criteria是什么意思
- 莎翁说:一夜可以造就一个暴发户,三代才能培养一个贵族 英语原句是什么
- 行列式按行(列)展开的问题
- true love is an accepttance of that of it, has been,will be,and will not be这句话什么意思?
- 暗渡陈仓三六计,明镜高悬四海清
- 已知(a-b)²=4,ab=二分之一,则(a+b)²=,只过程无原因无视,