分类:
2005-10-24 20:26:05
/*文法 S-->aBc|bAB A-->aAb|b B-->b */
#include
#include
#include
#define MAXSIZE 100
int B(char a[],int begin)
{int i=begin;
if(a[i]=='b')
return i;
else
{printf("error!
");
exit(1);
}
}
/*(int A1(char a[],int begin,int len)
{int i=begin;
if(i==len-2)
return i;
else
if(a[i]=='b')
A1(a,++i,len);
}*/
int A(char a[],int begin,int len)
{int i=begin;
if(a[i]=='a')
{ A(a,++i,len);
{i++;if(a[i]=='b')return i;
else goto l1;}}
else
if(a[i]=='b')
return i;
else
l1: {printf("error!
");
exit(1);
}
}
main()
{char a[MAXSIZE];int i=0;int len;int m,n;
printf("input the string:
");
scanf("%s",a);
len=strlen(a);
if(a[i]=='a')
{B(a,++i);
if(a[i+1]=='c'&&a[i+2]==' ')
{printf("right!
");
exit(1);
}
else
{printf("error!
");
exit(1);
}
}
else
if(a[i]!='b'&&a[i]!='a')
{printf("error!
");
exit(1);
}
else
if(a[i]=='b')
{m=A(a,++i,len);
n=B(a,++m);
}
if(a[n+1]==' ')
printf("right!
");
else
printf("error!
");
}