程序问题
#include<stdio.h>
int correct(char exp[],int n)
{
char st;
int top=0,i=0,tag=1,count=0;
while(i<=n && tag)
{
if(exp=='(' || exp=='[' || exp=='{')
{
st=exp;
}
if(exp==')')
{
if(st=='(')
{
tag=0;
count++;
}
}
if(exp==']')
{
if(st=='[')
{
tag=0;
count++;
}
}
if(exp=='}')
{
if(st=='{')
{
tag=0;
count++;
}
}
i++;
}
return tag;
}
void main()
{
char arr,ch;
int i;
for(i=0;i<5;i++)
{
scanf("%c",&arr);
}
for(i=0;i<5;i++)
printf("%c",arr);
printf("%d\n",correct(arr,4));
if(correct(arr,4))
printf("that is great!\n");
else
printf("this is bad!\n");
}
为什么这里我输入(&*^) 或者输入(*&^% 都得不能正确得出答案呢? 这是想用栈来匹配括号么...但是写得不对嘛,top都没变过.就当前的这种用法,count没有作用,st数组也没任何作用(因为只有st被用到了).
Anyway,楼主的问题:
引用第0楼august于2007-11-14 00:04发表的 程序问题 :
为什么这里我输入(&*^) 或者输入(*&^% 都得不能正确得出答案呢?
那是因为最后的if条件写反了...是
if( !correct(arr,4)) 这个程序原来不是这样的,偶修改的好多编,最后发觉最主要问题是RETURN那里没搞好
页:
[1]