c语言字符型计算器,求用c语言编程四则混合运算计算器?

#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[i]='\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
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值