用指针写一个既能加减乘除还能用括号的计算器代码
时间: 2023-11-21 10:04:46 浏览: 40
好的,我知道了。以下是一个简单的用指针实现能加减乘除还能用括号的计算器代码:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAX_SIZE 100
char expr[MAX_SIZE]; // 存放输入的表达式
char *ptr; // 指向当前处理的字符
int eval(); // 定义计算函数
// 定义递归函数用于计算表达式
int factor()
{
int result;
if (*ptr == '(') {
ptr++; // 跳过左括号
result = eval(); // 计算括号里的表达式
ptr++; // 跳过右括号
} else {
result = atoi(ptr);
while (*ptr >= '0' && *ptr <= '9') ptr++; // 指针跳过数字字符
}
return result;
}
// 定义递归函数用于计算表达式
int term()
{
int result = factor();
while (*ptr == '*' || *ptr == '/') {
char op = *ptr;
ptr++; // 指针指向下一个字符
int val = factor();
if (op == '*') {
result *= val;
} else {
result /= val;
}
}
return result;
}
// 定义递归函数用于计算表达式
int eval()
{
int result = term();
while (*ptr == '+' || *ptr == '-') {
char op = *ptr;
ptr++; // 指针指向下一个字符
int val = term();
if (op == '+') {
result += val;
} else {
result -= val;
}
}
return result;
}
int main()
{
printf("请输入一个合法的表达式: ");
scanf("%s", expr);
ptr = expr; // 指针指向表达式开头
printf("计算结果为: %d\n", eval()); // 输出计算结果
return 0;
}
```
这是一个简单的递归函数实现的计算器,他能够使用括号改变运算优先级。函数的实现使用指针来指向当前处理的字符,逐个处理表达式的每个部分,最后计算出结果并输出。