in语句作用C语言,C语言中IN(ch,OP)是什么意思
表达式求值,说起来很复杂,我有源代码,你自己研究研究
#include
#include
#define MaxSize 99
void translate(char str[],char exp[]) /*将算术表达式转换成后缀表达式*/
{
struct
{
char data[MaxSize];
int top; /*top为栈顶*/
}op; /*定义一个含data和top的结构体*/
char ch;
int i = 0,t = 0;
op.top = -1;
ch = str[i]; /*将str的每一个数转换成ch*/
i++;
while(ch != '\0') /*ch对应不同的符号的时候对应的转换情况*/
{
switch(ch)
{
case '(': /*当是(的时候,将此括号存入栈op*/
op.top++;op.data[op.top]=ch;
break;
case ')':
while(op.data[op.top] != '(') /*括号内的转换优先级最高,故先提取表达式*/
{
exp[t]=op.data[op.top];
op.top--;
t++;
}
op.top--;
break;
case '+':
case '-':
while(op.top != -1&&op.data[op.top] != '(')
{
exp[t] = op.data[op.top];
op.top--;
t++;
}
op.top++; /*恢复可插入位置*/
op.data[op.top] = ch;
break;
case '*':
case '/':
while(op.top == '/'||op.top == '*') /*优先级*/
{
exp[t] = op.data[op.top];
op.top--;
t++;
}
op.top++;
op.data[op.top] = ch;
break;
case ' ': /*忽略空格,排除误操作*/
break;
default:
while(ch >= '0'&&ch <= '9')
{
exp[t] = ch;t++;
ch = str[i];i++;
}
i--;
exp[t] = '#'; /*分隔操作数,为了美观,也为了以后好分隔操作数,呵呵*/
t++;
}
ch = str[i];
i++;
}
while(op.top != -1) /*得到剩下的部分*/
{
exp[t] = op.data[op.top];
t++;
op.top--;
}
exp[t] = '\0'; /*表达式结束*/
}
float cal_value(char exp[])
{
struct
{
float data[MaxSize];
int top;
}st; /*操作数栈*/
float d;
char ch;
int t = 0;
st.top = -1;
ch = exp[t];
t++;
while(ch != '\0')
{
switch(ch) /*运算主体*/
{
case '+':
st.data[st.top-1] = st.data[st.top-1]+st.data[st.top];
st.top--;
break;
case '-':
st.data[st.top-1] = st.data[st.top-1]-st.data[st.top];
st.top--;
break;
case '*':
st.data[st.top-1] = st.data[st.top-1]*st.data[st.top];
st.top--;
break;
case '/':
if(st.data[st.top] != 0)
st.data[st.top-1]=st.data[st.top-1]/st.data[st.top];
else
{
printf("\n\t除0是错误的");
}
st.top--;
break;
default:
d=0;
while(ch >= '0'&&ch <= '9') /*从后缀表达式中获取操作数,#作用在此体现*/
{
d = 10*d+ch-'0';
ch = exp[t];
t++;
}
st.top++;
st.data[st.top] = d;
}
ch = exp[t];
t++;
}
return st.data[st.top];
}
int main() /*可以提到前面去*/
{
char str[MaxSize],exp[MaxSize]; /*str为算术表达式,exps为后缀表达式*/
printf("请输入一个求值表达式\n");
printf("表达式:");
gets(str); /*输入一个算术表达式*/
printf("原表达式是:%s\n",str);
translate(str,exp); /*将算术表达式转换成后追表达式*/
printf("后缀表达式:%s\n",exp);
printf("计算结果:%g\n",cal_value(exp));/*通过后缀表达式来求值*/
system("pause");
return 0;
in语句作用C语言,C语言中IN(ch,OP)是什么意思相关推荐
- map函数作用c语言,c语言中map的用法:map基本用法
c++中map容器提供一个键值对容器,那么你知道map的用法有哪些吗,下面秋天网 Qiutian.ZqNF.Com小编就跟你们详细介绍下c语言中map的用法,希望对你们有用. c语言中map的用法:m ...
- sleep函数的作用c语言,C语言中的sleep函数是什么意思【详细介绍】
计算机知识:C语言中的Slee函数 Sleep函数简介: 函数名: sleep 功 能: 执行挂起一段时间 用 法: unsigned sleep(unsigned milliseconds); 在V ...
- c语言中ch的作用,C语言中IN(ch,OP)是什么意思
表达式求值,说起来很复杂,我有源代码,你自己研究研究 #include #include #define MaxSize 99 void translate(char str[],char exp[] ...
- C/C++中Static的作用详述 在C语言中,static的字面意思很容易把我们导入歧途,其实它的作用有三条。
C/C++中Static的作用详述 在C语言中,static的字面意思很容易把我们导入歧途,其实它的作用有三条. (1)先来介绍它的第一条也是最重要的一条:隐藏. 当我们同时编译多个文件时,所有未加s ...
- c语言while函数作用,详解C语言中的while语句
什么是C语言的while语句?它的作用是什么呢?估计很多初学者对此都是一知半解.下面课课家笔者就为大家详细解释C语言中的while语句的含义和作用. 首先笔者先给大家介绍C语言中的共有的三大常用的程序 ...
- c语言switch语句嵌套,浅谈c语言中switch语句的嵌套使用
switch语句是一种分支控制语句,它的应用在程序设计中起到了很重要的作用.由于其格式复杂,对于初学者来说很难掌握,switch语句的嵌套使用更是让初学者难以理解.本文通过介绍switch嵌套语句的形 ...
- goto在c语言中的作用,为什么在C语言中,goto这么不受待见?
原标题:为什么在C语言中,goto这么不受待见? 什么是goto语句 goto语句被称为C语言中的跳转语句.用于无条件跳转到其他标签.它将控制权转移到程序的其他部分. goto语句一般很少使用,因为它 ...
- c语言rand函数的作用,详解C语言中rand函数的使用
前言 我们在编程实现算法的过程中,往往需要使用到随机数.由于计算机是一台以逻辑为基础的机器,没法做到真正的随机(大概量子计算机可以?).所以计算机生成的是伪随机数,供我们使用. 我们使用C语言的ran ...
- 在c语言中 n的作用是什么,c语言中(n)的意思,C语言中‘#92;n#39;是什么意思
C语言中'\n'是什么意思 \n' 的意思是:回2113车换行.将当前位置移到下一行的5261开头. 1.\n是换行符,4102通常在输出中用作格式控制:1653\n'就是一个转义字符,其意义是&qu ...
最新文章
- 【Notes6】ajaxjson,校验用户名,自动提示,CORS,/swagger开发rest,Websocket,DNS
- Linux内存page,【原创】(十四)Linux内存管理之page fault处理
- linux snmpwalk版本,snmpwalk的Linux的击不返回
- Makefile规则介绍
- RabbitMQ 基本概念与高级特性
- 信阳农林技术学院经纬度_信阳农林学院驻村工作队为扶贫村协调种苗助力美丽乡村建设...
- nginx限速方法以及报错处理
- git 远程仓库 remote 使用总结
- 设计模式-第一篇之单例模式
- 安卓平板python编程软件下载_10 个可以在平板电脑上使用的 Python 编辑器
- Word制作学生点名册表格模板
- 使用STVP解除STM32flash读出保护
- 转鼓式精密过滤器滤网
- HCIA H12-211题库解析
- java导出excel文件_POI生成EXCEL文件
- 了解并掌握Halcon HDevelop 仿真程序语法
- Linux 下录屏制作 GIF 图片
- afrog的安装与使用
- 关于爬取arXiv论坛论文并按照论文主题进行分类的办法
- P1719 最大加权矩形(二维dp)