#include<stdio.h>
#define MAX 20
main()
{
int i=0,j=0,k,l,m,n,number;
char ch;
char a[MAX][MAX];
printf("请输入正规式:");
ch=getchar();
while(ch!='\n')
{
if(ch=='/')
{
a[i][j]='\0';
j=0;
i++;
ch=getchar();
continue;
}
a[i][j]=ch;
j++;
ch=getchar();
}
a[i][j]='\0';
number=2;
for(k=0;k<=i;k++)
{
l=0;
m=1;
while(a[k][l]!='\0')
{
if(a[k][l]=='.'||a[k][l]=='*')
{
if(a[k][l]=='.'&&m==1)
{
m++;
printf("f(0,%c)=%d\n",a[k][l-1],number);
if(a[k][l+2]=='\0')
printf("f(%d,%c)=1\n",number,a[k][l+1]);
number=number+1;
}
else if(a[k][l]=='.'&&m!=1)
{
m++;
printf("f(%d,%c)=%d\n",number-1,a[k][l-1],number);
if(a[k][l+2]=='\0')
printf("f(%d,%c)=1\n",number,a[k][l+1]);
number=number+1;
}
else if(a[k][l]=='*'&&m==1)
{
m++;
printf("f(0,~)=%d\n",number);
printf("f(%d,%c)=%d\n",number,a[k][l-1],number);
if(a[k][l+1]=='\0')
printf("f(%d,~)=1\n",number);
else
printf("f(%d,~)=%d\n",number,number+1);
number=number+1;
}
else if(a[k][l]=='*'&&m!=1)
{
m++;
printf("f(%d,%c)=%d\n",number,a[k][l-1],number);
if(a[k][l+1]=='\0')
printf("f(%d,~)=1\n",number);
else
printf("f(%d,~)=%d\n",number,number+1);
number=number+1;
}
}
l++;
}
}
}
![]()
![]()