C语言一些奇奇怪怪的题目!栈的简单应用之后缀表达式求值问题

题目

如下程序,如何实现

数据测试以及输出:

学前知识

后缀表达式(将运算符写在操作数之后)也叫逆波兰式(Reverse Polish notation,RPN,或逆波兰记法)。

如:我们平时写a+b,这是中缀表达式,写成后缀表达式就是:ab+

(a+b)*c-(a+b)/e的后缀表达式为:(a+b)*c-(a+b)/e

→((a+b)*c)((a+b)/e)-

→((a+b)c*)((a+b)e/)-

→(ab+c*)(ab+e/)-

→ab+c*ab+e/-

解析过程

新建一个表达式,如果当前字符为变量或者为数字,则压栈,如果是运算符,则将栈顶两个元素弹出作相应运算,结果再入栈,最后当表达式扫描完后,栈里的就是结果。难点在于如何拆分数字。

实现代码

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
float num[256] = { 0 };
float comp(char s[])
{
int i = 0, top = 0, x;
while (i <= strlen(s) - 2)
{
switch (s[i])
{
case'+':
num[--top] += num[top + 1]; 
break;
case'-':
num[--top] -= num[top + 1]; 
break;
case'/':
num[--top] /= num[top + 1]; 
break;
case'*':
num[--top] *= num[top + 1]; 
break;
default: 
x = 0;
while (s[i] != ' ')
{
x = x * 10 + s[i] - '0';//数
if (s[i + 1] == '+' || s[i + 1] == '/' || s[i + 1] == '*' || s[i + 1] == '-')
break;
else
i++;
}
num[++top] = (float)x; 
break;
}
i++;
}
return num[top];
}
int main()
{
float result[100];
int count = 0;
while (1)
{
char inputStr[20] = "";
gets(inputStr);
if (strcmp(inputStr, "=") == 0)
{
break;
}
result[count++] = comp(inputStr);
memset(inputStr, 0, 20);
}
for (int i = 0; i < count; i++)
{
printf("%.2f\n", result[i]);
}
system("pause");
}

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论

热门产品

php编程基础教程.pptx|php编程培训,php,编程,基础,教程,pptx
php编程基础教程.pptx

历史上的今天:04月29日

热门专题

云南巨榕教育投资集团有限公司|云南巨榕教育投资集团有限公司,巨榕教育集团,巨榕教育
云南巨榕教育投资集团有限公司
大理科技管理学校|大理科技管理学校,大理科技,大理科技中等职业技术学校,大理科技管理中等职业技术学校,大理科技学校
大理科技管理学校
安徽中源管业|安徽中源管业,安徽中源管业mpp电力管,安徽中源管业cpvc电力管,安徽中源管业pe穿线管,安徽中源管业电力管,安徽中源管业排水管,安徽中源管业通信管,安徽中源管业管材
安徽中源管业
弥勒综合高中|弥勒综合高中
弥勒综合高中
国家开放大学|国家开放大学报名,国家开放大学报考,国家开放大学,什么是国家开放大学,国家开放大学学历,国家开放大学学费,国家开放大学报名条件,国家开放大学报名时间,国家开放大学学历,国家开放大学专业
国家开放大学
天麻的功效与作用吃法|天麻的功效与作用,天麻的功效与作用吃法,天麻炖什么治头痛最好,天麻的功效与作用禁忌,天麻多少钱一斤,天麻的功效与作用吃法及禁忌,天麻怎么吃效果最好,天麻粉的功效与作用,天麻怎么吃
天麻的功效与作用吃法
易捷尔单招|易捷尔单招,易捷尔单招培训,易捷尔单招报名,易捷尔单招考试,易捷尔单招培训学校,易捷尔单招分数
易捷尔单招
综合高中|云南综合高中,昆明综合高中,综合高中能考本一吗,综合高中和普通高中的区别,综合高中是什么意思,综合高中能参加全国统一高考吗,综合高中可以考哪些大学,综合高中的学籍是什么
综合高中

微信小程序

微信扫一扫体验

立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部