满意答案

LADYgemen

2019.07.02

采纳率:58%    等级:9

已帮助:568人

#include "stdafx.h"

#define STACK_INIT_SIZE 10

#define STACKINCRESIZE 5

typedef struct

{

SElemType *base;

SElemType *top;

int stack_size;

}SqStack;

Status InitStack(SqStack &S)

{

S.base=(ElemType*)malloc(STACK_INIT_SIZE*sizeof(ElemType));

if(!S.base)exit(OVERFLOW);

S.top=S.base;

S.stack_size=STACK_INIT_SIZE;

return OK;

}

Status Push(SqStack &S,SElemType e)

{

if((S.top-S.base)>=STACK_INIT_SIZE){

S.base=(ElemType*)realloc(S.base,(S.stack_size+STACKINCRESIZE)*(sizeof(SqStack)));

if(!S.base)exit(OVERFLOW);

S.top=S.base+S.stack_size;

S.stack_size+=STACK_INIT_SIZE;

}

*(S.top)++=e;

return OK;

}

Status Pop(SqStack &S,SElemType &e)

{

if(S.top==S.base)return ERROR;

e=*--S.top;

return OK;

}

Status StackEmpty(SqStack &S)

{

if(S.top==S.base)

return TRUE;

else return FALSE;

}

int GetTop(SqStack S,ElemType &e)

{

if(S.top >S.base )

{

e=*(S.top-1) ;

return OK;

}

else return ERROR;

}

/*#include "stdafx.h"

#include "MyStack.h"

int InitStack(SqStack &S)

{

S.base =(ElemType *)malloc(STACKSIZE*sizeof(ElemType));

S.top =S.base ;

S.stacksize =STACKSIZE;

return OK;

}

int GetTop(SqStack S,ElemType &e)

{

if(S.top >S.base )

{

e=*(S.top-1) ;

return OK;

}

else return ERROR;

}

int Push(SqStack &S,Elemtype e)

{

if(S.top -S.base >=S.stacksize )

{

S.base=(ElemType *)realloc(S.base ,(S.stacksize +ADDSIZE)sizeof(ElemType));

S.top =S.stacksize +S.base ;

S.stacksize =S.stacksize +ADDSIZE;

}

*(S.top)++=e;

return OK;

}

int Pop(SqStack &S,ElemType &e)

{

if(S.base !=S.top )

{

e=*(--S.top );

return OK;

}

else return ERROR;

}*/

#include "stdafx.h"

#include "stdafx.h"

#include "MyStack.h"

//#include "MyStack.cpp"

ElemType Precede(ElemType t1,ElemType t2)

{

ElemType f='0';

switch(t2)

{

case '+':

case '-':

if(t1=='('||t1=='=')

f='

else f='>';

break;

case '*':

case '/':

if(t1=='*'||t1=='/'||t1==')')

f='>';

else f='

break;

case '(':

if(t1==')')

{

cout<

exit(ERROR);

}

else f='

break;

case ')':switch(t1)

{

case '(':f='=';

break;

case '=':printf("ERROR2\n");

exit(ERROR);

default: f='>';

}

break;

case'=':switch(t1)

{

case '=':f='=';

break;

case '(':cout<

default:f='>';

}

break;

}

return f;

}

int In(ElemType e)

{

switch(e)

{

case'+':

case'-':

case'*':

case'/':

case'(':

case')':

case'=':return TRUE;

default:return FALSE;

}

}

ElemType Operate(ElemType a,ElemType theta,ElemType b)

{

ElemType re=0;

switch(theta)

{

case'+':re=a+b;

break;

case'-':re=a-b;

break;

case'*':re=a*b;

break;

case'/':re=a/b;

break;

}

return re;

}

ElemType EvaluateExpression()

{

ElemType x,a,b,theta,d;

char c;

char z[6];

SqStack OPTR,OPND;

InitStack(OPTR);Push(OPTR,'=');

InitStack(OPND);

c=getchar();

GetTop(OPTR,x);

while(c!='='||x!='=')

{

if(In(c)) // 是7种运算符之一

switch(Precede(x,c))

{

case'

c=getchar();

break;

case'=':Pop(OPTR,x); // 脱括号并接收下一字符

c=getchar();

break;

case'>':Pop(OPTR,theta); // 退栈并将运算结果入栈

Pop(OPND,b);

Pop(OPND,a);

Push(OPND,Operate(a,theta,b));

break;

}

else if(c>='0'&&c<='9') // c是操作数

{

int i=0;

do

{

z[i]=c;

i++;

c=getchar();

}while(c>='0'&&c<='9');

z[i]=0;

d=atoi(z);

Push(OPND,d);

}

else // c是非法字符

{

printf("ERROR4\n");

exit(ERROR);

}

GetTop(OPTR,x);

}

GetTop(OPND,x);

return x;

}

// Calculator.cpp : 定义控制台应用程序的入口点。

//

#include "stdafx.h"

#include "Calculator.h"

int _tmain(int argc, _TCHAR* argv[])

{

printf("请输入算术表达式,负数要用(0-正数)表示,并以=结束\n");

printf("%d\n",EvaluateExpression());

getchar();

system("pause");

return 0;

}

00分享举报

