#include<stdio.h> #include<string> #define N 20 char str[N]; int i=0; int k=0; void E(); void X(); void T(); void Y(); void F(); main() { int m; strcpy(str,""); while(str[0]!='#') { printf("请输入算数表达式:<以#号结束,输入#退出>\n"); for(m=0;m<N;m++) { scanf("%c",&str[m]); if(str[m]=='#') break; } str[m+1]='\0'; E(); if(k==0) { printf("正确语句!\n"); } i=0; k=0; } } void E() { T(); X(); } void X() { if(str[i]=='+'||str[i]=='-') { i++; T(); X(); } } void T() { F(); Y(); } void Y() { if(str[i]=='*'||str[i]=='/') { i++; F(); Y(); } } void F() { if(str[i]=='i') { i++; } else if (str[i]=='(') { i++; E(); if(str[i]==')') { i++; }else{ if(k==0) { printf("\n分析失败!\n"); k=1; } } } else{ if(k==0) { printf("分析失败!\n"); k=1; } } }