#include<stdio.h>
#include<math.h>
#include<malloc.h>double jisuan(char a[])
{
int i=1,j,k,m,cnt=0,t1=0,t2=0,t3=0;char nibo[50],zhan2[50];//zhan2存放的是运算符
double x,n,l,z=0,zhan3[50];//暂存结果
typedef struct
{
double d1;int d2;
}dd;
typedef struct
{
dd data[50];
int top;
}zhan1;
zhan1 *shu;
shu=(zhan1 *)malloc(sizeof(zhan1));
shu->top=0;
while(a[i]!='\0')
{
if(a[i]>='0'&&a[i]<='9')
{z=0;j=i+1;while(a[j]>='0'&&a[j]<='9'){j++;}j--;for(k=i;k<=j;k++){z=z*10+a[k]-'0';}j=j+1;//j跳到数字后一位x=z;if(a[j]=='.')//如果是小数的话就把小数和整数一起加上{l=1;i=j+1;j=i+1;while(a[j]>='0'&&a[j]<='9'){j++;}j--;for(k=i;k<=j;k++){n=pow(0.1,l);l=l+1;x=x+n*(a[k]-'0');}i=j+1;}else i=j;shu->data[++shu->top].d1=x;shu->data[shu->top].d2=++cnt;nibo[++t1]='0'+shu->data[shu->top].d2;nibo[t1+1]='\0';
}//如果是数字那么就保存到结构体里 的dd数组里的 第二个成员里
else if(a[i]=='(')
{zhan2[++t2]=a[i];i++;
}
else if(a[i]==')')
{j=t2;while(zhan2[j]!='('){nibo[++t1]=zhan2[j];nibo[t1+1]='\0';j--;}t2=j-1;i++;
}
else if(a[i]=='+')
{while(t2>0&&zhan2[t2]!='('){nibo[++t1]=zhan2[t2];nibo[t1+1]='\0';t2--;}zhan2[++t2]=a[i];i++;
}
else if(a[i]=='-')
{if(a[i-1]=='$'){a[0]='0';i=0;}else if(a[i-1]=='('){a[i-1]='0';a[i-2]='(';i=i-2;t2--;}else{while(t2>0&&zhan2[t2]!='('){nibo[++t1]=zhan2[t2];nibo[t1+1]='\0';t2--;}zhan2[++t2]=a[i];i++;}
}
else if(a[i]=='*'||a[i]=='/')
{while(zhan2[t2]=='*'||zhan2[t2]=='/'||zhan2[t2]=='^'||zhan2[t2]=='#'){nibo[++t1]=zhan2[t2];nibo[t1+1]='\0';t2--;}zhan2[++t2]=a[i];i++;
}
else if(a[i]=='^'||a[i]=='#')
{while(zhan2[t2]=='^'||zhan2[t2]=='#'){nibo[++t1]=zhan2[t2];nibo[t1+1]='\0';t2--;}zhan2[++t2]=a[i];i++;
}
}//把输出的多项式中的数字字符先转换成数值型存入结构体里,然后把加减乘除等的字符存入到zhan2里--这是转化过程并存储入站//下面就是开始计算结果 相当于出站的过程 把dd结构体里的数值取出和zhan2的字符来进行运算,当前结果存储到zhan3里,就用nibo数组来判断是否计算完毕
while(t2>0)
{
nibo[++t1]=zhan2[t2];
nibo[t1+1]='\0';
t2--;
}j=1;t3=0;
while(j<=t1)
{
if(nibo[j]>='0'&&nibo[j]!='^'&&nibo[j]!='#')//
{for(i=1;i<=shu->top;i++){if((int)(nibo[j]-'0')==shu->data[i].d2){m=i;break;}}zhan3[++t3]=shu->data[m].d1;}
else if(nibo[j]=='+')
{zhan3[t3-1]=zhan3[t3-1]+zhan3[t3];t3--;}
else if(nibo[j]=='-')
{zhan3[t3-1]=zhan3[t3-1]-zhan3[t3];t3--;
}
else if(nibo[j]=='*')
{zhan3[t3-1]=zhan3[t3-1]*zhan3[t3];t3--;
}
else if(nibo[j]=='/')
{zhan3[t3-1]=zhan3[t3-1]/zhan3[t3];t3--;
}
else if(nibo[j]=='^')
{zhan3[t3-1]=pow(zhan3[t3-1],zhan3[t3]);t3--;
}
else if(nibo[j]=='#')
{zhan3[t3]=sqrt(zhan3[t3]);
}
j++;}return zhan3[t3];}int main()
{
for(;;)
{
char x,a[50];
double jieguo;
int i=0;
a[0]='$';
printf("#表示开方,^表示乘方(支持负数)\n");printf("请输入表达式无需输入 = 号    直接回车可输出答案     退出请输入q \n\n");scanf("%c",&x);
if(x=='q') break;
while(x!='\n')
{
a[++i]=x;
scanf("%c",&x);
}
a[i+1]='\0';
jieguo=jisuan(a);printf("\n");printf("结果为:%lf",jieguo);printf("\n\n\n");
printf("退出请输入q 继续请直接输入\n\n");
}
}

