c语言实现使用算符优先分析方法设计一个计算器,必须能够完成加、减、乘、除、幂、括号()等运算符;将算术运算表达式写成算符优先文法;给定任意符号串,判断其是否是正确的表达式,若是给出计算结果;写出具体代码
时间: 2023-03-06 13:07:59 浏览: 84
算符优先文法 C语言实现
5星 · 资源好评率100%
使用算符优先分析方法设计一个计算器,可以使用C语言来实现,需要实现加、减、乘、除、幂、括号()等运算符的运算功能,以及把算术运算表达式写成算符优先文法,判断给定的任意符号串是否是正确的表达式,若是则给出计算结果。如下是一个示例代码(仅供参考):#include <stdio.h>
#include <stdlib.h>
#include <math.h>int main()
{
char expression[100];
double result;
printf("Please input an expression: ");
scanf("%s", expression);
result = calculate(expression);
printf("The result is: %.2f\n", result);
return 0;
}double calculate(char *exp)
{
double result = 0;
char op;
double op1, op2;
int index = 0;
if(exp[index] != '(')
op1 = getNumber(exp, &index);
else
op1 = calculate(exp + 1);
while(exp[index] != '\0')
{
op = exp[index];
index++;
if(exp[index] != '(')
op2 = getNumber(exp, &index);
else
op2 = calculate(exp + index + 1);
switch(op)
{
case '+':
result = op1 + op2;
break;
case '-':
result = op1 - op2;
break;
case '*':
result = op1 * op2;
break;
case '/':
result = op1 / op2;
break;
case '^':
result = pow(op1, op2);
break;
}
if(exp[index] == '\0')
return result;
else
op1 = result;
}
return result;
}double getNumber(char *exp, int *index)
{
double number = 0;
while(exp[*index] >= '0' && exp[*index] <= '9')
{
number = number * 10 + (exp[*index] - '0');
(*index)++;
}
return number;
}
阅读全文