判断合式公式的书写正确性,C语言编程0
我考虑了两个方向:一是左右括号的数量相等;二是在每一种字符后面应该跟进的字符
如:在字母后面只能跟运算符、右括号;
在运算符后面只能跟左括号、字母、非;
在非后面只能跟字母、左括号;
在左括号后面只能跟左括号、字母、非;
在右括号后面只能跟运算符、右括号。
代码如下:
#include
void main()
{
int i=0,j=0,k=0,l=0,m=0,n=0,sum=0;
char str[100];
scanf("%s",&str);
do
{
sum++;
if((str[i+1]!='(')||(str[i+1]'Z')||(str[i+1]!='*'))
break;
i++;
}while(i<100,(str[i]=='('));
if(i=100) j=1;
i=0;
do
{
if((str[i+1]!='(')||(str[i+1]'Z')||(str[i+1]!='*'))
break;
i++;
}while(i<100,((str[i]=='|')||(str[i]=='&')||(str[i+1]=='-')||(str[i+1]=='=')));
if(i=100) k=1;
i=0;
do
{
if ((str[i+1]!='|')||(str[i+1]!='&')||(str[i+1]!='-')||(str[i+1]!='=')||(str[i+1]!=')')||(str[i+1]!=' '))
break;
i++;
}while(i<100,(str[i]>='A'&&str[i]<='Z'));
if(i=100) l=1;
i=0;
do
{
sum--;
if((str[i+1]!=')')||(str[i+1]!='|')||(str[i+1]!='&')||(str[i+1]!='-')||(str[i+1]!='=')||(str[i+1]!=' '))
break;
i++;
}while(i<100,(str[i]==')'));
if(i=100) m=1;
i=0;
do
{
if((str[i+1]'Z')||(str[i+1]='(')&&(str[i+1]!=' '))
break;
i++;
}while(i<100,str[i]=='*');
if(i=100) n=1;
i=0;
if((j==1)&&(k==1)&&(l==1)&&(m==1)&&(n==1))
printf("您输入的命题公式是合式公式\n");
else
printf("您输入的命题公式不是合式公式\n");
}
编译没问题,但结果有问题,求找错