:用C语言设计一个简单的计算器,要求能够对输入的数 1.完成计算器基本功能。进行+,-,*,/,运算; 2.可以带括号(),一次性输入之后根据优先级计算并输出结果; 3.不限定运算式的输入长度;. 4.要有必要的输入提示。
时间: 2023-02-24 22:48:54 浏览: 115
用c实现计算器的基本功能
3星 · 编辑精心推荐
下面是一份简单的计算器代码,它满足你的要求:
```
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_LEN 1000
char str[MAX_LEN]; // 存储输入的字符串
int pos = 0; // 当前处理到字符串的位置
// 计算数字
int number() {
int res = 0;
while (str[pos] >= '0' && str[pos] <= '9') {
res = res * 10 + str[pos++] - '0';
}
return res;
}
// 计算表达式(递归下降法)
int expression() {
int res = term();
while (str[pos] == '+' || str[pos] == '-') {
char op = str[pos++];
int t = term();
if (op == '+') {
res += t;
} else {
res -= t;
}
}
return res;
}
// 计算项(递归下降法)
int term() {
int res = factor();
while (str[pos] == '*' || str[pos] == '/') {
char op = str[pos++];
int f = factor();
if (op == '*') {
res *= f;
} else {
res /= f;
}
}
return res;
}
// 计算因子(递归下降法)
int factor() {
int res = 0;
if (str[pos] >= '0' && str[pos] <= '9') {
res = number();
} else if (str[pos] == '(') {
pos++;
res = expression();
pos++;
} else {
printf("Error: Invalid input.\n");
exit(1);
}
return res;
}
int main() {
printf("Enter an expression: ");
scanf("%s", str);
int res = expression();
printf("Result: %d\n", res);
return 0;
}
```
这份代码使用递归下降法实现了计算器的基本功能。它可以读入一次性的输入字符串并输出最终结果。它不限制运
阅读全文