算数表达式求值C语言代码
时间: 2024-06-30 09:01:05 浏览: 126
表达式求值 c语言代码
在C语言中,计算算术表达式的求值通常涉及使用递归解析器或栈来逐步处理运算。下面是一个简单的例子,展示了如何使用递归函数来计算基本的算术表达式(包括加法、减法、乘法和除法),但请注意,这个例子不包括括号处理、优先级等复杂情况:
```c
#include <stdio.h>
// 定义运算符的优先级和类型
enum {ADD, SUB, MUL, DIV};
char precedence[] = {'+', '-', '*', '/'};
// 递归函数,用于求值
int evaluate(char* expression, char* token) {
double num1, num2;
int op;
// 读取数字部分
if (sscanf(token, "%lf", &num1) == 1)
return num1;
// 递归处理操作数和运算符
for (op = ADD; ; op++) {
if (expression == precedence[op]) {
expression++; // 移动到运算符
num2 = evaluate(expression, expression); // 递归求下一个操作数
switch (op) {
case ADD: return num1 + num2;
case SUB: return num1 - num2;
case MUL: return num1 * num2;
case DIV: if (num2 != 0) return num1 / num2; // 避免除以零错误
default: break; // 未处理的运算符,返回前一个操作数
}
} else {
break; // 没有更高优先级的运算符,结束递归
}
}
// 如果没有遇到运算符,返回最后一个操作数
return num1;
}
int main() {
char expression[] = "2 + 3 * 4 / 2";
printf("Result: %.2f\n", evaluate(expression, expression)); // 从字符串开始处理
return 0;
}
阅读全文