建手机网站教程百度seo优化软件

pingmian/2025/10/12 1:10:20/文章来源:
建手机网站教程,百度seo优化软件,温州设计集团,广州新建站点击 C 语言编程核心突破 快速C语言入门 通过中缀表达式转换后缀表达式, 用C语言完成一个简单的计算器 前言一、中缀表达式和后缀表达式 (AI辅助)二、中缀转后缀规则及后缀运算规则 (AI辅助)总结 前言 要解决问题: 在练习用Qt完成一个简单的计算器时, 需要将一个文本… 点击 C 语言编程核心突破 快速C语言入门 通过中缀表达式转换后缀表达式, 用C语言完成一个简单的计算器 前言一、中缀表达式和后缀表达式 (AI辅助)二、中缀转后缀规则及后缀运算规则 (AI辅助)总结 前言 要解决问题: 在练习用Qt完成一个简单的计算器时, 需要将一个文本计算式转换为C语言可使用的模式, 即后缀表达式, 规则还是挺繁复的. 想到的思路: 查文档, 了解中缀表达式转换为后缀表达式. 其它的补充: 需要用到栈, 这个基本功一定要扎实. 一、中缀表达式和后缀表达式 (AI辅助) 中缀表达式是指常见的数学表达式如 2 3 * 4 - 5其中运算符位于操作数之间。 中缀表达式通常需要通过加入括号来明确运算顺序。 后缀表达式也称为逆波兰表达式是一种不需要括号的表达式表示方式其中运算符位于其相应的操作数之后。 例如上述中缀表达式的后缀形式为 2 3 4 * 5 - 在计算机科学中后缀表达式比中缀表达式更容易被计算机算法处理和计算因为它们没有嵌套括号的优先级问题。 因此在编写计算机程序解析表达式时通常会将中缀表达式转换为等效的后缀表达式以便更轻松地处理它们。 二、中缀转后缀规则及后缀运算规则 (AI辅助) 在后缀表达式中运算符总是在它们所操作的两个操作数之后出现。 例如对于后缀表达式 “3 4 5 *”运算规则如下 先将操作数 3 和 4 压入栈中。 遇到 “” 运算符弹出栈顶的 3 和 4 进行加法运算结果为 7再将结果 7 压入栈中。 遇到操作数 5将其压入栈中。 遇到 “*” 运算符弹出栈顶的 7 和 5 进行乘法运算结果为 35再将结果 35 压入栈中。 后缀表达式中的所有元素都被处理后栈中只剩下一个元素 35即为后缀表达式的计算结果。 具体规则见代码注释: #include ctype.h #include stdio.h #include stdlib.h #include string.h// 节点 struct node {int flag;int value;struct node *next; };// 栈 typedef struct node *Stack;// 压栈 void push(Stack *stack, int flag, int value) {struct node *head malloc(sizeof(struct node));head-flag flag;head-value value;head-next *stack;*stack head; }// 出栈 int pop(Stack *stack) {int rest (*stack)-value;Stack temp *stack;*stack (*stack)-next;free(temp);return rest; }// 判断栈是否为空 int empty(Stack *stack) {return (*stack) NULL; }// 栈顶元素 int top(Stack *stack) {int rest (*stack)-value;return rest; }// 栈顶flag int topFlag(Stack *stack) {return (*stack)-flag; }// 释放栈 void freeStack(Stack *stack) {while (*stack){struct node *head *stack;*stack (*stack)-next;free(head);} }// 反转栈 void reverse(Stack *stack) {if (!(*stack)){return;}Stack head;Stack tail NULL;while (*stack){head *stack;*stack (*stack)-next;head-next tail;tail head;}*stack head; }// 返回优先级 int priority(char operate) {switch (operate){case :case -:return 1;case *:case /:case %:return 2;default:return 0;} }// 判断操作符 int isOperator(char operator) {return (operator || operator - || operator * || operator/ ||operator %); }// 判断左括号 int isLeftParenthesis(char operator) {return operator (; }// 判断右括号 int isRightParenthesis(char operator) {return operator ); }// 中缀表达式转后缀表达式的规则如下 void convertToPostfix(char *input, Stack *postfix) {Stack operateStack NULL;static char number[32];// 1.从左到右遍历中缀表达式的每个元素。for (int i 0; input[i] ! \0; i){// 2.如果当前元素是数字则将其加入后缀表达式中。if (isdigit(input[i])){int num 0;while (isdigit(input[i])){number[num] input[i];}number[num] \0;i--;push(postfix, 1, atoi(number));}// 3.如果当前元素是操作符则执行以下步骤// a.如果该操作符是左括号“”则将其加入操作符栈中。else if (isLeftParenthesis(input[i])){push(operateStack, 0, input[i]);}// b.如果该操作符是右括号“”则将操作符栈中的操作符弹出并加入后缀表达式中直到遇到左括号为止。else if (isRightParenthesis(input[i])){while (!isLeftParenthesis((char)top(operateStack))){push(postfix, 0, pop(operateStack));}pop(operateStack);}else if (isOperator(input[i])){// c.如果该操作符的优先级比操作符栈顶操作符的优先级低或相等// 则将操作符栈中的操作符弹出并加入后缀表达式中// 直到不存在比当前操作符优先级高的操作符为止。while (!empty(operateStack) priority(input[i]) priority((char)top(operateStack))){push(postfix, 0, pop(operateStack));}// 将当前操作符加入操作符栈中。// d.如果该操作符的优先级比操作符栈顶操作符的优先级高则将当前操作符加入操作符栈中。push(operateStack, 0, input[i]);}}// 4.当中缀表达式遍历完后将操作符栈中的所有操作符依次弹出并加入后缀表达式中。while (!empty(operateStack)){push(postfix, 0, pop(operateStack));}freeStack(operateStack);reverse(postfix); }// 计算 int calculate(int operand1, int operand2, char operate) {switch (operate){case :return operand1 operand2;case -:return operand1 - operand2;case *:return operand1 * operand2;case /:return operand1 / operand2;case %:return operand1 % operand2;default:return 0;} }// 计算后缀表达式的规则如下 int evaluatePostfix(Stack *postfix) {Stack stack NULL;// 1.从左到右扫描后缀表达式。while (*postfix){// 2.遇到操作数时将其压入操作数栈中。if ((*postfix)-flag){push(stack, 1, pop(postfix));}// 3.遇到运算符时弹出栈顶的两个操作数执行该运算符的计算并将结果压入操作数栈中。else if (!(*postfix)-flag){int operand2 pop(stack);int operand1 pop(stack);int result calculate(operand1, operand2, (char)pop(postfix));push(stack, 1, result);}}// 4.重复上述过程直到后缀表达式中的所有元素都被处理。// 5.最后操作数栈中只剩下一个数即为后缀表达式的计算结果。int result pop(stack);freeStack(stack);return result; }// 打印后缀表达式栈 void printStack(Stack stack) {while (stack){if (stack-flag){printf(%d , stack-value);stack stack-next;}else{printf(%c , stack-value);stack stack-next;}}printf(\n); }// 测试 int main() {char input[128];Stack postfix NULL;printf(请输入含加减乘除、求模及括号的复杂算式);scanf(%s, input);convertToPostfix(input, postfix);printf(后缀表达式为\n);printStack(postfix);int result evaluatePostfix(postfix);printf(计算结果为%d\n, result);freeStack(postfix);return 0; }总结 用C语言对字符串算式做语法分析并得出计算结果, 是很多教材的标准示例, 但并不简单, 属于数据结构和算法的一个类型, 考验栈结构和操作函数, 中缀转后缀算法, 后缀计算算法等, 慢慢体会. 点击 C 语言编程核心突破 快速C语言入门

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

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

