实验
报告
软件系统测试报告下载sgs报告如何下载关于路面塌陷情况报告535n,sgs报告怎么下载竣工报告下载
课程名:数据结构(C语言版)实验名:
表
关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf
达式求值班级:学号:时间:2014.10.25一实验目的与要求了解栈的应用利用栈进行算术表达式求值二实验内容以字符串的形式给出一个算术表达式,计算出该算术表达式的值表达式中可能出现””””,”三实验结果与
分析
定性数据统计分析pdf销售业绩分析模板建筑结构震害分析销售进度分析表京东商城竞争战略分析
分析:r:读入字符t:栈顶字符r()#低优先运算符咼优先运算符(入栈出栈错误入栈入栈)错误错误错误错误错误t#入栈错误结束入栈入栈低优先运算符入栈出栈+运算出栈+计算出栈+计算入栈高优先运算符入栈出栈+运算出栈+计算出栈+计算出栈+计1,入栈2,错误出栈出栈+计算结束()#低优先运算符咼优先运算符(13211)22222#12511低优先运算符14441高优先运算符14444此实验可用两个栈和数组来实现,一个操作栈,一个数字栈,两个栈的字符进行优先权比较可得到5种结果。首先置操作栈为空栈,表达式起始符#”作为数字栈的栈底元素,依次读入表达式的每个字符,若是操作字符进操作栈,若是数字进数字栈,操作栈和数字栈的栈顶元素比较优先权后进行相应操作,直至结束,最后输出值即可。实验程序:#include
#include#includevstring.h>intchange(charc)〃字符转换{intj=-1;switch(c){case'(':j=O;break;case')':j=1;break;case#:j=2;break;case'+':j=3;break;case'-':j=3;break;case'*':j=4;break;case7':j=4;break;}return(j);}数字计算转换intcompu(intx,inty,charc)//intj=-1;switch(c){case'+':j=x+y;break;case'-':j=x-y;break;case'*':j=x*y;break;case7':j=x/y;break;}return(j);}voidget(chara[],intnum_op,intmethod[5][5]){inta_length=strlen(a)+1;〃表达式的长度intp=0,num_p=0,op_p=0;int*num_s=(int*)malloc((a_length)*sizeof(int));//char*op_s=(char*)malloc((a_length)*sizeof(int));//op_s[op_p]=#;op_p++;//进字符栈intk=-1;//输出结果判断intox,oy;while(1)charc=a[p];〃将表达式中的字符一个一个赋值给cif(c>='0'&&c<='9')〃判断是不是数字{num_s[num_p]=c-48;〃将Ascii码转换成对应数字num_p++;〃进数字栈p++;〃代表表达式的位置开始为0指向第一位}else{intt=method[change(op_s[op_p-1])][change(c)];//作的一种传给tswitch(t){case1:op_s[op_p]=c;op_p++;p++;break;case2:k=0;break;case3:op_p--;p++;break;case4:ox=num_s[num_p-2];oy=num_s[num_p-1];num_p=num_p-2;将5种操将计算的值num_s[num_p]=compu(ox,oy,op_s[op_p-1]);〃存入num_s[]num_p++;〃入数字栈op_p--;break;case5:k=1;break;}}if(k>=0)〃跳出循环{break;}}switch(k)//0错误,1输出结果{case0:printf("表达式错误!");break;case1:printf("%s=%d\n",a,num_s[num_p-1]);break;}}intmain(intargc,char*argv[]){chara[20];puts("请输入个位数的表达式:");gets(a);intnum_op=5;〃表示操作的种数intmethod[5][5]={{1,3,2,1,1},{222,2,2},{125,1,1},{1,4,4,4,1},{1,4,4,4,4}};//1表示入栈,2表示错误,〃3表示出栈,4表示出栈+计算,//5表示结束get(a,num_op,method);return0;}TC:\Users\AdministratorXDesktop'JSEl结旳---\Debug\^达弍求直启xe"请输入个位数的表达式:2*2+2/l-2*2tt2*2+2/l-2*2ft=-2图1•表达式求值运行结果