c语言编程计算器开平方,用c语言实现科学计算器要求有计算器界面 可以加减乘除平方开方...相关推荐

  1. 高斯消元法的c语言编程,列主元高斯消元法的C语言编程

    列主元高斯消元法的C语言编程 列主元高斯消元法 基本思想:用高斯消元法求解线性方程组时,为避免小的主元,在进行第k步消元前,应该在第k列(k)元素aik(i k,(k)(k)例如|aikk| max| ...

  2. c语言程序设计自学跟谁好,双辽c语言编程学习,双辽学c语言编程哪个好,双辽学c语言编程自学好还是报班好...

    双辽c语言编程学习,双辽学c语言编程哪个好,双辽学c语言编程自学好还是报班好 首页 > 软件 > 双辽c语言编程学习 作者:镀金池   发布时间:2017-12-07 05:48 一个C语 ...

  3. c语言程序设计需要学多久,九江c语言编程学习,九江学c语言编程报班,九江学c语言编程一般要多久才能学会...

    九江c语言编程学习,九江学c语言编程报班,九江学c语言编程一般要多久才能学会 首页 > C语言 > 九江c语言编程学习 作者:镀金池   发布时间:2017-10-18 14:11 据ID ...

  4. c语言编程期刊论文管理系统,C语言编程下计算机软件论文

    1计算机软件C语言的编程实验 1.1计算机软件C语言的编程技巧 计算机软件C语言的编程中,最主要的依据是指针应用,C语言指针能够根据软件程序的编写需求,构建可行的函数,而程序员在设计函数编程的过程中, ...

  5. c语言编程学多久,丰城c语言编程学习,丰城学c语言编程的学校,丰城学c语言编程一般要多久才能学会...

    丰城c语言编程学习,丰城学c语言编程的学校,丰城学c语言编程一般要多久才能学会 首页 > 软件 > 丰城c语言编程学习 作者:镀金池   发布时间:2018-04-09 16:40 在之后 ...

  6. 江门C语言培训,江门c语言编程学习,江门学c语言编程培训,江门学c语言编程效果怎么样...

    江门c语言编程学习,江门学c语言编程培训,江门学c语言编程效果怎么样 首页 > C语言 > 江门c语言编程学习 作者:镀金池   发布时间:2017-10-18 09:25 在初期的C语言 ...

  7. C语言报名里面培训怎么填,庄河c语言编程学习,庄河学c语言编程培训,庄河学c语言编程报个培训班怎么样...

    庄河c语言编程学习,庄河学c语言编程培训,庄河学c语言编程报个培训班怎么样 首页 > 软件 > 庄河c语言编程学习 作者:镀金池   发布时间:2017-11-29 11:13 明天利用时 ...

  8. 罗定c语言,罗定学c语言编程,罗定学c语言编程培训,罗定学c语言编程一般怎么收费...

    罗定学c语言编程,罗定学c语言编程培训,罗定学c语言编程一般怎么收费 首页 > 软件 > 罗定学c语言编程 作者:镀金池   发布时间:2018-10-04 23:40 依照c语言的法则, ...

  9. 安庆师范大学c语言程序设计,安庆c语言编程学习,安庆学c语言编程培训,安庆学c语言编程一般能拿多少工资...

    安庆c语言编程学习,安庆学c语言编程培训,安庆学c语言编程一般能拿多少工资 首页 > C语言 > 安庆c语言编程学习 作者:镀金池   发布时间:2017-10-18 15:20 假定我们 ...

最新文章

  1. Android安全开发之安全使用HTTPS
  2. 【C++】运算符重载
  3. “陪护机器人”研报:距离真正“陪护”还差那么一点
  4. 史无前例! 中国学者一天发6篇Nature,在多领域取得重大进展
  5. Python编程思想是什么?
  6. iOS开发编译错误:std::terminate(), referenced from:
  7. calloc与malloc的区别
  8. android屏幕同步到macbook,Mirror for Android TV for Mac(屏幕和声音镜像到Android TV的工具)...
  9. Robocode 超级机器人 “波”统计瞄准算法
  10. edgewin10无法安装_win10内置Edge浏览器遇到“您未安装FLASH控件”如何解决
  11. MongoDB 网页可视化管理(adminMongo 的安装、配置)
  12. 两个tplink路由器有线桥接_TP-Link路由器的有线桥接图解
  13. 为什么if else过多会影响程序性能?(英文版)
  14. 2021年化工自动化控制仪表考试题库及化工自动化控制仪表作业考试题库
  15. 点进来,论美女,品丝网
  16. MOS管当开关控制时,一般用PMOS做上管NMOS做下管的原因
  17. python magic number_编程中的「魔数」(magic number)是什么意思?平时我们能接触到哪些魔数?...
  18. 基于STM32F407标准库串口DMA+空闲中断
  19. 【雷达通信】雷达探测项目仿真(Matlab代码实现)
  20. Java实战项目详细教程+文档+PPT+源码等]javaweb点餐系统全套|餐饮就餐订餐餐厅

热门文章

  1. logrotate 的使用
  2. 计算机PPT教材教法,新高中英语教材教法解析.ppt
  3. centos vi 设置显示行号
  4. android icon aapt,Android 开发之 aapt 工具
  5. 「Java分享客栈」随时用随时翻:微服务链路追踪之zipkin搭建
  6. Docker搭建zipkin服务
  7. mysql批量设置自增_mysql自增id怎么批量插入数据
  8. IDEA中将maven项目导出打包成war包
  9. 常见安全扫描软件web漏洞安全漏洞防护方案
  10. 智能健身镜:FITURE乘势而起、百度迎风而上