中堂镇做网站/百度快照收录

中堂镇做网站,百度快照收录,网站双链接怎么做,wordpress用户id本章内容使用上述栈结构函数,来完成表达式求值操作。 表达式例如:3*(7-2) 或者 (0-12)*((5-3)*32)/(22) 。 1、实现思路 a、建立OPTR(运算符)和OPND(数字)两个栈,后输入字符串以结束 b、自左向…

本章内容使用上述栈结构函数,来完成表达式求值操作。

表达式例如:3*(7-2)  或者 (0-12)*((5-3)*3+2)/(2+2) 。

1、实现思路

        a、建立OPTR(运算符)和OPND(数字)两个栈,后输入字符串以'='结束

        b、自左向右扫描表达式

                若读取到数字,直接压入操作数栈,继续处理下一个字符;
                若读取到运算符,比较栈顶算符与读取的算符的优先级:
                            栈顶算符 < 读取的算符

                                将读取的算符压入栈,继续处理下一个字符;
                            栈顶算符 > 读取的算符

                                栈顶算符出栈,从操作数栈中取出两数字,                                                                                       根据出栈算符做运算,运算结果再压入操作数栈,继续处理当前字符;
                            栈顶算符 == 读取的算符

                                  栈顶算符出栈,括号出栈不保存,继续处理下一个字符;


           c、 结束条件是算符栈已空,最后操作数栈出栈输出计算结果。

2、运算符关系表

例如:

        3*(7-2) 

        

         

             

            

        

     

    

   

   

      

        

3、代码实现

        3.1、定义全局数组存放合法的运算符

static char opts[] = {'+','-','*','/','(',')','\n'};

        3.2、实现函数判断当前字符是不是运算符        

// 定义函数,判断当前的字符是不是运算符,如果是返回在运算符数组中的下标,如果不是返回-1 
int isOpt(const char ch)
{	int len = sizeof(opts) / sizeof(char);int i;for(i=0;i<len;i++){if(opts[i] == ch){return i;}}return -1;	
} 

        3.3、实现函数判断栈顶运算符和当前输入运算符的关系

// 定义函数获取栈顶运算符和当前输入运算符之间的关系
char Precede(SElemType ch1,SElemType ch2)
{// 根据运算符优先级表格,使用二维数组存储字符之间的关系 static char optsRelationArr[7][7] = {{'>','>','<','<','<','>','>'},{'>','>','<','<','<','>','>'},{'>','>','>','>','<','>','>'},{'>','>','>','>','<','>','>'},{'<','<','<','<','<','=',-1},		{'>','>','>','>',-1,'>','>'},		{'<','<','<','<','<',-1,'='}};// 获取两个字符的排序下标 int idx1 = isOpt(ch1);int idx2 = isOpt(ch2);// 字符不存在直接返回-1 if(idx1 < 0 || idx2 < 0)  return -1; // 合法返回对应关系return optsRelationArr[idx1][idx2]; 
}

        ​​​​3.4、实现函数根据运算符求+-*/结果                

// 定义函数进行算数运算
SElemType Operator(SElemType a,SElemType x,SElemType b) 
{switch(x){case '+':return a + b;case '-':return a - b;case '*':return a * b;case '/':return a / b;	}
}

        3.5、实现函数求表达式的结果

SElemType EvalueExpression()
{// 定义操作数栈和运算符栈SqStack OPND,OPTR;// 定义变量存储 计算中的两个数据SElemType a,b;// 定义变量存储数据出现多位数据的运算中间量  12  45这类操作数SElemType d;// 定义变量存储 运算栈栈顶字符SElemType x;// 定义变量存储用户输入的字符符号char c;	// 初始化操作数栈和运算符栈InitStack(&OPND);InitStack(&OPTR);// 现象运算符栈中添加\n作为运算结束Push(&OPTR,'\n');x = '\n';// 接收一个字符c = getchar();	// 循环结束数据并运算 // 结束条件为 ,循环条件为相反面: !(c=='\n' && x=='\n') while(!(c=='\n' && x=='\n')) {			if(isOpt(c) >= 0){			// c为运算符 ,比较x和c的大小char res = Precede(x,c);switch(res) {case '<':// 当前运算符入栈Push(&OPTR,c); // 继续接收下一个字符输入//scanf(" %c",&c);c = getchar();		// 结束匹配break;case '=':// 移除运算符栈顶的运算符  () 和 \n和\n相遇Pop(&OPTR,&x);// 继续接收下一个字符输入//scanf(" %c",&c);	c = getchar();	// 结束匹配break;case '>':// 移除运算符栈顶的运算符Pop(&OPTR,&x);// 移除操作数栈栈顶两个数据Pop(&OPND,&b);Pop(&OPND,&a);// 计算后结果入栈Push(&OPND,Operator(a,x,b));// 结束匹配 break;}}else if(c >= '0' && c <= '9'){			d = 0;// c为数字字符 -- 注意处理多个数字字符组合成一个数字的情况while(c >= '0' && c <= '9'){d = d * 10 + c - '0';// scanf(" %c",&c);	c = getchar();	}// 接收完毕将数据入栈					Push(&OPND,d);} 	else{			// 非法字符printf("出现非法字符\n");exit(OVERFLOW); } // 获取运算符栈顶数据,继续下一轮的运算 GetTop(OPTR,&x);}/***** 运算结束  *******/ // 移除操作数栈 栈顶元素Pop(&OPND,&x);// 如果操作栈为空则结果为栈顶元素,否则表达式不正确if(!StackEmpty(OPND)){		printf("表达式有问题\n");exit(OVERFLOW);} return x;	 
} 

          3.6、main函数测试结果        