相关文章

电子商务网站建设实验心得营销玩法

第六面: hr迟到,说是搞错了以为线下,我打电话过去才开始,问我想电话面还是视频,果断电话面 自我介绍 介绍了一下公司的工作 ................. 项目拷打: grpc数据如何传输的如何调用两个接口如何获取…

深圳南山做网站wordpress怎么建立网站吗

在过去的几周中,我一直在进行一些研发工作,以了解使用NoSQL数据库实现实体服务 (也称为数据服务)的优势。 实体服务是托马斯埃尔(Thomas Erl)的《服务技术》丛书中提出的服务分类。 它用于描述高度不可知和…

南京网站建设学习东莞企业如何建网站

一、在vue3中新增的祖孙之间通信的方式 provide和inject是Vue中的两个相关功能&#xff0c;它们一起提供了一种祖孙组件之间共享数据的方式。父组件可以使用provide来提供数据&#xff0c;而子孙组件可以使用inject来接收这些数据。 二、使用 父组件中部分代码 <script&g…

电商网站制作项目描述国外交易平台

孩子学编程最佳年龄是几岁2021-01-18 16:58:11文/董玉莹孩子学习编程的最好是几岁&#xff1f;本文整理了相关内容&#xff0c;欢迎阅读。孩子学习编程的最好是几岁6-18岁&#xff01;从国内外的典型案例来看6-18岁是孩子学习“编程”的最佳时机&#xff0c;这个阶段的孩子左右…

