三九宝宝网宝宝教育教学论文

任意输入一个逻辑表达式输出它的真值表要用c语言写的

01月06日 编辑 39baobao.com

[在c语言中:编程出输出九九乘法表的表达式]1 2 3 4 5 6 7 8 #include<stdio.h> voidmain(void) { inti,j; for(i=1;i<=9;i++) 1653for(j=1;j<=i;j++) printf("%1d*%1d=%-3d%c",j,i,j*i,j<i?';':'\n'); }...+阅读

/*本程序支持任意输入的逻辑表达式,可以进行与或非和蕴涵的运算,表达式中可带括号.bintree.h和stack.cpp为二叉树和栈的定义及实现*/ #include#include#define MAXNUM 100 //栈最大元素个数 #define MAXEXP 30 //允许用户输入的表达式最大字符数 #include "bintree.h" #include "stack.cpp" const char and = '&', or = '|', then = '-'; bool InOpt(char c) { return (c == '&' || c == '|' || c == '-' || c == '#'); } bool IsNum(char c) { return (c >= '0' & c= 'A' & cdata = *ch; st.Push(t); } else if (IsNum(*ch)) { while (IsNum(*ch)) { ch++; } ch--; PBinTreeNode t = CrtBinTree(); t->data = *ch; st.Push(t); } else { switch (*ch) { case '(': sc.Push(*ch); break; case ')': { c = sc.Pop(); while (c != '(') { PBinTreeNode t = CrtBinTree(); t->data = c; t->rChild = st.Pop(); t->lChild = st.Pop(); st.Push(t); c = sc.Pop(); } break; } default: { while (sc.GetTop() != '#' & sc.GetTop() != '(') { PBinTreeNode t = CrtBinTree(); c = sc.Pop(); t->data = c; t->rChild = st.Pop(); t->lChild = st.Pop(); st.Push(t); } if (*ch != '#') sc.Push(*ch); break; } } } if (!sc.IsEmpty() & *ch != '#') ch++; } pbt = st.Pop(); return pbt; } void GetVariable(PBinTree pbt) { PBinTree vpt = pbt; if ((pbt->data >= 'a' & pbt->datadata >= 'A' & pbt->datadata); scanf ("%c",&vpt->data); getchar(); } if (vpt->lChild != NULL) GetVariable(vpt->lChild); if (vpt->rChild != NULL) GetVariable(vpt->rChild); } char Caculate(PBinTree pbt) { PBinTree vpt = pbt; if (vpt == NULL) { printf("没有任何表达式可计算!"); return FALSE; } if (vpt->lChild == NULL) //找到叶子结点 return vpt->data; if (InOpt(vpt->data) & Caculate(vpt->lChild) & Caculate(vpt->rChild)) { switch(vpt->data) { case and: if (Caculate(vpt->lChild) == '1' & Caculate(vpt->rChild) == '1') vpt->data = '1'; else vpt->data = '0'; break; case or: if (Caculate(vpt->lChild) == '0' & Caculate(vpt->rChild) == '0') vpt->data = '0'; else vpt->data = '1'; break; case then: 评论0 0 0

以下为关联文档:

用汇编语言编写这个表达式xyzx调试的时候能够将输入的x,y,z经过计算输出?你的意思是说,这个程序能够实现输入x,y,z后输出结果吧? 如果有输入输出就要涉及到十六进制和十进制之间的转换,一下代码没考虑这些,如...

推荐阅读
图文推荐