试写一个判别表达式中开闭括号是否配对的c语言
时间: 2024-03-26 16:38:30 浏览: 113
以下是一个简单的判别表达式中开闭括号是否配对的 C 语言程序:
```c
#include <stdio.h>
#include <stdbool.h>
bool is_parentheses_matched(char* expression) {
int count = 0;
for (int i = 0; expression[i] != '\0'; i++) {
if (expression[i] == '(') {
count++;
} else if (expression[i] == ')') {
count--;
if (count < 0) {
return false;
}
}
}
return count == 0;
}
int main() {
char expression[] = "((a+b)*(c-d))/(e+f))";
if (is_parentheses_matched(expression)) {
printf("括号匹配\n");
} else {
printf("括号不匹配\n");
}
return 0;
}
```
这个程序定义了一个名为 `is_parentheses_matched` 的函数,该函数接受一个表达式字符串作为参数,并返回一个布尔值表示该表达式中的括号是否配对。该函数使用一个计数器变量 `count` 来跟踪左括号的数量。遍历表达式字符串时,如果遇到左括号,就将计数器加 1;如果遇到右括号,就将计数器减 1。如果在遍历过程中计数器的值小于 0,说明右括号数量大于左括号数量,即括号不匹配,函数返回 false。在遍历完成后,如果计数器的值为 0,则说明括号匹配,函数返回 true;否则,返回 false。
在 `main` 函数中,我们定义一个表达式字符串 `expression`,然后调用 `is_parentheses_matched` 函数来判断其中的括号是否配对,并打印相应的结果。
阅读全文