网站里可以增加网址吗公司网站运营包括哪些方面

查询计划 Sql Server在执行一条查询语句之前都对对它进行“编译”并生成“查询计划”&#xff0c;查询计划告诉Sql Server的查询引擎应该用什么方式进行工作。Sql Server会根据当前它可以收集到的各种信息&#xff08;例如内存大小&#xff0c;索引的统计等等&#xff09;把一条…

玉泉路网站建设唐山网站建设电话

如果电脑系统损坏开不了机怎么办&#xff1f;安全模式啥的都进入不了怎么办&#xff1f;不用怕&#xff0c;小编教你用PE重装系统&#xff0c;十分简单哦。用PE系统镜像还原重装系统&#xff1a;工具&#xff1a;U盘(最好有8G及以上的容量&#xff0c;因为一个windows7以上的系…

网站制作用什么语言搜狐新闻手机网

效果图&#xff1a;demo效果演示演示Demo特性与原生Progress相比&#xff0c;感觉更漂亮一点&#xff0c;可以显示进度值&#xff0c;背景凹凸感明显&#xff0c;进度条效果更加立体。原理说明额&#xff0c;挺简单的。不过感觉我的做法有点复杂了&#xff0c;我先自定义了一个…

官方网站下载手电筒抖音关键词排名系统

因为是基础就不怎么做解释了&#xff0c;当然简单的题也不能忽视&#xff0c;它们稍微改改就又是一个新代码&#xff0c;当然如果有不懂的也可以询问留言&#xff01;&#xff01;&#xff01; 下面我直接给出代码&#xff1a; 1.打印出一个10 * 10的“*”号矩阵 row, colum…

运城门户网站建设建设公共网站的目的

文章目录 一、SpringBoot 整合 Redis1.1 整合 Redis 步骤1.1.1 添加依赖1.1.2 yml 配置文件1.1.3 Config 配置文件1.1.4 使用示例 1.2 RedisTemplate 概述1.2.1 RedisTemplate 简介1.2.2 RedisTemplate 功能 二、RedisTemplate API2.1 RedisTemplate 公共 API2.2 String 类型 A…

购物网站建设需求模板开发网站需要哪些技术

线程安全主要分为两个方面&#xff0c;分别是资源访问互斥与线程同步&#xff08;线程协同配合&#xff09; 本篇博客&#xff0c;我们主要来讲解资源访问互斥这一方面 目录 为什么要实现资源访问互斥&#xff1f; 实现资源访问互斥&#xff08;原子访问&#xff09;的经典…

广州网站设计出名 乐云践新北京建设网官方网站

