该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

以下是程序,可能比较长,主要的问题是比如计算表达式6+3*(9-5)/2-8可得结果是4,但是如果输入3*4,则得到结果'

#include

using namespace std;

#include

#define OK 1

#define ERROR 0

#define OVERFLOW -2

#define MAXSIZE 100

typedef int Status;

typedef struct

{

char *base;

char *top;

int stacksize;

}SqStack;

Status InitStack(SqStack &S)

{

S.base=new char[100];

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

else S.top=S.base;

S.stacksize=MAXSIZE;

return OK;

}

Status Push(SqStack &S,char e)

{

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

else *S.top++=e;

return OK;

}

char GetTop(SqStack S)

{

if(S.top!=S.base)

return *(S.top-1);

else exit(ERROR);

}

Status Pop(SqStack &S,char &e)

{

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

else {--S.top;e=*S.top;}

return OK;

}

Status In(char c)

{

if(c>='0'&&c<='9') return 0;

else if(c=='+'||c=='-'||c=='*'||c=='/'||c=='('||c==')'||c=='#') return 1;

else exit(ERROR);

}

int Precede(char a,char b)//a为栈顶元素,b为读到的元素//令a等于b为7,a大于b为8,a小于b为9

{

if(b=='+')

{

if(a=='('||a=='#') return(9);

else return(8);

}

if(b=='-')

{

if(a=='('||a=='#') return(9);

else return(8);

}

if(b=='*')

{

if(a=='*'||a=='/'||a==')') return(8);

else return(9);

}

if(b=='/')

{

if(a=='*'||a=='/'||a==')') return(8);

else return(9);

}

if(b=='(') return(9);

if(b==')')

{

if(a=='(') return(7);

return(8);

}

if(b=='#')

{

if(a=='#') return(7);

else return(8);

}

}

int Operate(int a,char theta,int b)

{

if(theta=='+') return (a+b-'0');

else if(theta=='-') return (a-b+'0');

else if(theta=='*') return ((a-'0')*(b-'0')+'0');

else if(theta=='/') return ((a-'0')/(b-'0')+'0');

}

char EvaluateExpression(char s[])

