当前位置: 代码迷 >> C语言 >> 帮我看看这个程序呗!我看不懂~~谢谢了
  详细解决方案

帮我看看这个程序呗!我看不懂~~谢谢了

热度:228   发布时间:2008-03-24 22:09:10.0
帮我看看这个程序呗!我看不懂~~谢谢了
编函数,判断给定字符序列中 ( 与 ) , [ 与 ] , { 与 } 是否配对(个数相等)。

#include "stdio.h"
bool want(){
    int x=0,y=0,z=0;
    char ch;
    do{
        ch=getchar();
        switch(ch){
            case'{':x++;
                    break;
            case'}':x--;
                    break;
            case'[':y++;
                    break;
            case']':y--;
                    break;
            case'(':z++;
                    break;
            case')':z--;
                    break;
        }        
    }while(ch!='\r'&&ch!='\n');
    if(x!=0||y!=0||z!=0){
        if(x!=0)    printf("{ is wrong!\n");
        if(y!=0)    printf("[ is wrong!\n");
        if(z!=0)    printf("( is wrong!\n");
        return false;
    }
    else
        return true;
}
void main(){
    want();
}
为什么不等于零就没有啊?!!!老师说我也没弄明白!
搜索更多相关的解决方案: break  case  wrong  

----------------解决方案--------------------------------------------------------
这个程序,比如单说(和)吧,其他那两种括号可以类推。
在while循环里,
当输入遇到(时,z就加1。有多少个(,z就加了多少次1;
当输入遇到)时,z就减1。有多少个),z就减了多少次1。这样加1次数和减1次数如果相等,也就是z等于0时,(与)的个数相同。
其实你可以自己举个例子,然后顺着慢慢来。
----------------解决方案--------------------------------------------------------
只是一个保证括号配对的例子
很巧妙,道理也简单,只是保证在有左括号的时候,保证有相等数量的右括号和其配对,X,Y,Z分别代表三种括号的数量,通过上面的计算,只要这三个变量是0,则说明左、右括号数目是相等的。
----------------解决方案--------------------------------------------------------
明白了~~~~~
我晓得了~~谢谢了!!
----------------解决方案--------------------------------------------------------
回复 1# 的帖子
有一个重要的问题。只数个数的话
)))(((之类的括号也会认为是匹配的
----------------解决方案--------------------------------------------------------
看懂一点 小弟初学 呵呵
----------------解决方案--------------------------------------------------------
  相关解决方案