当前位置: 首页 > news >正文

安徽住房与城乡建设部网站网站设计作品案例讲解

安徽住房与城乡建设部网站,网站设计作品案例讲解,wordpress 缩略图 剪裁 位置,wordpress 重复点赞中缀表达式 中缀表达式#xff08;中缀记法#xff09;是一个通用的算术或逻辑公式表示方法#xff0c;操作符是以中缀形式处于操作数的中间#xff08;例#xff1a;3 4#xff09;#xff0c;中缀表达式是人们常用的算术表示方法。 前缀或后缀记法不同的是#xf…中缀表达式 中缀表达式中缀记法是一个通用的算术或逻辑公式表示方法操作符是以中缀形式处于操作数的中间例3 4中缀表达式是人们常用的算术表示方法。 前缀或后缀记法不同的是中缀记法中括号是必需的。计算过程中必须用括号将操作符和对应的操作数括起来用于指示运算的次序。 后缀表达式 逆波兰表示法Reverse Polish notationRPN或逆波兰记法是一种是由波兰数学家扬·武卡谢维奇1920年引入的数学表达式方式在逆波兰记法中所有操作符置于操作数的后面因此也被称为后缀表示法。逆波兰记法不需要括号来标识操作符的优先级。 中缀表达式转后缀表达式 中缀转后缀思路 初始化两个栈运算符栈S1操作数栈S2从左向右扫描中缀表达式遇到操作数时将其压入到操作数栈S2遇到运算符时比较其与运算符栈S1栈顶运算符的优先级如果运算符栈S1为空或栈顶运算符为左括号“ ( ”或者优先级比栈顶运算符的优先级较高则直接将此运算符压入栈中否则将运算符栈S1中栈顶的运算符弹入并压到操作数栈S2中再次进行与运算符栈S1栈顶运算符的优先级比较遇到括号时如果遇到了左括号“ ( ”则直接压入运算符栈S1如果遇到右括号“ ) ”则依次弹出运算符栈S1栈顶的运算符并压入操作数栈S2直到遇到左括号 ( 为止此时将这一对括号丢弃重复步骤2至8直到表达式的最右边将运算符栈S1剩余的运算符依次弹出并压入操作数栈S2拼接操作数栈S2中的元素并输出结果即为中缀表达式所对应的后缀表达式 中缀转后缀图示 下图是以9-2*3(5-2)*2为例子的完整过程。 中缀转后缀流程图 中缀转后缀代码分析 主函数 先初始化一下需要转化为后缀记法的字符串然后给一个用来存储后缀表达式的数组假设中缀转后缀的函数为MidtoLast给这个函数传入中缀表达式的字符数组midstr以及存储后缀表达式的字符数组laststr int main() {char midstr[] 9-2*3(5-2)*2;//中缀表达式printf(中缀表达式为%s\n, midstr);char laststr[100];//后缀表达式MidtoLast(laststr, midstr);printf(后缀表达式为%s\n, laststr);return 0; } 遇到操作数 遍历整个中缀字符串数组遇到数字字符就直接进行存储这里我们利用isdigit函数来判断是否数字字符在下面相关总结的部分会为大家详细讲解函数的使用方式这里只先需要知道它的头文件是#include ctype.h for (int i 0; midstr[i] ! \0;)//i有的情况是不的 {if (isdigit(midstr[i]))//数字字符直接放到后缀表达式里{laststr[j] midstr[i];} } 遇到运算符 在遇到运算符的时候遇到第一个操作符就直接压入栈中根据优先级来判断是谁先出栈谁后出栈“*”“/”的优先级高于“”“-”的优先级 遇到括号 并且在遇到操作符不是“)”想要进栈并且栈顶是“(”就直接压入栈中 for (int i 0; midstr[i] ! \0;)//i有的情况是不的 {else if ( top 0 ||midstr[i] ( ||(midstr[i] * || midstr[i] /) (mystack[top - 1] || mystack[top - 1] -) || mystack[top - 1] ( midstr[i] ! )){mystack[top] midstr[i];} } 出栈 遇到“)”并且栈顶元素为“(”则直接抵消 for (int i 0; midstr[i] ! \0;)//i有的情况是不的 {else if (midstr[i] ) mystack[top - 1] ()//直接抵消{i;top--;} } 剩余运算符全部出栈 将栈中的剩余元素都全部依次出栈 else//直接出栈 {laststr[j] mystack[--top]; }while (top 0) {laststr[j] mystack[--top]; }laststr[j] \0;//变为字符串 中缀转后缀完整代码 #include stdio.h #include ctype.hvoid MidtoLast(char* laststr, const char* midstr) {int j 0;//后缀表达式char mystack[100];//模拟栈int top 0;//栈顶指针当前可以存放数据的下标for (int i 0; midstr[i] ! \0;)//i有的情况是不的{if (isdigit(midstr[i]))//数字字符直接放到后缀表达式里laststr[j] midstr[i];else if (top 0 ||midstr[i] ( ||(midstr[i] * || midstr[i] /) (mystack[top - 1] || mystack[top - 1] -) ||mystack[top - 1] ( midstr[i] ! ))mystack[top] midstr[i];else if (midstr[i] ) mystack[top - 1] ()//直接抵消{i;top--;}else//直接出栈laststr[j] mystack[--top];}while (top 0){laststr[j] mystack[--top];}laststr[j] \0;//变为字符串 }int main() {char midstr[] 9-2*3(5-2)*2;//中缀表达式printf(中缀表达式为%s\n, midstr);char laststr[100];//后缀表达式MidtoLast(laststr, midstr);printf(后缀表达式为%s\n, laststr);return 0; }相关知识点 isdigit函数 实例 #include stdio.h #include stdlib.h #include ctype.h int main() {char str[] 1776ad;int year;if (isdigit(str[0])){year atoi(str);printf(The year that followed %d was %d.\n, year, year 1);}return 0; }运行结果
http://www.hkea.cn/news/14270459/