int main(int argc, char *argv[]) {printf("请输入算数表达式,负数用(0-正数)表示:"); SElemType res = EvalueExpression();printf("%d",res);	return 0;
}

        

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/65387.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【递归与回溯深度解析:经典题解精讲(下篇)】—— Leetcode

文章目录 有效的数独解数独单词搜索黄金矿工不同的路径||| 有效的数独 递归解法思路 将每个数独的格子视为一个任务&#xff0c;依次检查每个格子是否合法。 如果当前格子中的数字违反了数独规则&#xff08;在行、列或 33 小方块中重复&#xff09;&#xff0c;直接返回 Fals…

Llama 3 预训练(二)

目录 3. 预训练 3.1 预训练数据 3.1.1 网络数据筛选 PII 和安全过滤 文本提取与清理 去重&#xff08;De-duplication&#xff09; 启发式过滤&#xff08;Heuristic Filtering&#xff09; 基于模型的质量过滤 代码和数学推理数据处理 多语言数据处理 3.1.2 确定数…

双指针——查找总价格为目标值的两个商品

一.题目描述 LCR 179. 查找总价格为目标值的两个商品 - 力扣&#xff08;LeetCode&#xff09; 二.题目解析 这个题目非常简单&#xff0c;其实就是判断有没有两个数加起来等于target。 三.算法解析 1.暴力解法 暴力解法的话我们可以枚举出所有的情况&#xff0c;然后判…

sqlserver镜像设置

本案例是双机热备&#xff0c;只设置主体服务器&#xff08;主&#xff09;和镜像服务器&#xff08;从&#xff09;&#xff0c;不设置见证服务器 设置镜像前先检查是否启用了 主从服务器数据库的 TCP/IP协议 和 RemoteDAC &#xff08;1&#xff09;打开SQL Server配置管理器…

Elasticsearch:analyzer(分析器)

一、概述 可用于将字符串字段转换为单独的术语&#xff1a; 添加到倒排索引中&#xff0c;以便文档可搜索。级查询&#xff08;如 生成搜索词的 match查询&#xff09;使用。 分析器分为内置分析器和自定义的分析器&#xff0c;它们都是由若干个字符过滤器&#xff08;chara…

ElementPlus 自定义封装 el-date-picker 的快捷功能

文章目录 需求分析 需求 分析 我们看到官网上给出的案例如下&#xff0c;但是不太满足我们用户想要的快捷功能&#xff0c;因为不太多&#xff0c;因此需要我们自己封装一些&#xff0c;方法如下 外部自定义该组件的快捷内容 export const getPickerOptions () > {cons…

低代码开发平台排名2024

低代码开发平台在过去几年中迅速崛起&#xff0c;成为企业数字化转型的重要工具。这些平台通过可视化界面和拖放组件&#xff0c;使业务人员和技术人员都能快速构建应用程序&#xff0c;大大缩短了开发周期。以下是一些在2024年值得关注和使用的低代码开发平台。 一、Zoho Cre…

计算机网络——期末复习(4)协议或技术汇总、思维导图

思维导图 协议与技术 物理层通信协议&#xff1a;曼彻斯特编码链路层通信协议&#xff1a;CSMA/CD &#xff08;1&#xff09;停止-等待协议&#xff08;属于自动请求重传ARQ协议&#xff09;&#xff1a;确认、否认、重传、超时重传、 &#xff08;2&#xff09;回退N帧协…

【MySQL学习笔记】关于索引

