用C语言写一个可以处理小括号的计算器函数
时间: 2023-06-13 07:02:39 浏览: 68
下面是一个用 C 语言实现支持小括号的计算器函数的示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#define MAX_EXPR_LEN 256
int evaluate(char *expr);
int main()
{
char expr[MAX_EXPR_LEN];
printf("Enter an expression to evaluate: ");
fgets(expr, MAX_EXPR_LEN, stdin);
printf("Result: %d\n", evaluate(expr));
return 0;
}
int evaluate(char *expr)
{
int result = 0;
int sign = 1;
int num = 0;
int stack[MAX_EXPR_LEN];
int top = -1;
while (*expr != '\0') {
if (isdigit(*expr)) {
num = num * 10 + (*expr - '0');
} else if (*expr == '+') {
result += sign * num;
num = 0;
sign = 1;
} else if (*expr == '-') {
result += sign * num;
num = 0;
sign = -1;
} else if (*expr == '(') {
stack[++top] = result;
stack[++top] = sign;
result = 0;
sign = 1;
} else if (*expr == ')') {
result += sign * num;
num = 0;
result *= stack[top--];
result += stack[top--];
}
expr++;
}
return result + (sign * num);
}
```
这个函数可以处理简单的加减运算,以及支持小括号的优先级运算。可以通过读取用户输入的字符串,调用 evaluate 函数计算表达式的值。