用C语言设计一个简单的计算器,可以带括号进行+,-,*,/,运算,且不限定运算式的输入长度.
时间: 2023-09-19 15:10:56 浏览: 237
好的,下面是一个简单的计算器的C代码实现:
```c
#include <stdio.h>
#include <stdlib.h>
/* 定义符号常量 */
#define MAXSIZE 1000
#define true 1
#define false 0
/* 定义全局变量 */
char expr[MAXSIZE]; // 存储输入的表达式
int index = 0; // 当前处理字符的下标
/* 函数声明 */
int calc(); // 计算函数
int add_sub(); // 加减运算
int mul_div(); // 乘除运算
int get_num(); // 获取数字
int main() {
printf("请输入要计算的表达式:\n");
scanf("%s", expr);
int result = calc();
printf("计算结果为:%d\n", result);
return 0;
}
/* 计算函数 */
int calc() {
int res = add_sub();
return res;
}
/* 加减运算 */
int add_sub() {
int res = mul_div();
while (true) {
if (expr[index] == '+') {
index++;
res += mul_div();
} else if (expr[index] == '-') {
index++;
res -= mul_div();
} else {
break;
}
}
return res;
}
/* 乘除运算 */
int mul_div() {
int res = get_num();
while (true) {
if (expr[index] == '*') {
index++;
res *= get_num();
} else if (expr[index] == '/') {
index++;
int num = get_num();
if (num == 0) {
printf("除数不能为0!\n");
exit(1);
}
res /= num;
} else {
break;
}
}
return res;
}
/* 获取数字 */
int get_num() {
int res = 0;
if (expr[index] == '(') {
index++;
res = add_sub();
if (expr[index] == ')') {
index++;
} else {
printf("括号不匹配!\n");
exit(1);
}
} else if (expr[index] >= '0' && expr[index] <= '9') {
while (expr[index] >= '0' && expr[index] <= '9') {
res = res * 10 + (expr[index] - '0');
index++;
}
} else {
printf("输入有误!\n");
exit(1);
}
return res;
}
```
这个计算器可以支持括号、加减乘除四则运算,不限定输入长度。你可以将上述代码保存为calc.c并编译运行。
阅读全文