可到我的github上下载文件 需求&#xff1a; 刚加载时鼠标不移动&#xff0c;眼睛会不停地眨眼眼球会跟随鼠标移动而移动鼠标不移动时恢复眨眼效果提示&#xff1a; 除了眼睛是动态以外&#xff0c;其他静态绘制都在static()函数中利用椭圆的短轴长度先变短后恢复长度来模拟…

可以免费建设网站吗一天一元网站建设

大部分人基本上都会使用JS实现页面的滚动贴合效果&#xff0c;在学习的过程中&#xff0c;偶然发现原生CSS实现滚动贴合效果的方法&#xff1b; html 代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><tit…

wordpress静态设置北京seo的排名优化

问题描述 什么是拓扑序列 若一个由图中所有点构成的序列 A 满足&#xff1a;对于图中的每条边 (x,y)&#xff0c;x 在 A 中都出现在 y 之前&#xff0c;则称 A 是该图的一个拓扑序列。图中不能有环图中至少存在一个点的入度为0 如何求拓扑序列&#xff1f; 计算出每个节点的…

做资源下载网站好吗开发手机端网站模板下载不了

HPV感染是常见的生殖道病毒感染&#xff0c;它可能导致宫颈癌等严重疾病。对于HPV感染者来说&#xff0c;转阴是预防和治疗的关键。北京劲松HPV诊疗中心主任谭巍认为除了接受正规的治疗和注意生活方式的调整外&#xff0c;饮食也是促进HPV快速转阴的重要方面。 一、苹果 苹果…

网站建设自己可以转app的网站怎么做的

看了还是懵逼&#xff01;攻击者是在哪儿截获盐值哈希密码的&#xff1f; 文章目录 盐值处理&#xff1a;深度解析与应用1. 盐值处理简介1.1 定义与概述1.2 为什么需要盐值 2. 盐值处理工作原理2.1 创建盐值2.2 应用盐值2.3 存储盐值和哈希密码 3. 盐值处理的优点与缺点3.1 优点…

网站访问量大怎么办免费的网站模板有哪些

序列生成器是一个非常经典的协程应用场景,尤其是在需要惰性生成数据或处理潜在无限的数据流时。 序列生成器概念&#xff1a;序列生成器允许程序按需生成序列中的下一个元素&#xff0c;而不是一次性计算整个序列。这种方式可以节省内存&#xff0c;并允许处理无限或未知长度的…

免费制作永久个人网站安徽网站建设合肥网站建设

文章目录 前言一、适配器模式概述1.定义与目的2.使用场景系统升级与集成接口不一致问题的解决兼容旧版本API多种数据源处理 二、适配器模式的结构1.主要组件适配器&#xff08;Adapter&#xff09;目标接口&#xff08;Target Interface&#xff09;被适配者&#xff08;Adapte…

网站推广哪个好wordpress默认用户名密码破解

本文收录于《Scratch等级认证CCF-GESP图形化真题解析》专栏,专栏总目录:点这里,订阅后可阅读专栏内所有文章。 一、单选题(共 10 题,每题 2 分,共 30 分) 第1题 小杨父母带他到某培训机构给他报名参加 CCF 组织的 GESP 认证考试的第 1 级,那他可以选择的认证语言有几…

如何建设部网站查职称网站美观界面

代码基于yolov5 v6.0 目录&#xff1a; yolo源码注释1——文件结构yolo源码注释2——数据集配置文件yolo源码注释3——模型配置文件yolo源码注释4——yolo-py datasets # 用于存放数据集的默认文件夹yolov5 data # 模型训练的超参数配置文件以及数据集配置文件 hyps # 存放超参…

塘厦 网站建设 百度推广手机网站怎么备案

转自 https://www.csdn.net/article/2015-07-30/2825340 简介&#xff1a; Docker通过namespace将容器与主机上的网络和运行环境进行了隔离&#xff0c;默认情况下&#xff0c;在容器中运行带界面的软件在外部是看不到的。在这个分享中&#xff0c;将介绍通过共享X11套接字让外…