august 发表于 2007-11-14 00:04:24

程序问题


#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");
}

为什么这里我输入(&*^) 或者输入(*&^%    都得不能正确得出答案呢?

rednaxela 发表于 2007-11-14 12:30:47

这是想用栈来匹配括号么...但是写得不对嘛,top都没变过.就当前的这种用法,count没有作用,st数组也没任何作用(因为只有st被用到了).

Anyway,楼主的问题:
引用第0楼august于2007-11-14 00:04发表的 程序问题 :
为什么这里我输入(&*^) 或者输入(*&^%    都得不能正确得出答案呢?
那是因为最后的if条件写反了...是
if( !correct(arr,4))

august 发表于 2007-11-14 16:35:28

这个程序原来不是这样的,偶修改的好多编,最后发觉最主要问题是RETURN那里没搞好
页: [1]
查看完整版本: 程序问题