c语言实现简单多位数的计算器
时间: 2023-07-13 18:32:14 浏览: 212
C语言实现一个简单的计算器
3星 · 编辑精心推荐
好的,以下是一个简单的C语言多位数计算器的实现代码:
```c
#include<stdio.h>
#include<string.h>
#define MAX 100
int stack[MAX]; //定义栈
int top = -1; //栈顶指针初始化为-1
//将字符转换为整型数字
int charToInt(char c)
{
return c - '0';
}
//将整型数字转换为字符
char intToChar(int num)
{
return num + '0';
}
//入栈操作
void push(int num)
{
if(top == MAX - 1) { //栈满
printf("Stack is full, can't push element.\n");
return;
}
top++; //栈顶指针加1
stack[top] = num; //将元素入栈
}
//出栈操作
int pop()
{
if(top == -1) { //栈空
printf("Stack is empty, can't pop element.\n");
return -1;
}
int num = stack[top]; //取出栈顶元素
top--; //栈顶指针减1
return num;
}
//计算两个数字的加法
int add(int a, int b)
{
return a + b;
}
//计算两个数字的减法
int subtract(int a, int b)
{
return a - b;
}
//计算两个数字的乘法
int multiply(int a, int b)
{
return a * b;
}
//计算两个数字的除法
int divide(int a, int b)
{
return a / b;
}
//判断字符是否为数字
int isDigit(char c)
{
return c >= '0' && c <= '9';
}
//计算表达式的值
int calculate(char* expression)
{
int len = strlen(expression);
int i = 0;
while(i < len) {
if(isDigit(expression[i])) { //如果是数字,将其转换为整型并入栈
push(charToInt(expression[i]));
} else { //如果是运算符,从栈中取出两个数字进行运算,并将结果入栈
int num2 = pop();
int num1 = pop();
if(expression[i] == '+') {
push(add(num1, num2));
} else if(expression[i] == '-') {
push(subtract(num1, num2));
} else if(expression[i] == '*') {
push(multiply(num1, num2));
} else if(expression[i] == '/') {
push(divide(num1, num2));
}
}
i++;
}
return pop(); //最终栈中剩下的元素就是表达式的计算结果
}
int main()
{
char expression[MAX];
printf("Please enter an expression: ");
scanf("%s", expression);
int result = calculate(expression);
printf("Result: %d\n", result);
return 0;
}
```
该计算器实现了四则运算(加、减、乘、除),可以计算多位数的表达式。用户只需输入表达式,程序会自动计算并输出结果。
阅读全文