以下是使用C语言编写的函数,用于判断一个数学表达式中的括号是否匹配:

#include <stdio.h>
#include <stdbool.h>

bool checkParentheses(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 expression1[] = "(1+3*(2+4)+5)+6";
    char expression2[] = "1+3*(2+4)+5)+6";
    
    if (checkParentheses(expression1)) {
        printf("括号是匹配的\n");
    } else {
        printf("括号是不匹配的\n");
    }
    
    if (checkParentheses(expression2)) {
        printf("括号是匹配的\n");
    } else {
        printf("括号是不匹配的\n");
    }
    
    return 0;
}

输出结果:

括号是匹配的
括号是不匹配的

这个函数使用一个整型变量count来记录遇到的左括号的数量。遍历表达式中的每个字符,如果遇到左括号,则count加1;如果遇到右括号,则count减1。如果count小于0,说明出现了未匹配的右括号,返回false。最后,如果count等于0,说明括号是匹配的,返回true;否则括号是不匹配的,返回false

用C语言写一个函数判断一个数学表达式中的是否匹配匹配返回true不匹配返回false。例如 1+32+4+5+6 括号是匹配的;而1+32+4+5+6 括号就是不匹配的

原文地址: https://www.cveoy.top/t/topic/incr 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录