#include<stdio.h>
#include<string>
char
str[10];
//记录要分析的字符串
int
x=0;
//记录第一个字符
void
E();
void
X();
void
T();
void
Y();
void
F();
int
main()
{
int
len;
printf(
"请输入算数表达式:"
);
scanf(
"%s"
,str);
len=strlen(str);
str[len]=
'#'
;
str[len+1]=
'\0'
;
E();
printf(
"\nTrue!\n"
);
strcpy(str,
""
);
x=0;
return
0;
}
void
E()
{
T();
X();
}
void
X()
{
if
(str[x]==
'+'
||str[x]==
'-'
)
{
x++;
T();
X();
}
}
void
T()
{
F();
Y();
}
void
Y()
{
if
(str[x]==
'*'
||str[x]==
'/'
)
{
x++;
F();
Y();
}
}
void
F()
{
if
(str[x]>=
'a'
&&str[x]<=
'z'
)
{
x++;
}
else
if
(str[x]>=0&&str[x]<=9)
{
x++;
}
else
if
(str[x]==
'('
)
{
x++;
E();
if
(str[x]==
')'
)
{
x++;
}
else
{
printf(
"\nError!\n"
);
exit(0);
}
}
else
{
printf(
"\nError!\n"
); exit(0); } }
|
结果如下: