mycwt60 发表于 2022-1-2 23:58:36

求助大佬 圆括号匹配 哪里语法错了

// (1   不匹配
#include <stdio.h>
int match(char *str){
int i,j,k,l,stack,top=-1;
for(i=0;str='\0';i++){
if(str=='(')stack[++top]=str;
if(str==')'){
if(top>=0) top--;
else return 0;
}}
if(top==-1) return 1;
else return 0;


}
int main(int argc, char *argv[])
{
        char str;
        scanf("%s",str);
        if(match(str)){printf("匹配");}
        else {printf("不匹配");}
       
}

PriceXiao 发表于 2022-1-3 00:23:35

是不是"("输错了用中文输入法输入"("的或者全角输入的"("
我用了你的代码是可以的

此方星河 发表于 2022-1-3 08:45:59

没问题,匹配

mycwt60 发表于 2022-1-3 09:21:23

PriceXiao 发表于 2022-1-3 00:23
是不是"("输错了用中文输入法输入"("的或者全角输入的"("
我用了你的代码是可以的

大佬 输入( 应该是不匹配 有一对括号()才是匹配

mycwt60 发表于 2022-1-3 09:21:54

此方星河 发表于 2022-1-3 08:45
没问题,匹配

大佬 输入( 应该是不匹配 有一对括号()才是匹配

PriceXiao 发表于 2022-1-3 16:27:28

mycwt60 发表于 2022-1-3 09:21
大佬 输入( 应该是不匹配 有一对括号()才是匹配

那你代码写的不对,for循环的判别式写的不对,得写成str!='\0',你写的是str='\0'这个是赋值语句了,'\0'的ascii值是0表达式为假,循环进不去的:
#include <stdio.h>
int match(char *str) {
        int i,j,k,l,stack,top=-1;
        for(i=0; str!='\0'; i++) {
                if(str=='(')stack[++top]=str;
                if(str==')') {
                        if(top>=0) top--;
                        else return 0;
                }
        }
        if(top==-1) return 1;
        else return 0;


}
int main(int argc, char *argv[]) {
        char str;
        scanf("%s",str);
        if(match(str)) {
                printf("匹配");
        } else {
                printf("不匹配");
        }

}

mycwt60 发表于 2022-1-3 16:52:07

PriceXiao 发表于 2022-1-3 16:27
那你代码写的不对,for循环的判别式写的不对,得写成str!='\0',你写的是str='\0'这个是赋值语句了,'\0' ...

对的 大佬,刚发现被自己蠢哭了 然后又不知道在哪里删帖
页: [1]
查看完整版本: 求助大佬 圆括号匹配 哪里语法错了