吉林大学c语言,括号匹配问题

img


请问只能用栈做吗,我们还没学

问题遇到的现象和发生背景 写吉林大学数组实验设计时遇到的问题
用代码块功能插入代码,请勿粘贴截图
运行结果及报错内容 检查点一直通过不了
我的解答思路和尝试过的方法 #include <stdio.h>
int main(void) {

    int a = 1;

    char ch[100];

    int fg1 = 1, fg2 = 1, fg3 = 1;

    int i = 0;

    while (a = 1) {

        scanf_s("%c", &ch[i]);

        getchar();

        i++;

        if (ch[i - 1] == '@') {
            break;
        }
    }

    for (int j = 0; j < i; j++) {

        if (ch[j] == '(') {

            fg1 = 1;

            for (int k = j + 1; k < i; k++) {

                if (ch[k] == ')') {

                    fg1 = 1;

                    ch[k] = 'a';

                    break;

                }

            }

        }

        if (ch[j] == '[') {

            fg2 = 0;

            for (int k = j + 1; k < i; k++) {

                if (ch[k] == ']') {

                    fg2 = 1;

                    ch[k] = 'a';

                    break;

                }

            }

        }

        if (ch[j] == '{') {

            fg3 = 0;

            for (int k = j + 1; k < i; k++) {

                if (ch[k] == '}') {

                    fg3 = 1;

                    ch[k] = 'a';

                    break;

                }

            }

        }

    }

    if (fg1 == 0 || fg2 == 0 || fg3 == 0||i>100) {

        printf("NO");

    }
    else printf("YES");

    return 0;

}

请说一下你测试的输入,输出都是什么。

scanf缺少参数。给出你的问题,错误提示。

28行是 0;
还有你的逻辑有问题,你只是匹配了每个左边括号,你没有考虑 )] } 这三种括号多出来的可能。例如 ()))) 你得匹配逻辑是yes