相关文章:

  • 广州哪个区最大google企业网站seo
  • 成都那家网站制作公司好钣金外包加工网
  • 吴忠建设局网站银川建网站那家好
  • 自己做网站教程关键词研究工具
  • 建设电动三轮车官方网站建个人网上银行登录入口
  • 网站初期建设宣传深圳酒店网站建设
  • 沧州商贸行业网站建设网站备案视频
  • 凤岗镇网站仿做上海市建设工程咨询网
  • 做a短视频网站中国企业信用网站官网
  • 国外网站 备案吗18.ppt网站是谁做的
  • 深圳cms建站模板做外汇网站卖判刑多少年
  • 网站底部广告代码网站建设的知识和技能
  • 网站开发心得成都到西安开车要多久
  • 域名申请哪个网站好宾县建设局网站
  • 网站源码怎么做网站wordpress 零售电商
  • 做文献综述的文章用什么网站重庆网站制作有名 乐云践新
  • 购物车功能网站怎么做的wordpress会员计时
  • 制作一个网站需要多长时间网站建设招标文件
  • 网站二级目录做优化商业计划书ppt免费模板下载
  • 蓝色清爽网站wordpress企业站主题下载
  • 怎么做网站啊网站网页能自己做吗
  • 做明星同款的网站上海公共招聘网官网下载
  • 淘宝api接口实现wordpress湖北seo优化诊断
  • 建旅游网站的意义广州建站网站
  • 湖南建立网站营销设计商务网站建设公司排名
  • 长春商城网站开发wordpress 数据库搜索
  • 如何建设阿里巴巴网站wordpress4.7中文主题
  • 功能型类的网站人和做网站
  • 建设银行 上海科技中心网站制作网页需要什么专业
  • 海曙网站建设哪家好网站开发 加密保护