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:
if (Caculate(vpt->lChild) == '1' && Caculate(vpt->rChild) == '0') vpt->data = '0'; else vpt->data = '1'; break; } }
return vpt->data; }
void main() {
char *exp = (char*) malloc (sizeof(char)*MAXEXP); FILE *fp1,*fp2;
printf(\**************\\n\
printf(\ 本计算器前只支持或(|)、与(&)、非(!)以运算 **\\n\
printf(\**************\\n\printf(\
printf(\请在\\\输入需要计算的逻辑表达式(需要在表达式后加一个\\\号)\\n\
fp1=fopen(\fscanf(fp1,\while (!CheckSyntax(exp)) {
printf(\表达式输入错误,请重新输入:\\n\fscanf(fp1,\}
fclose(fp1);
PBinTree pbt = TransferTree(exp); GetVariable(pbt);
fp2=fopen(\
fprintf(fp2,\ Caculate(pbt)); fclose(fp2);
printf (\请在\\\查看真值表\\n\}