四则混合运算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();

}

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

51分享举报

要设计并实现一个具有高级错误检查的C语言四则混合运算计算器,首先需要对计算器的基本工作原理有一个清晰的认识。计算器的核心在于如何解析和计算数学表达式。这通常涉及到两个重要的数据结构:栈和队列。栈用于处理运算符的优先级和存储临时结果,而队列则用于在转换表达式格式时暂时存储元素。 参考资源链接:[C语言实现简单四则混合运算计算器](https://wenku.csdn.net/doc/64x83iu6ot?spm=1055.2569.3001.10343) 在C语言中,可以使用结构体来定义栈,包括栈顶指针和一个数组来存储元素。对于队列,同样可以使用结构体来定义,包含队首和队尾指针,以及数组来存储元素。为了实现错误检查,计算器需要能够识别并处理各种潜在的错误情况,包括但不限于:不匹配的括号、无效的数字格式、无效的运算符和除以零的情况。 具体实现步骤如下: 1. 初始化栈和队列,并定义运算符优先级的映射表。 2. 读取用户输入的数学表达式,并进行初步的格式化,如将输入的字符转换为小写。 3. 使用栈对运算符进行优先级排序,并使用队列来处理括号内的子表达式。 4. 通过遍历处理后的表达式,逐个分析每个字符。如果是数字,将其转换为浮点数并压入栈中;如果是运算符,则根据优先级进行相应的计算。 5. 如果遇到左括号,则将其和相应的运算符及数字一起压入栈中;遇到右括号时,则从栈中弹出运算符和数字,直到遇到左括号为止,并进行计算。 6. 在整个过程中,加入错误检查逻辑。如,如果栈中遇到无效的运算符或括号不匹配,则报告错误;在进行除法运算时,检查除数是否为零,并在是零的情况下给出错误提示。 7. 最后,从栈中弹出所有的元素,如果栈中的元素数量不为一,则说明存在语法错误。 通过以上的步骤,你可以创建一个功能强大的四则混合运算计算器,它不仅能够处理复杂的数学表达式,还能够为用户提供详尽的错误信息。这将是一个极好的练习,帮助你更好地掌握C语言编程以及算法和数据结构的应用。 在你完成基础的计算器实现后,如果想要进一步提升程序的健壮性和用户体验,可以参考《C语言实现简单四则混合运算计算器》这份资源。它提供了具体的代码示和调试技巧,帮助你更加深入地理解计算器的设计和实现过程。 参考资源链接:[C语言实现简单四则混合运算计算器](https://wenku.csdn.net/doc/64x83iu6ot?spm=1055.2569.3001.10343)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值