用c语言编程四则混合运算计算器

[复制链接]
查看11 | 回复1 | 2006-4-13 14:24:37 | 显示全部楼层 |阅读模式
#includevoid main(){float a,b;char d;printf("请输入两个数a,b:");scanf("%f,%f"&a,&b);printf("请输入符号d");scanf("%c",d);switch(d){case'+':printf("%f\n,a+b);break;case'-':printf("%f\n,a-b);break;case'*':printf("%f\n,a*b);break;case'/':printf("%f\n,a/b);break;default:printf("input error\n");}}
回复

使用道具 举报

千问 | 2006-4-13 14:24:37 | 显示全部楼层
#include #include #include char token[61]; /*存放表达式字符串的数组*/ int n=0; void error(void) /*报告错误函数*/ { printf("ERROR!\n"); 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!\n"); 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]=='\n') { token[n]='\0'; printf("%s=%g\n",token,result); fprintf(data,"%s=%g\n",token,result); } else error(); fclose(data); return 0; getch(); }我觉得这个就可以.我试了!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行