| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 910 人关注过本帖
标题:检测括号配对
只看楼主 加入收藏
Nekomimi
Rank: 2
等 级:论坛游民
帖 子:80
专家分:15
注 册:2006-11-21
结帖率:100%
收藏
 问题点数:0 回复次数:4 
检测括号配对
#include <stdio.h>
#define MAX 30

int main(int argc, char *argv[])
{
    int c,z=0,y=0,x=0,i=0;
    char a[MAX];

    while(((c=getchar())!='\n')&&((c=getchar())!=EOF)){
        switch(c)
        {
            case '{':
                z++;
                a[i]=c;
                i++;
                break;
            case '}':
                if(a[i-1]=='{'){
                    z--;
                    i--;
                }
                break;
            case '[':
                y++;
                a[i]=c;
                i++;
                break;
            case ']':
                if(a[i-1]=='['){
                    y--;
                    i--;
                }
                break;
            case '(':
                x++;
                a[i]=c;
                i++;
                break;
            case ')':
                if(a[i-1]=='('){
                    x--;
                    i--;
                }
                break;
            default:
                break;
        }
    }

    if(i==0){
        printf("OK");
    }else{
        printf("ERROR!");
    }
    return 0;
}
不能正确判断是否配对,比如我输入:P},依然判断正确。
请问程序到底错在哪里呀。。
搜索更多相关主题的帖子: 配对 括号 检测 
2010-01-06 19:54
Nekomimi
Rank: 2
等 级:论坛游民
帖 子:80
专家分:15
注 册:2006-11-21
收藏
得分:0 
没人回答。。。
继续顶起。。。等待。。。
2010-01-07 19:12
h978147355
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:63
专家分:187
注 册:2009-12-29
收藏
得分:0 
过来看看
2010-01-08 19:50
h978147355
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:63
专家分:187
注 册:2009-12-29
收藏
得分:0 
- -
你的循环语句出了点问题
你那个语句有两个getchar()
所以比如你输入   p{   那么第一个字符P就赋给c 然后第二个字符{又赋给了c
所以这个循环体里面就有执行循环的字符c的就是一个{ 结果为error
但如果你输入的{p的话 那么执行第一次循环的就是字符p 那么结果就是ok
2010-01-08 20:10
黄昏の腕轮
Rank: 2
等 级:论坛游民
帖 子:64
专家分:12
注 册:2009-6-13
收藏
得分:0 
以下是引用h978147355在2010-1-8 20:10:08的发言:

- -
你的循环语句出了点问题
你那个语句有两个getchar()
所以比如你输入   p{   那么第一个字符P就赋给c 然后第二个字符{又赋给了c
所以这个循环体里面就有执行循环的字符c的就是一个{ 结果为error
但如果你输入 ...
可是把后面的“((c=getchar())!=EOF)”去掉也还是不行呀。。
2010-01-08 22:05
快速回复:检测括号配对
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.024581 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved