- 1、本文档共6页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
表达式求值C
要是没人回答的话 周末给你找找看 以前写过不知道还在不
运行
按1输入表达式(不用输入=号)
按2计算
按3输出结果
按4退出
程序如下:
#includestdio.h
#include string.h
#include conio.h
#define PLUS 0
#define MINUS 1
#define POWER 2
#define DIVIDE 3
#define LEFTP 4
#define RIGHP 5
#define STARTEND 6
#define DIGIT 7
#define POINT 8
#define NUM 7
#define NO 32767
#define STACKSIZE 20
char a[]={+,-,*,/,(,),#};
int j,PriorityTable[7][7]={{ 1, 1,-1,-1,-1, 1, 1},
{ 1, 1,-1,-1,-1, 1, 1},
{ 1, 1, 1, 1,-1, 1, 1},
{ 1, 1, 1, 1,-1, 1, 1},
{-1,-1,-1,-1,-1, 0, NO},
{ 1, 1, 1, 1,NO, 1, 1},
{-1,-1,-1,-1,-1,NO, 0}
};
int menu(void);
void
InputExpression(char str[])
{ int len;
printf(Input expression string:\n);
scanf(%s,str);
len=strlen(str);
str[len]=#;
str[len+1]=\0;
}
int GetCharType(char ch)
{ int i;
for(i=0;iNUM;i++) if(ch==a[i]) return(i);
if(ch=0 ch=9) return(DIGIT);
if(ch==.) return(POINT);
return(-1);
}
int EXCUTE(char *str,double *Result)
{
int pp,strlength,topTr,topNd,CharType,OPTR[STACKSIZE],a;
double number,temp,OPND[STACKSIZE];
OPTR[0]=STARTEND;
topTr=1;
topNd=0;
pp=0;
while((str[pp]))
{ CharType=GetCharType(str[pp]);
switch(CharType)
{ case -1:
return(0);
case DIGIT:
number=0;
while
(str[pp]=0 str[pp]=9)
{ number=number*10+(str[pp]-48);
pp++;
}
if(str[pp]==.)
{ temp=10.0;
pp++;
while(str[pp]=0 str[pp]=9)
{ number=number+(str[pp]-48)/temp;
temp=temp*10;
pp++;
}
}
OPND[topNd]=number;
topNd++;
break;
case POINT:
number=0;
temp=10.0;
pp++;
while(str[pp]=0 str[pp]=9)
{ number=number+(str[pp]-48)/temp;
temp=temp*10;
文档评论(0)