C语言结课设计之计算器功能

  

本文实例为大家分享了C语言实现计算器的具体代码,供大家参考,具体内容如下

  

 C语言结课设计之计算器功能

     /*===============================================* \   * *设计目的:简单计算器,计算形如10 *(20.2 - -30.6)+ 5.0/2的表达式值   * *简要原理:中缀式转逆波兰式(后缀式)   * * IDE: Dev-Cpp 4.9.9.2   * *注意事项:括号必须是英文状态的   * *时间:2014-6-17/*===============================================*/# include & lt; stdio.h>   # include & lt; string.h>   # include & lt; stdlib.h>   #定义maxn 1000   字符缓冲区(maxn) str maxn, signStack maxn, ch [2];   int len, id、idSign艾丹?,我,n;   双ans (maxn);      空白checkSign (char标志){   如果(标志==' (')signStack [idSign + +]=符号;   else if(标志==?’| |标志=='/'){   而(idSign,,(signStack [idSign-1]==?’| | signStack [idSign-1]=='/'))   str [id + +]=signStack [——idSign];   signStack [idSign + +]=符号;   }else if(标志==)){   而(signStack [idSign-1] !=' (') str [id + +]=signStack [——idSign];   ——idSign;   其他}{   而(idSign,,signStack [idSign-1] !=' (') str [id + +]=signStack [——idSign];   signStack [idSign + +]=符号;   }   str [id + +]=" ";   }      int检查(aa, char) {   如果(a==0,,符号=='/'){   printf("除数不能为0 !,程序结束。\ n”);   系统(“暂停”);   退出(EXIT_FAILURE);   }   返回1;   }      双卡尔(双,双b, char标志){   开关(信号){   例“+”:返回一个+ b;   情况下“-”:返回a - b;   案例‘*’:返回一个* b;   例“/?返回a/b;   }   }      int main () {      printf (" \ \ t \ \ t简单计算器\ n \ n”);   printf (" \ \ t======================================\ n ");   printf (" \ \ t | |支持+ - */()等符号和负数输入| | \ n”);   printf (" \ \ t======================================\ n ");   printf (" \ t \ t \ \ \ \ t原创邱正钢\ n”);   printf (" \ t \ t \ \ \ \ t完成时间:2014年6月17日\ n”);   printf (" \ t \ \ t \ t \ \ tEmail: 2276479303 @qq.com \ n”);      printf(“请输入一个表达式,如-10 * (20.2 - -30.6)+ 5.0/2 \ n以回车结束:\ n”);   {做   得到(buf);id=idSign=艾丹?=0;   如果((len=strlen (buf))==0)继续;      int国旗=0;//这个是用来判断”——“字符是负号还是减号的。1表示数字,0表示+ */(/*判断原理:如果第一次读取就碰到,那么一定是负号,若最近一次读取是+ * -/(那么   也一定是负号,如果是右括号或数字那么是减号*/(我=0;我& lt;兰;+ + i) {   如果(buf[我]==' ')继续;   如果(buf[我]祝辞=' 0 ',,buf[我]& lt;=' 9 ' | | buf[我]==薄!眧 | buf[我]=='——',,!国旗){   str [id + +]=buf[我];标志=1;   }   其他{   str [id + +]=" ";checkSign (buf[我]);   如果(buf[我]!=))国旗=0;   其他标志=1;   }   }   而(idSign) str [id + +]=signStack [——idSign];      (我=0,n=0;我& lt;id;+ + i) {   如果(str[我]==' ')继续;/*用增加空格的方式判断”——“字符是负号还是减号,若”——“后面挨着数字或小数点,那么一定是负号*/如果(str[我]祝辞=' 0 ',,str[我]& lt;=' 9 ' | | str[我]==薄!皘 | str[我]==' - '   ,,(str (i + 1)祝辞=' 0 ',,str (i + 1) & lt;=' 9 ' | | str (i + 1)=='。')) {   sscanf (str +我,“%低频% n”, ans(艾丹?+ +),n);   我+=n - 1;继续;   }else if(检查(ans (idAns-1) str[我])){   ans (idAns-2)=卡尔(ans (idAns-2), ans (idAns-1) str[我]);   ——艾丹?;   }   }   printf("结果是%。2如果\ n”, ans [0]);   printf("输入Y继续,N退出:”);   scanf (“% s”, ch);   },(ch [0]==' Y ' | | ch [0]==' Y ');   printf("感谢您的使用!再见\ n”);   系统(“暂停”);   返回0;   }      

关于计算器的精彩文章请查看《计算器专题》,更多精彩等你来发现!

  

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

C语言结课设计之计算器功能