用C语言设计一个简单的计算器,要求能够对输入的数 1.进行+,-,*,/,运算;2.可以带括号( );3.不限定运算式的输入长度.(小白版)
时间: 2024-03-26 12:39:30 浏览: 53
计算器(支持+,-,*,/)运算
好的,我来为您提供一个简单的计算器代码,它可以进行加减乘除四则运算和带括号的运算。请注意,这只是一个小白版的实现,可能存在一些局限性。
```c
#include <stdio.h>
#include <stdlib.h>
int main() {
char expr[100]; // 存储输入的表达式
printf("请输入要计算的表达式:");
scanf("%s", expr);
int result = 0; // 存储计算结果
int num = 0; // 存储当前处理的数字
char op = '+'; // 存储当前处理的运算符
int i = 0;
while (expr[i] != '\0') {
if (expr[i] >= '0' && expr[i] <= '9') {
num = num * 10 + (expr[i] - '0');
} else if (expr[i] == '+' || expr[i] == '-' || expr[i] == '*' || expr[i] == '/') {
if (op == '+') {
result += num;
} else if (op == '-') {
result -= num;
} else if (op == '*') {
result *= num;
} else if (op == '/') {
result /= num;
}
num = 0;
op = expr[i];
} else if (expr[i] == '(') {
int j = i + 1;
int count = 1;
while (count > 0) {
if (expr[j] == '(') {
count++;
} else if (expr[j] == ')') {
count--;
}
j++;
}
j--;
char subexpr[100];
for (int k = i + 1; k < j; k++) {
subexpr[k - i - 1] = expr[k];
}
subexpr[j - i - 1] = '\0';
int subresult = atoi(subexpr);
if (op == '+') {
result += subresult;
} else if (op == '-') {
result -= subresult;
} else if (op == '*') {
result *= subresult;
} else if (op == '/') {
result /= subresult;
}
i = j;
}
i++;
}
if (op == '+') {
result += num;
} else if (op == '-') {
result -= num;
} else if (op == '*') {
result *= num;
} else if (op == '/') {
result /= num;
}
printf("计算结果为:%d\n", result);
return 0;
}
```
这个计算器的实现思路比较简单:我们用一个循环遍历输入的表达式,每次处理一个数字和一个运算符,最后得到计算结果。如果遇到左括号,我们就处理括号内的表达式,并将结果加入到当前的计算结果中。如果遇到右括号,我们就跳过它并继续处理后面的内容。需要注意的是,我们在处理括号内的表达式时也可能遇到括号,所以要用一个循环来不断查找括号的匹配位置。
希望这个代码能够帮到您!
阅读全文