计算器的编码大神们帮帮忙

问题描述:

计算器的编码大神们帮帮忙
有没有非常仔细的计算其编码?
1个回答 分类:综合 2014-11-26

问题解答:

我来补答
MFC可以快速实现.我就不给出可视化部分了,因为太简单,建一个工程,然后可视化的编辑对话框,然后添加按钮,添加映射什么的. 核心算法在此,支持表达式 3+(32*23+53)/20 试试吧 /* simple integer arithmetic calculator according to the EBNF -> {} ->+|- ->{} -> * -> ( )| Number Input a line of text from stdin Outputs "Error" or the result. */ #include #include #include char token;/*global token variable*/ /*function prototypes for recursive calls*/ int exp(void); int term(void); int factor(void); void error(void) { fprintf(stderr,"Error\n"); exit(1); } void match(char expectedToken) { if(token==expectedToken)token=getchar(); else error(); } main() { int result; token = getchar();/*load token with first character for lookahead*/ result = exp(); if(token=='\n')/*check for end of line */ printf("Result = %d\n",result); else error();/*extraneous cahrs on line*/ return 0; } int exp(void) { int temp = term(); while((token=='+')||(token=='-')) switch(token) { case '+': match('+'); temp+=term(); break; case '-': match('-'); temp-=term(); break; } return temp; } int term(void) { int temp = factor(); while (token=='*') { match('*'); temp*=factor(); } return temp; } int factor(void) { int temp; if(token=='('){ match('('); temp = exp(); match(')'); } else if(isdigit(token)){ ungetc(token,stdin); scanf("%d",&temp); token = getchar(); } else error(); return temp; }
记得采纳啊
 
 
展开全文阅读
剩余:2000
上一页:示意图也请画出
下一页:拜托详细解答