C语言计算器代码(带有报告)相关推荐

  1. c语言计算器结题报告,【2018年最新整理】单片机结题报告.doc

    [2018年最新整理]单片机结题报告 序号: 单片机原理及应用 结题报告 姓名: 学号: 学院: 专业: 2010学年秋季学期 摘 要 单片微型计算机是指多个微型计算机 集成在一个芯片上,也就是把组成 ...

  2. c语言中水仙花数的代码,水仙花数c语言实现代码

    水仙花数c语言实现代码 任务二报告 v1.2 前言: 本次任务我使用的是c语言(其他语言不熟悉...汗颜). 源码: #include int main() { int a,b,c,d,e,f,g,h ...

  3. 用C语言实现一个简单的计算器代码

    #include <stdio.h> #include <math.h> #include <stdlib.h> //预处理指令 int main(void) {d ...

  4. c语言程序报告的前言,C语言 程序代码编写规范前言

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 一个好的程序编写规范是编写高质量程序的保证.清晰.规范的源程序不仅仅是方便阅读,更重要的是能够便于检查错误,提高调试效率,从而最终保证软件的质量和可维护性 ...

  5. 计算器小程序java课程设计,java课程设计----计算器小程序报告.doc

    java课程设计----计算器小程序报告.doc #####学院JAVA语言课程设计报告小程序计算器系统管理班级:#######姓名:#####指导老师:###时间:2012年6月25日至6月29日2 ...

  6. c语言程序设计论文结构,c语言顺序结构设计实验报告.docx

    c语言顺序结构设计实验报告 姓名王中华班级学号31实验日期课程名称C语言程序设计指导教师陈强成绩 实验名称:C语言的三种结构-顺序结构 [实验目的] 1.理解C语言程序的三种基本结构.2.掌握变量定义 ...

  7. html语言简单,简单的html语言计算器

    <简单的html语言计算器>由会员分享,可在线阅读,更多相关<简单的html语言计算器(3页珍藏版)>请在人人文库网上搜索. 1.简单的计算器源码如图:代码input.MyBu ...

  8. c语言作业重庆科技学院,C语言程序设计学生上机报告-NO3.doc

    C语言程序设计学生上机报告-NO3.doc 重庆科技学院 上机实验报告(上机操作类) 课程名称 C 语 言 程 序 设 计 实验项目 循环结构程序设计(一) 机房名称 I313 上机时间 2017 年 ...

  9. 第二十一届国际C语言混乱代码大赛结果公布

    摘要:国际C语言混乱代码大赛(IOCCC, The International Obfuscated C Code Contest)是一项著名的国际编程赛事,从1984年开始到2006年,每年举办一次 ...

  10. 湖北汽车工业学院c语言程序设计 汽车零部件采购管理程序,湖北汽车工业学院c语言课程设计实验报告(采购信息管理系统).docx...

    湖北汽车工业学院c语言课程设计实验报告(采购信息管理系统) C语言课程设计 商品销售信息管理系统 #include #include #include #include structproduct// ...

最新文章

  1. Spring+Hibernate整合
  2. 部署高可用的Lync Server 2013 Part 4 部署高可用的文件共享DFS
  3. InstallShield与Visual Studio
  4. KOL:Key Opinion Leader
  5. 为什么要实施服务器虚拟化
  6. 微信小程序实战–集阅读与电影于一体的小程序项目(八)
  7. centos7开启vnc服务_阿里云CentOS 7搭建VNC远程桌面服务步骤方法
  8. Java基于stanford-corenlp实现英文词形还原
  9. JavaScript--模拟网络爬虫
  10. icesat2:strong beam and weak beam
  11. CCRC和ISO27001有什么区别?
  12. 联想服务器BLOS里面的具体信息,联想笔记本bios中英文对照表详细图文分析
  13. font-family 使用设置
  14. snipaste如何滚动截图_试用了20个截图工具,我写下这份超全的软件指南
  15. win10无法打印网页:打印机遇到异常配置问题0x8007007e 的解决方法
  16. 函数发生器与计算机电路,第29讲 信号发生器与变换电路
  17. Dell OptiPlex台式机安装ESXI 6.7
  18. C语言超出类型数值范围的表示方法
  19. Everything Is Generated In Equal Probability HDU-6595 期望DP
  20. 微信公众号开发中,获取用户资料的两种方式

热门文章

  1. 远程桌面凭据无法工作
  2. 关于联想LJ2655DN出现open the frontcover then replace the toner的解决方法
  3. Html数组下标访问帧,javaScript array(数组)使用字符串作为数组下标的方法
  4. mongodb oplog java_MongoDB oplog 深入剖析
  5. string和string.h以及cstring的区别
  6. 安卓rom制作教程_【ROM消息】Simplicity官改:MIUI11 9.12.14全机型更新
  7. c语言程序设计题题库,c语言程序设计试题题库含答案
  8. c语言上机作业数组,2015二级c语言上机题库
  9. linux安装VLC播放器
  10. Notepad2替换windows自带记事本