|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
// (1 不匹配
- #include <stdio.h>
- int match(char *str){
- int i,j,k,l,stack[100],top=-1;
- for(i=0;str[i]='\0';i++){
- if(str[i]=='(')stack[++top]=str[i];
- if(str[i]==')'){
- if(top>=0) top--;
- else return 0;
- }}
- if(top==-1) return 1;
- else return 0;
- }
- int main(int argc, char *argv[])
- {
- char str[100];
- scanf("%s",str);
- if(match(str)){printf("匹配");}
- else {printf("不匹配");}
-
- }
复制代码
那你代码写的不对,for循环的判别式写的不对,得写成str[i]!='\0',你写的是str[i]='\0'这个是赋值语句了,'\0'的ascii值是0表达式为假,循环进不去的:
- #include <stdio.h>
- int match(char *str) {
- int i,j,k,l,stack[100],top=-1;
- for(i=0; str[i]!='\0'; i++) {
- if(str[i]=='(')stack[++top]=str[i];
- if(str[i]==')') {
- if(top>=0) top--;
- else return 0;
- }
- }
- if(top==-1) return 1;
- else return 0;
- }
- int main(int argc, char *argv[]) {
- char str[100];
- scanf("%s",str);
- if(match(str)) {
- printf("匹配");
- } else {
- printf("不匹配");
- }
- }
复制代码
|
|