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