词条 | 计算器C程原代码 |
释义 | § 回车得 1 #include<stdio.h> #include<ctype.h> #include<stdlib.h> #include <conio.h> char token【61】; int n=0; void error(void) { printf("ERROR!\"); exit(1); } void match(char expected) { if(token【n】==expected) token【++n】=getchar(); else error(); } double term(void); double factor(void); double exp(void) { double temp=term(); while((token【n】=='+')||(token【n】=='-')) switch(token【n】) { case'+':match('+'); temp+=term(); break; case'-':match('-'); temp-=term(); break; } return temp; } double term(void) { double div; double temp=factor(); while((token【n】=='*')||(token【n】=='/')) switch(token【n】) { case'*':match('*'); temp*=factor(); break; case'/':match('/'); div=factor(); if(div==0) { printf("The divisor is zero!\"); exit(1); } temp/=div; break; } return temp; } double factor(void) { double temp; char number【61】; int i=0; if(token【n】=='(') { match('('); temp=exp(); match(')'); } else if(isdigit(token【n】)||token【n】=='.') { while(isdigit(token【n】)||token【n】=='.') { number【i++】=token【n++】; token【n】=getchar(); } number='\\0'; temp=atof(number); } else error(); return temp; } main() { double result; FILE *data=fopen("61590_4.dat","at"); if(data==NULL) data=fopen("61590_4.dat","wt"); if(data==NULL) return 0; token【n】=getchar(); result=exp(); if(token【n】=='\') { token【n】='\\0'; printf("%s=%g\",token,result); fprintf(data,"%s=%g\",token,result); } else error(); fclose(data); getch(); } |
随便看 |
百科全书收录594082条中文百科知识,基本涵盖了大多数领域的百科知识,是一部内容开放、自由的电子版百科全书。