计算器的编码大神们帮帮忙有没有非常仔细的计算其编码?
来源:学生作业帮助网 编辑:六六作业网 时间:2024/12/23 08:58:57
计算器的编码大神们帮帮忙有没有非常仔细的计算其编码?
计算器的编码大神们帮帮忙
有没有非常仔细的计算其编码?
计算器的编码大神们帮帮忙有没有非常仔细的计算其编码?
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; }
记得采纳啊