用C语言写一个输入一组数学表达式用函数判断一个数学表达式中的是否匹配匹配返回true不匹配返回false。
以下是一个用C语言编写的判断数学表达式中的括号是否匹配的函数:
#include <stdio.h>
#include <stdbool.h>
#define MAX_SIZE 100
// 定义一个栈结构
typedef struct {
int top;
char items[MAX_SIZE];
} Stack;
// 初始化栈
void init(Stack *s) {
s->top = -1;
}
// 判断栈是否为空
bool isEmpty(Stack *s) {
return s->top == -1;
}
// 判断栈是否已满
bool isFull(Stack *s) {
return s->top == MAX_SIZE - 1;
}
// 入栈
void push(Stack *s, char c) {
if (isFull(s)) {
printf("栈已满,无法入栈!\n");
return;
}
s->items[++(s->top)] = c;
}
// 出栈
char pop(Stack *s) {
if (isEmpty(s)) {
printf("栈为空,无法出栈!\n");
return '\0';
}
return s->items[(s->top)--];
}
// 判断括号是否匹配
bool matchBrackets(char *expression) {
Stack s;
init(&s);
int i = 0;
while (expression[i] != '\0') {
if (expression[i] == '(') {
push(&s, '(');
} else if (expression[i] == ')') {
if (isEmpty(&s)) { // 栈为空,右括号多余
return false;
} else {
pop(&s);
}
}
i++;
}
return isEmpty(&s); // 如果栈为空,则括号匹配成功,否则左括号多余
}
int main() {
char expression[MAX_SIZE];
printf("请输入数学表达式:");
fgets(expression, MAX_SIZE, stdin);
bool isMatched = matchBrackets(expression);
if (isMatched) {
printf("括号匹配成功!\n");
} else {
printf("括号不匹配!\n");
}
return 0;
}
运行程序后,用户可以输入一个数学表达式,程序将判断表达式中的括号是否匹配,并输出结果
原文地址: https://www.cveoy.top/t/topic/incz 著作权归作者所有。请勿转载和采集!