{

char x,theta,ch;

char a,b,r;

int i;

SqStack OPTR,OPND;

InitStack(OPTR);

InitStack(OPND);

Push(OPTR,'#');

for(i=0;i

{

ch=s[i];

if(!(r=In(ch))){Push(OPND,ch);}

else

{

switch(Precede(GetTop(OPTR),ch))

{

case 9://a小于b为9

Push(OPTR,ch);

break;

case 8://a大于b为8//应该是从此处开始无法将字符输入到OPTR中

Pop(OPTR,theta);

Pop(OPND,b);

Pop(OPND,a);

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

i=i-1;

break;

case 7://a等于b为7

Pop(OPTR,x);

break;

}

}

}

return GetTop(OPND);

}

int main()

{

cout<

cout<

char e[100];

gets(e);

char result;

result=EvaluateExpression(e);

cout<

cout<

cout<

return 0;

}

c语言ascii码表数字,求教!我想显示数字但是现在显示的却是数字在ASCII码中对应的符...相关推荐

  1. c语言中数字字符的ascii码,求教!我想显示数字但是现在显示的却是数字在ASCII码中对应的符...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 以下是程序,可能比较长,主要的问题是比如计算表达式6+3*(9-5)/2-8可得结果是4,但是如果输入3*4,则得到结果' #include using ...

  2. c语言ascii码表_新手小白整理C语言笔记备忘,带你十分钟理解C语言

    一.C语言数据类型 1.基本类型:整型.浮点型(单精度.双精度).字符型和枚举类型: 2.构造类型:数组类型.结构体类型和共用体类型: 3.指针类型: 4.空类型.二.数值数据的表示 1.整数:十进制 ...

  3. C语言零基础入门级数据类型+运算符+控制流+ASCII 码表+面试题【系统学习第二天】

    C语言零基础入门级数据类型+运算符+控制流 第一项 C语言->数据类型全讲解上 [1]整型int [2]整型修饰符short.long.unsigned [3]符号位 [4]格式控制符%d+%h ...

  4. C语言利用ASCII码表统计字符串每个字符出现的次数

    今天在图书馆老胡突然给我出题 在C语言里面写个能够统计并打印字符串中字符出现次数 心想这不是常规操作吗? "定义两个char数组,输入,赋值给另一个字符数组 通过一个for循环嵌套两个for ...

  5. c语言ascii码表从第128开始,输出完整的ASCII码(0~127+128~255)

    我以前在C语言书背后看见的ASCII码表有0-255个字符,但是我想输出128-255的字符就乱码,一直没解决,今天有个新进的同事问这个问题,我去看了下,然后找度娘和论坛,找到了两种解决的方法,而且都 ...

  6. c语言ascii码表从第128开始,【C语言】[其他]:输出完整的ASCII码(0~127+128~255)

    我以前在C语言书背后看见的ASCII码表有0-255个字符,但是我想输出128-255的字符就乱码,一直没解决,今天有个新进的同事问这个问题,我去看了下,然后找度娘和论坛,找到了两种解决的方法,而且都 ...

  7. 大小写字母转换、数字与字符转换及ASCII码表

    ASCII码表: 1 大小写转换: 1.1 数据类型强制转换法: eg.大写→小写 char A = 'A'; char a = char(A + 32); cout << a; 输出结果 ...

  8. c语言基础 验证ascii 码表

    2019独角兽企业重金招聘Python工程师标准>>> #include <stdio.h> //验证 ascii 码  学习c 语言 ,理解 char 与int  之间 ...

  9. Java黑皮书课后题第5章:*5.15(显示ASCII码字符表)编写一个程序,打印ASCII字符表从‘!‘到‘~‘的字符。每行打印10个字符。ASCII码表如附录B所示。数字之间用一个空格字符隔开

    *5.15(显示ASCII码字符表)编写一个程序,打印ASCII字符表从'!'到'~'的字符.每行打印10个字符.ASCII码表如附录B所示.数字之间用一个空格字符隔开 题目 题目概述 '!'到'~' ...

最新文章

  1. 广东科技学院专插本c语言考卷_广东科技学院第二届红色文化节之红色影视经典配音大赛决赛...
  2. 面试问你Spring如何解决循环依赖的时候,不要一脸懵逼了!
  3. SCCM 2016 使用PXE 部署操作系统(四)
  4. 怎么同步github上的原项目和fork
  5. php 工商银行公众号支付代码_微信支付PHP SDK —— 公众号支付代码详解
  6. easyui复杂表单_EasyUI中实现form表单提交的示例分享
  7. 16福师计算机应用基础在线作业,16春季福师《计算机应用基础》在线作业二.doc...
  8. linux线程出错,在线程应用程序(linux,pthreads)中读取文件大小时出错
  9. 《Docker:容器与容器云》.pdf
  10. phpVirtualBox – 用浏览器操作虚拟机
  11. python第六十天-----RabbitMQ
  12. 如果我已经开始重新设置基准,如何将两个提交合并为一个?
  13. 基于CentOS7.3构建企业级Vsftpd文件服务器
  14. SSL之父称SSL不会因被攻击而失去生命力
  15. [xshell] xshell 及 xftp 官网无法下载解决
  16. k8s1.18-kubeadm安装手册
  17. 学大伟业:学习物理竞赛的学生如何快速掌握所需要的高数知识?
  18. uniapp加激励广告代码方法
  19. docker容器获取宿主ip地址
  20. 转换优化 onnx模型

热门文章

  1. Hadoop wordcount
  2. 超强包管理器:Anaconda 安装
  3. Python错误:TypeError: 'list' object is not callable
  4. CPU所含有的寄存器
  5. 最长重复子串(Rabin-Karp算法)
  6. 组会PPT20201030《复现chen结果及初始密度影响》
  7. python模块的分类有哪些_python之模块分类(六)
  8. 流式计算优化:时效性 [王方浩视角]
  9. javascript与C#的编码解码问题
  10. delphi 中的dll编程注意事项