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

本文介绍了一个简单的表达式计算器实现,该计算器能够解析并计算包含加减乘除运算及括号的数学表达式。通过逐字符读取输入,利用递归下降解析的方法处理优先级和括号,最终计算出表达式的值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

满意答案

#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();

}

我觉得这个就可以.我试了!

51分享举报

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值