c语言用栈实现计算器加法运算,(转)利用栈实现模拟计算器
时间: 2023-08-02 10:27:03 浏览: 157
栈实现计算器(c语言版)
3星 · 编辑精心推荐
好的,我来解答你的问题。
下面是一个基于栈的C语言计算器加法运算实现的示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAX_SIZE 100
typedef struct stack {
int top; // 栈顶指针
int data[MAX_SIZE]; // 栈的数组
} Stack;
// 初始化栈
void init(Stack *s) {
s->top = -1;
}
// 判断栈是否为空
int is_empty(Stack *s) {
return s->top == -1;
}
// 判断栈是否已满
int is_full(Stack *s) {
return s->top == MAX_SIZE - 1;
}
// 入栈
void push(Stack *s, int element) {
if (is_full(s)) {
printf("Stack is full.\n");
exit(1);
}
s->data[++s->top] = element;
}
// 出栈
int pop(Stack *s) {
if (is_empty(s)) {
printf("Stack is empty.\n");
exit(1);
}
return s->data[s->top--];
}
// 获取栈顶元素
int get_top(Stack *s) {
if (is_empty(s)) {
printf("Stack is empty.\n");
exit(1);
}
return s->data[s->top];
}
// 计算器加法运算
int calculator(char *str) {
Stack s;
init(&s);
int i = 0;
while (str[i] != '\0') {
if (str[i] >= '0' && str[i] <= '9') {
// 如果是数字字符,则将其转换为数字压入栈中
int num = str[i] - '0';
while (str[i + 1] >= '0' && str[i + 1] <= '9') {
num = num * 10 + str[i + 1] - '0';
i++;
}
push(&s, num);
} else if (str[i] == '+') {
// 如果是加号,则将栈顶的两个元素弹出相加后再将结果压入栈中
int num1 = pop(&s);
int num2 = pop(&s);
push(&s, num1 + num2);
}
i++;
}
return get_top(&s);
}
int main() {
char str[100];
printf("Please input the expression: ");
scanf("%s", str);
int result = calculator(str);
printf("Result: %d\n", result);
return 0;
}
```
以上就是一个基于栈的C语言计算器加法运算实现的示例代码,希望能帮助到你。
阅读全文