简单计算器的设计与实现

时间:2012-06-18 14:50:05
【文件属性】:

文件名称:简单计算器的设计与实现

文件大小:164KB

文件格式:RAR

更新时间:2012-06-18 14:50:05

计算器

简单计算器的设计与实现 2.4 代码部分 #include #include #define TRUE 1 #define FALSE 0 #define MAXNUM 100 typedef int DataType; struct SeqStack { DataType s[MAXNUM]; int t; }; typedef struct SeqStack *PSeqStack; PSeqStack createEmptyStack_seq() { PSeqStack pastack; pastack=(PSeqStack)malloc(sizeof(struct SeqStack)); if (pastack==NULL) { printf("超出空间!!\n"); } else { pastack->t=-1; } return pastack; } int isEmptyStack_seq(PSeqStack pastack) { return pastack->t==-1; } void push_seq(PSeqStack pastack, DataType x) { if (pastack->t >= MAXNUM - 1) printf("溢出!\n"); else { pastack->t = pastack->t+1; pastack->s[pastack->t]=x; } } void pop_seq(PSeqStack pastack) { if (pastack->t==-1) { printf("未溢出!\n"); } else { pastack->t = pastack->t-1; } } DataType top_seq(PSeqStack pastack) { return pastack->s[pastack->t]; } int infixtoSuffix(const char* infix, char* suffix) { /*将中缀表达式转换为后缀表达式,顺利转换返回true,若转换过程中发现中缀表达式非法则返回false*/ int state_int = FALSE; /*state_int记录状态,等于true表示刚读入的是数字字符,等于false表示刚读入的不是数字字符, 设置这个变量是为了在每输出一个整数后输出一个空格,以免连续输出的两个整数混在一起。*/ char c, c2; PSeqStack ps = createEmptyStack_seq(); /*运算符栈*/ int i, j = 0; if(infix[0]=='\0') { return FALSE; /*不允许出现空表达式*/ } for(i=0; infix[i]!='\0';i++) { c=infix[i]; switch(c) { case ' ': case '\t': case '\n': if(state_int== TRUE) { suffix[j++]=' ';/*状态从true转换为false时输出一个空格*/ } state_int= FALSE; break; /*遇到空格或制表符忽略*/ case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': state_int =TRUE; suffix[j++]=c; /*遇到数字输出*/


【文件预览】:
简单算器的设计与实现
----新建 文本文档.opt(48KB)
----新建 文本文档.dsp(3KB)
----Debug()
--------新建 文本文档.exe(184KB)
--------vc60.pdb(52KB)
--------vc60.idb(33KB)
--------新建 文本文档.pdb(457KB)
--------新建 文本文档.ilk(184KB)
--------新建 文本文档.obj(15KB)
----新建 文本文档.plg(1KB)
----新建 文本文档.txt(6KB)
----新建 文本文档.dsw(534B)
----新建 文本文档.ncb(41KB)

网友评论

  • 挺不错的,值得借鉴
  • 还不错;不过这是汇编实验的,不是单片机实验的。我要的是proteus实验的。
  • 还不错、。老师也没说什么,就是运行的时候有点问题