226 words
1 minute
逆波兰计算器
简化版,能跑就行😄
//// Created by Rock Zhang on 2025/9/23.//#include <stdio.h>#include <string.h>#include <stdlib.h>#include <ctype.h>
#define MAX 100
typedef struct{ int data[MAX]; int top;}Stack;
void initStack(Stack* stack){ stack -> top = -1;}
void push(Stack* stack, int data){ stack -> data[++stack -> top] = data;}
int pop(Stack* stack){ return stack -> data[stack -> top--];}
int calc(){ Stack stack; initStack(&stack);
char token[MAX];
while (1) { scanf("%s", token);
if (strcmp(token, "=") == 0) { break; }
int is_number = 1; for (int i = 0; token[i] != '\0'; i++) { if (!isdigit(token[i])) { is_number = 0; break; } } if (is_number) { int number = atoi(token); push(&stack, number); printf("-> 输入数字: %d\n", number); } else if (strlen(token) == 1) { char operator = token[0]; int a = 0, b = 0, result = 0; b = pop(&stack); a = pop(&stack);
switch (operator) { case '+': printf("输入算符 +\n"); result = a + b; break; case '-': result = a - b; break; case '*': result = a * b; break; case '/': result = a / b; break; default: printf("错误: 未知运算符 '%c'。\n", operator); } push(&stack, result); } } printf("%d", pop(&stack)); return 0;}
int main(){ calc(); return 0;}