算术表达式求值运算实验指导书

2026/1/13 12:56:24

if(ch=='.') return(POINT); return(-1); }

/*************************************************/ /* 表达式计算 */ /*************************************************/ /* 输入参数:char *str,表达式字符串 */ /* 输出参数:double *Result,表达式计算结果 */ /* 函数返回值:1 计算正确 */ /* 0 表达式有错 */ /*************************************************/ int EXCUTE(char *str,double *Result) {

int pp,strlength,topTr,topNd,CharType,OPTR[STACKSIZE]; 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; pp++; }

OPND[topNd]=number; topNd++; break;

case PLUS: //+ case MINUS: //- case POWER: //* case DIVIDE: /// (学生自己完成) case LEFTP: //( (学生自己完成)

case RIGHP: //)

(学生自己完成)

case STARTEND: //遇到表达式结束符 (学生自己完成) if(topNd==1)

{ *Result=OPND[0]; return(1); }

else return(0); } } return(1); } void main() { int num,flag;

double result; char str[256]; str[0]=0; while(1) { num=menu(); switch(num) {

case 1: //输入表达式 InputExpression(str); flag=0;

printf(\ getchar(); break;

case 2: //计算表达式 if(str[0]==0)

{ printf(\

getchar(); }

{ printf(\ getchar(); break;

if(!eccute(str,&result))

} else

{ printf(\ getchar(); flag=1; } break;

case 3: //打印计算结果 if(flag)

{ printf(\

getchar(); }

break;

case 4: //退出系统 break; }

if(num==4) break; } }

int menu(void) { int num; clrscr();

printf(\ printf(\ printf(\ printf(\

printf(\ do{

scanf(\ }while(num<1 || num>4); return(num); }


算术表达式求值运算实验指导书.doc 将本文的Word文档下载到电脑
搜索更多关于: 算术表达式求值运算实验指导书 的文档
相关推荐
相关阅读
× 游客快捷下载通道(下载后可以自由复制和排版)

下载本文档需要支付 10

支付方式:

开通VIP包月会员 特价:29元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:xuecool-com QQ:370150219