文章目录 【MySQL学习笔记】关于索引1.索引数据结构2.索引存储3.联合索引3.1 联合索引的b树结构3.2 索引覆盖&#xff1f;回表&#xff1f;3.3 联合索引最左匹配原则3.5 索引下推 4.索引失效 【MySQL学习笔记】关于索引 1.索引数据结构 索引是一种能提高查询速度的数据结构。…

D104【python 接口自动化学习】- pytest进阶参数化用法

day104 pytest参数化parametrize单参数 学习日期&#xff1a;20241223 学习目标&#xff1a;pytest基础用法 -- pytest参数化parametrize单参数 学习笔记&#xff1a; 参数化 parametrize 参数化可以组装测试数据&#xff0c;在测试前定义好测试数据&#xff0c;并在测试用…

第T4周:TensorFlow实现猴痘识别(Tensorboard的使用)

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 目标&#xff1a; 1、学习tensorboard的使用 具体实现&#xff1a; &#xff08;一&#xff09;环境&#xff1a; 语言环境&#xff1a;Python 3.10 编 译 器…

Docker-构建自己的Web-Linux系统-镜像webtop:ubuntu-kde

介绍 安装自己的linux-server,可以作为学习使用&#xff0c;web方式访问&#xff0c;基于ubuntu构建开源项目 https://github.com/linuxserver/docker-webtop安装 docker run -d -p 1336:3000 -e PASSWORD123456 --name webtop lscr.io/linuxserver/webtop:ubuntu-kde登录 …

小米路由器开启SSH,配置阿里云ddns,开启外网访问SSH和WEB管理界面

文章目录 前言一、开启SSH二、配置阿里云ddns1.准备工作2.创建ddns脚本3.添加定时任务 三、开启外网访问SSH和WEB管理界面1、解除WEB管理页面访问限制2.手动添加防火墙端口转发规则&#xff0c;开启外网访问WEB管理和SSH 前言 例如&#xff1a;随着人工智能的不断发展&#xf…

什么是ESC ---- 防止车辆打滑并提高驾驶时稳定性的技术

我是穿拖鞋的汉子&#xff0c;魔都中坚持长期主义的汽车电子工程师。 老规矩&#xff0c;分享一段喜欢的文字&#xff0c;避免自己成为高知识低文化的工程师&#xff1a; 所谓鸡汤&#xff0c;要么蛊惑你认命&#xff0c;要么怂恿你拼命&#xff0c;但都是回避问题的根源&…

LinkedList类 (链表)

目录 一. LinkedList 基本介绍 二. LinkedList 中的法及其应用 1. 添加元素 (1) add() (2) addAll() (3) addFirst() (4) addLast() 2. 删除元素 (1) remove() (2) removeAll() (3) removeFirst() (4) removeLast() 3. 遍历元素 (1) for 循环遍历 (2) for - each …

复习打卡大数据篇——Hadoop MapReduce

目录 1. MapReduce基本介绍 2. MapReduce原理 1. MapReduce基本介绍 什么是MapReduce MapReduce是一个分布式运算程序的编程框架&#xff0c;核心功能是将用户编写的业务逻辑代码和自带默认组件整合成一个完整的分布式运算程序&#xff0c;并发运行在Hadoop集群上。 MapRed…

Java基础知识(四) -- 面向对象(下)

1.类变量和类方法 1.1 类变量背景 有一群小孩在玩堆雪人,不时有新的小孩加入,请问如何知道现在共有多少人在玩? 思路分析: 核心在于如何让变量count被所有对象共享 public class Child {private String name;// 定义静态变量(所有Child对象共享)public static int count 0;p…

SpringBoot中使用TraceId进行日志追踪

**查询日志的痛点&#xff1a;**项目中每当我们查询日志的时候都是看前端请求什么接口&#xff0c;根据一些关键字进入服务器查询日志中是否有这个关键字&#xff0c;然而这个关键字在日志里面并不是唯一的&#xff0c;所以要生成一个唯一的标识&#xff0c;每一次请求都是唯一…

C++类与对象上

1.面向过程和面向对象初步认识 C语言是面向过程的&#xff0c;关注的是过程&#xff0c;分析出求解问题的步骤&#xff0c;通过函数调用逐步解决问题 例如洗衣服&#xff1a; C是基于面向对象的&#xff0c;关注的是对象&#xff0c;讲一件事拆分成不同的对象&#xff0c;靠对…

向量组学习

向量组的秩及其线性组合 线性相关性 先看a1,a2 如果这两个向量不对应成比例的话,那必然内部不可能存在多余的向量,也就是无关. 主元所在的列都是独立向量 ,最大无关组就是b1,b2,b4,但这个是初等行变换后的,题目要的是A的,与之对应的就是a1,a2,a4 方程组解的结构