1 #include2 main() 3 { 4 int i=0,j=0,x=0,y; 5 int number=2; 6 int count=0; 7 char ch; 8 char a[100][100]; 9 printf("请输入正规式以#结束 :\n");10 printf("^代表空\n");11 printf("|代表或\n");12 ch=getchar();13 do14 {15 if(ch=='|') 16 {17 a[i][j]='\0';18 j=0;19 i++;20 ch=getchar();21 continue;22 }23 a[i][j]=ch;24 j++;25 ch=getchar();26 }while(ch!='#');27 a[i][j]='\0';28 for(x=0;x<=i;x++)29 {30 y=0;31 count=1;32 while(a[x][y]!='\0')33 {34 if(a[x][y]=='.')35 {36 37 if(a[x][y]=='.'&& count==1) 38 {39 printf("f(0,%c)=%d\n",a[x][y-1],number);40 if(a[x][y+2]=='\0')41 printf("f(%d,%c)=1\n",number,a[x][y+1]);42 number++;43 count=2;44 }45 46 else if(a[x][y]=='.'&& count!=1)47 {48 49 printf("f(%d,%c)=%d\n",number-1,a[x][y-1],number);50 if(a[x][y+2]=='\0')51 printf("f(%d,%c)=1\n",number,a[x][y+1]);52 number++;53 }54 }55 if(a[x][y]=='*')56 {57 if(a[x][y]=='*'&& count==1)58 {59 printf("f(0,^)=%d\n",number);60 printf("f(%d,%c)=%d\n",number,a[x][y-1],number);61 if(a[x][y+1]=='\0')62 printf("f(%d,^)=1\n",number);63 else64 printf("f(%d,^)=%d\n",number,number+1);65 number++;66 count=2;67 }68 69 else if(a[x][y]=='*'&& count!=1)70 {71 72 printf("f(%d,%c)=%d\n",number,a[x][y-1],number);73 if(a[x][y+1]=='\0')74 printf("f(%d,^)=1\n",number);75 else76 printf("f(%d,^)=%d\n",number,number+1);77 number++;78 }79 }80 y++;81 }82 }83 84 }