《多功能计算器的C语言实现(共5页).doc》由会员分享,可在线阅读,更多相关《多功能计算器的C语言实现(共5页).doc(5页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上多功能计算器的C语言实现题目:设计一个多功能计算软件实现功能:具备整型数据、浮点型数据的算术(加、减、乘、除)运算功能。依次输入第一个运算数、运算符(+,-,*,/)、第二个运算数,然后输出结果。结果可以作为下一个运算的第一运算数。按C清屏,按R返回 菜单。例如:输入:2+5输出:7C语言实现:#include#include#include#define MaxLength 50void Show_screen()printf(#n);printf(#依次输入操作数1、运算符和操作数2,例如:2+5。 #n);printf(#按回车键显示运算结果,其可作为下一个输入
2、的操作数。#n);printf(#按键c清除屏幕,按键r返回菜单。 #n);printf(#n);double myadd(double x, double y)double sum;sum=x+y;if(sum-(int)sum=0)printf(%.0f,sum);elseprintf(%.6f,sum);return sum;double mysub(double x, double y)double sub;sub=x-y;if(sub-(int)sub=0)printf(%.0f,sub);elseprintf(%.6f,sub);return sub;double mymul(do
3、uble x, double y)double mul;mul=x*y;if(mul-(int)mul=0)printf(%.0f,mul);elseprintf(%.6f,mul);return mul;double mydiv(double x, double y)double div;div=x/y;if(div-(int)div=0)printf(%.0f,div);elseprintf(%.6f,div);return div;int main()int myoffset;int flag;/判断是否将上次计算结果作为下次运算操作数1的标志,是的话值为1。/只要不按+、-、*、/键,
4、表示不作为,否则,表示作为。char *check_add,*check_sub,*check_mul,*check_div;char myinputMaxLength;char tempxMaxLength,tempyMaxLength;static double res;/保存计算结果Show_screen();/暂不考虑字符串合法性及溢出while(scanf(%s,myinput)/printf(请输入运算表达式:n);check_add=strchr(myinput, +);check_sub=strchr(myinput,-);check_mul=strchr(myinput,*)
5、;check_div=strchr(myinput,/);/判断flagif(myinput0=+|myinput0=-|myinput0=*|myinput0=/)flag=1;elseflag=0;/调用清屏操作,Linux下有所不同if(myinput0=c|myinput0=C)system(clear);/Windows下使用下面一行代码/system(CLS);/返回菜单else if(myinput0=r|myinput0=R)Show_screen();/匹配加法else if(check_add)if(flag=0)myoffset=(unsigned int)check_a
6、dd-(unsigned int)myinput;strncpy(tempx,myinput,myoffset);strcpy(tempy,check_add+1);tempxmyoffset=0;tempystrlen(myinput)-myoffset-1=0;res=myadd(atof(tempx),atof(tempy);elsestrcpy(tempy,check_add+1);res=myadd(res,atof(tempy);else if(check_mul)if(flag=0)myoffset=(unsigned int)check_mul-(unsigned int)my
7、input;strncpy(tempx,myinput,myoffset);strcpy(tempy,check_mul+1);tempxmyoffset=0;tempystrlen(myinput)-myoffset-1=0;res=mymul(atof(tempx),atof(tempy);elsestrcpy(tempy,check_mul+1);res=mymul(res, atof(tempy);else if(check_div)if(flag=0)myoffset=(unsigned int)check_div-(unsigned int)myinput;strncpy(temp
8、x,myinput,myoffset);strcpy(tempy,check_div+1);tempxmyoffset=0;tempystrlen(myinput)-myoffset-1=0;res=mydiv(atof(tempx),atof(tempy);elsestrcpy(tempy,check_div+1);res=mydiv(res, atof(tempy);/考虑到负数的存在,减法最后判断else if(check_sub)if(flag=0)myoffset=(unsigned int)check_sub-(unsigned int)myinput;strncpy(tempx,myinput,myoffset);strcpy(tempy,check_sub+1);tempxmyoffset=0;tempystrlen(myinput)-myoffset-1=0;res=mysub(atof(tempx),atof(tempy);elsestrcpy(tempy,check_sub+1);res=mysub(res, atof(tempy);elseprintf(输入有误!程序将关闭!n);break;return 0;专心-专注-专业