算术表达式求值的C语言程序使用递归函数
时间: 2024-05-01 14:23:43 浏览: 133
以下是一个使用递归函数计算算术表达式的示例程序:
```c
#include <stdio.h>
// 函数声明
int calc(char *);
int main()
{
char expr[100];
printf("请输入算术表达式(仅包含+、-、*、/和数字):\n");
scanf("%s", expr);
int result = calc(expr);
printf("结果为:%d\n", result);
return 0;
}
// 递归函数计算算术表达式
int calc(char *expr)
{
static int pos = 0; // 记录当前处理的位置
int num1, num2;
char op;
num1 = 0;
// 处理第一个数字
while (expr[pos] >= '0' && expr[pos] <= '9')
{
num1 = num1 * 10 + (expr[pos] - '0');
pos++;
}
// 处理运算符和第二个数字
op = expr[pos];
pos++;
if (op == '+')
{
num2 = calc(expr);
return num1 + num2;
}
else if (op == '-')
{
num2 = calc(expr);
return num1 - num2;
}
else if (op == '*')
{
num2 = calc(expr);
return num1 * num2;
}
else if (op == '/')
{
num2 = calc(expr);
return num1 / num2;
}
else
{
return num1;
}
}
```
该程序首先从用户输入中读取算术表达式,然后将其传递给 `calc` 函数。`calc` 函数使用一个静态变量 `pos` 来记录当前处理的位置。在每次递归调用中,先处理第一个数字,然后处理运算符和第二个数字。如果运算符是加、减、乘、除中的一种,则递归调用 `calc` 函数来计算第二个数字,最后返回运算结果。如果运算符是空格,则表示表达式已经被完全处理完毕,直接返回第一个数字。
阅读全文