求助大佬 圆括号匹配 哪里语法错了
// (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
是不是"("输错了用中文输入法输入"("的或者全角输入的"("
我用了你的代码是可以的
大佬 输入( 应该是不匹配 有一对括号()才是匹配 此方星河 发表于 2022-1-3 08:45
没问题,匹配
大佬 输入( 应该是不匹配 有一对括号()才是匹配 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("不匹配");
}
} PriceXiao 发表于 2022-1-3 16:27
那你代码写的不对,for循环的判别式写的不对,得写成str!='\0',你写的是str='\0'这个是赋值语句了,'\0' ...
对的 大佬,刚发现被自己蠢哭了 然后又不知道在哪里删帖
页:
[1]