《c语言计算器源代码》由会员分享,可在线阅读,更多相关《c语言计算器源代码(7页珍藏版)》请在人人文库网上搜索。

1、 include # include # include # define maxsize 100typedef double datatype1;typedef char datatype2;typedef struct stack1 datatype1 data1maxsize;int top1;/*栈顶元素*/seqstack1,*pseqstack1; /*顺序栈*/typedef struct stack2 datatype2 data2maxsize;int top2;/*栈顶元素*/seqstack2,*pseqstack2; /*顺序栈*/*栈的初始化*/pseqstack1 。

2、init_seqstack1(void)pseqstack1 S;S=(pseqstack1)malloc(sizeof(pseqstack1);if(S)S-top1=-1;return S;pseqstack2 init_seqstack2(void)pseqstack2 S;S=(pseqstack2)malloc(sizeof(pseqstack2);if(S)S-top2=-1;return S;/*判断栈空*/int empty_seqstack1(pseqstack1 S)if(S-top1=-1)return 1;elsereturn 0;精品.int empty_seqsta。

3、ck2(pseqstack2 S)if(S-top2=-1)return 1;elsereturn 0;/*X入栈*/int push_seqstack1(pseqstack1 S,datatype1 X)if(S-top1=maxsize-1)printf(栈满,无法入栈!n);return 0;elseS-top1+;S-data1S-top1=X;return 1;int push_seqstack2(pseqstack2 S,datatype2 X)if(S-top2=maxsize-1)printf(栈满,无法入栈!n);return 0;elseS-top2+;S-data2S-t。

4、op2=X;return 1;/*X出栈*/int pop_seqstack1(pseqstack1 S,datatype1 *X)if(empty_seqstack1(S)return 0;精品.else*X=S-data1S-top1;S-top1-;return 1;int pop_seqstack2(pseqstack2 S,datatype2 *X)if(empty_seqstack2(S)return 0;else*X=S-data2S-top2;S-top2-;return 1;/*求栈顶元素*/int gettop_seqstack1(pseqstack1 S,datatype。

5、1 *X)if(empty_seqstack1(S)return 0; else*X=S-data1S-top1;return 1;int gettop_seqstack2(pseqstack2 S,datatype2 *X)if(empty_seqstack2(S)return 0; else*X=S-data2S-top2;return 1;/*判断字符是否为操作数。若是返回1,否则返回0*/int isnum(char c)if(c=0 & cA*/S=init_seqstack1();/*初始化栈*/while(ch!=#)/*遇到元素!=#时*/if(isnum(ch)/*判断ch是。

6、否为数字字符,计算出操作数*/operand=operand*10+(ch-0);else/*否则*/if(operand)push_seqstack1(S,operand);/*当前字符不是数字,操作数结束,要入栈*/operand=0;if(ch!= & ch!= )pop_seqstack1(S,&b);/*运算符ch后的操作数出栈存入b*/pop_seqstack1(S,&a);/*运算符ch前的操作数出栈存入a*/switch(ch)/*求 a ch b=? ,将结果赋给 c */case + : c=a+b;break;case - : c=a-b;break;case * : c。

7、=a*b;break;case / :if(b!=0)c=a/b;精品.elseprintf(分母为零!);push_seqstack1(S,c);/*将c压入栈中*/ch=*A+;/*指针向下移动一位*/*遇到#循环结束*/gettop_seqstack1(S,&result);/*此时栈顶元素即为计算结果result*/return result;/*优先级判断函数*/int priority(char op)switch(op)case #: return 1;case ): return 2;case +: case -: return 3;case *: case /: return。

8、 4;case (: return 5;default : return 0; /*将指针infixexp指向的中缀表达式转换为指针postfixexp指向的后缀表达式*/int infix_exp_value(char *infixexp,char *postfixexp)pseqstack2 S;/*定义栈S*/int count=0;char w;/*存放读取到的表达式(infixexp)的字符*/char c;/*存放栈顶元素*/char topelement;/*存出栈元素*/S=init_seqstack2();/*初始化栈*/if(!S)/*栈的初始化判断*/printf(栈初始。

9、化失败!);return 0;push_seqstack2(S,#);/*将结束符# 加入运算符栈S中*/w=*infixexp;/*读表达式字符=w*/精品.while(gettop_seqstack2(S,&c),c)!=#|w!=#)/*栈顶元素不等于#或w不等于#时循环*/if(isnum(w)/*判断w是否为操作数,若是直接输出,读下一个字符=w,转*/if(count)*postfixexp=;postfixexp+;count=0;*postfixexp=w;postfixexp+;w=*(+infixexp);else/*w若是运算符分类如下*/count=1;if( (get。

10、top_seqstack2(S,&c),c)=( & w=) )/*如果栈顶为(并且w为)则(出栈不输出,读下一个字符=w,转*/pop_seqstack2(S,&topelement); /*将(出栈存入topelement*/w=*(+infixexp);elseif(gettop_seqstack2(S,&c),c)=(|priority(gettop_seqstack2(S,&c),c) ) w,转*/push_seqstack2(S,w);w=*(+infixexp);else/*否则*/*从运算符栈中出栈并输出,转*/pop_seqstack2(S,&topelement);*po。

11、stfixexp=topelement;postfixexp+;*postfixexp=#;/*在指针postfixexp指向的后缀表达式结尾追加字符#*/*(+postfixexp)=0;/*在指针postfixexp指向的后缀表达式最后追加结束符0*/精品.return 1;/*主函数*/int main() int i=0;char Amaxsize;char Bmaxsize;printf(请输入表达式,如:20+13#,必须以#号结尾!n); /* 1+2*(9+7)-4/2# 23+(12*3-2)/4+34*5/7)+108/9# */Ai=getchar();while(Ai+!=#)Ai=getchar();Ai=0;infix_exp_value(A,B);printf(A=%sn,A);printf(B=%sn,B);printf(上式的结果为: );printf(%gn,postfix_exp(B);return 0;getch();如有侵权请联系告知删除,感谢你们的配合!精品。

c语言计算器自动计算源代码,c语言计算器源代码相关推荐

  1. C语言写的一个简单的计算器

    大学的第一学期就这样结束了.前阵子临近放假,不知道该干嘛,就分别用java和C语言写了两个东西.java写了个文件查找的程序.C语言写了个简易的计算器.至于为什么写计算器~因为刚学C语言的时候,还没摸 ...

  2. C语言二位十进制计算器模数,十进制转二进制计算器

    win10系统之家今天精心准备的是<十进制转二进制计算器>,下面是详解! 怎样用电脑计算器计算二进制 用电脑计算器计算二进制的具体操作步骤如下: 1.首先在电脑桌面上点击左下角的" ...

  3. c语言版计算坐标方位角,C语言辛普森道路测量正反算,秒杀5800计算器

    C语言辛普森道路测量正反算,秒杀5800计算器 /*道桥测量用C语言源程序*/ /*此版本为未完成版本,只能由路线的平曲线元素计算全线中桩坐标或反算桩号*/ /*本人小白,拿出来纯属希望能得到高手指点 ...

  4. 学习C语言之用函数做出简易计算器

    学习C语言之用函数做出简易计算器 #include<stdio.h> #include<stdlib.h>int add(int x,int y) {int z;z = x+y ...

  5. 【C语言基础】利用C语言简单知识点实现计算器加减乘除运算功能

    利用循环语句以及函数调用实现计算器的简单功能 计算器是我们在学习生活中不可或缺的一个工具,有时候要计算一些比较复杂的数据时只能借助于计算器.基本上每个人都会使用计算器,那么如何利用C语言设计出一个自己 ...

  6. C#——《C#语言程序设计》实验报告——Windows桌面编程——简单的计算器(仿Windows 10计算器)

    一.实验目的 熟悉使用WPF进行界面编程的基本过程: 掌握WPF布局.控件.事件的使用. 二.实验内容 运用WPF技术,模仿Windows 10系统中计算机器(Calculator)程序,开发一个类似 ...

  7. c语言4x4按键计算器代码,4X4按键实现计算器功能.doc

    4X4按键实现计算器功能 ;4X4按键实现计算器功能 ;当按0-9时显示数值 ;当按A-F时将其除以10 ;如商为0就是0-9数字输入 ;如商为1就是+,-,*,/,= ;跟据余数转到相应的功能处 ; ...

  8. c语言商店自动销售,c语言商店商品管理系统设计报告与源代码.doc

    c语言商店商品管理系统设计报告与源代码.doc 1目录1系统分析21.1课程设计内容21.2系统功能需求分析21.3数据结构设计32系统设计32.1总体设计32.2详细设计42.2.1界面设计42.2 ...

  9. rsa加密c语言源码库,RSA加密算法源代码C语言实现.doc-资源下载在线文库www.lddoc.cn...

    RSA加密算法_源代码__C语言实现.doc RSA 算法 1978 年就出现了这种算法,它是第一个既能用于数据加密也能用于数字签名的算法.它易于理解和操作,也很流行.算法的名字以发明者的名字命名Ro ...

  10. 串口转以太网通信源代码C语言C++编写支持多路转换双向通信支持UDP和TCP客户端

    串口转以太网通信源代码C语言C++编写支持多路转换双向通信支持UDP和TCP客户端 提供,带注释,带设计文档 使用说明介绍 1.功能介绍: 完成了多路网口和串口数据转换的功能. 可实现串口接收到的数据 ...

最新文章

  1. 学生的新增mySQL文档_MySQL增删改查
  2. SpringBoot打成jar包cmd中运行时修改配置文件的值
  3. 【人工智能导论】A*算法求解15数码问题 Java
  4. C#中控制线程池的执行顺序
  5. php函数的初步使用
  6. WPF 实现截屏控件之移动(二)(仿微信)
  7. 手游建筑美术资源_建筑商和机械手
  8. 数字图像处理:特征提取基本概念总结
  9. 由一条OpenResty Error log谈谈ngx.exit与ngx.eof的区别
  10. 如何在网页打开CAD,DWG文件,(在线CAD)在线CAD平台,H5前端显示CAD,网页CAD
  11. openstack-KVM-vCPU
  12. 上传图片方法到免费服务器
  13. 用Javascript实现放大镜效果
  14. 以下哪些是微型计算机,2017版计算机试题及答案
  15. git rebase使用简介
  16. Qt串口等接口数据协议传输时的字节拼接处理
  17. java基于sptingboot+vue的校园疫情防控系统 elementui
  18. 别害羞,开源社区真的很需要你,教你如何参与开源社区~
  19. java 时间判断大小_java判断时间大小
  20. 智汀教你如何用手机远程控制智能门锁

热门文章

  1. OpenGL纹理操作--glGenTextures
  2. 熊猫烧香病毒分析报告
  3. docker常用操作(六)docker安装内网穿透nps
  4. 眉山市谷歌高清卫星地图下载
  5. 产业互联网周报:滴滴被处以80亿元巨额罚款;消息称中国正启动欧洲企业到中国上市计划;字节跳动确认自研专用芯片...
  6. 如何用记事本编写Java代码?
  7. Android Framework源码阅读计划
  8. Iocomp ActiveX v5 SP6 带OPC -Crack
  9. 【Spark】SparkSQL练习--出租车数据清洗
  10. Apache POI TXT转成EXCEL(XLSX)