1、C语言实现计算器功能实验一 多功能计算器一、问题描述设计一个多功能计算器,可以完成基本的计算。设计要求:1.具备整型数据、浮点型数据的算术(加、减、乘、除)运算功能。依次输入第一个运算数、运算符(+,-,*,/)、第二个运算数,然后输出结果。结果可以作为下一个运算的第一运算数。按C清屏,按R返回菜单。例如:输入:2+5输出:72.实现单运算符表达式计算的功能。输入的操作数可以包含整数或浮点数。输入表达式如下:例如:输入:2+5输出:7二、算法说明1数据结构说明(可以图示说明,也可以文字说明)本程序主要根据选择菜单编写了六个自定义函数,用于在main()函数中调用,在main()中,用一个字符变
2、量num1来记录下菜单选项的标号,根据num1的值来决定调用哪个函数。程序要完成的功能及所要用到的函数如下:下面是整个程序的流程图:2算法说明(即函数说明)void suanshuyunsuan() /做算术运算时调用的函数void suanshuyunsuan2() /选择继续做算术运算调用的函数,将上次运算的结果做为下次算术运算的第一个操作数 /判断算术运算是否继续void panduan() /判断算术运算是否继续 void biaodashiyunsuan() /单运算符表达式实现函数void qingping() /清除屏幕void fanhuicaidan() /显示菜单三、测试结
3、果(这部分需文字与图示结合)1第一组测试用例(1)测试输入:测试目的:测试算术运算的功能结果输出:(2)再一次输入:1测试目的:测试算术运算是否能继续结果输出:(3)这时输入:0 测试目的:退出算术运算结果输出:2.第二组测试用例测试输入:测试目的:测试单运算符表达式函数结果输出:3.第三组测试用例测试输入:c 测试目的:测试输入c是否能清屏测试输出:4.第四组测试用例测试输入:r测试目的:测试返回菜单函数测试输出:5. 第五组测试用例测试输入:t测试目的:测试是否能正确退出程序测试输出:附录:源代码(附上全部源代码,且不能雷同)#include#includewindows.hdouble
4、z; /定义全局变量用来存放算术运算前一次的结果/做算术运算时调用的函数void suanshuyunsuan() char fh,hh1,hh2; /hh1与hh2是用来存放回车字符的 double num1,num2; printf(输入:); scanf(%lf%c%c%c%lf,&num1,&hh1,&fh,&hh2,&num2); switch(fh) /判断是做什么运算 case +:z=num1+num2;break; case -:z=num1-num2;break; case *:z=num1*num2;break; case /:z=num1/num2;break; pri
5、ntf(结果:=); printf(n%lfn,z);/选择继续做算术运算调用的函数,将上次运算的结果做为下次算术运算的第一个操作数void suanshuyunsuan2() double num1; char fh; printf(%lfn,z);/首先输出前一次算术运算的结果 rewind(stdin); scanf(%c%lf,&fh,&num1); switch(fh) case +:z=z+num1;break; case -:z=z-num1;break; case *:z=z*num1;break; case /:z=z/num1;break; printf(结果:=); pr
6、intf(n%lfn,z);/判断算术运算是否继续void panduan() printf(是否结束运算?n); printf(0.是 ); printf(1.否n); printf(请选择0或1:);/单运算符表达式实现函数void biaodashiyunsuan() int num1,num2,num3; char fh; printf(输入:); scanf(%d%c%d,&num1,&fh,&num2); printf(结果:=); switch(fh) case +:num3=num1+num2;break; case -:num3=num1-num2;break; case *
7、:num3=num1*num2;break; case /:num3=num1/num2;break; printf(%d,num3);/清除屏幕void qingping() system(cls);/显示菜单void fanhuicaidan() printf( 菜单n); printf(a.算术运算n); printf(b.表达式运算n); printf(c.清屏重做n); printf(r.返回菜单n); printf(t.退出程序n);void main() char num1; /用于存放选择的菜单选项 int pd; /用于存放是否继续算术运算的选择项 printf( 菜单n);
8、 /先显示菜单 printf(a.算术运算n); printf(b.表达式运算n); printf(c.清屏重做n); printf(r.返回菜单n); printf(t.退出程序n); while(1) rewind(stdin); /清除键盘缓冲区 printf(nplease chose one letter from a,b,c,r,and tn); scanf(%c,&num1); /输入一个数用于判断是选择了哪一个菜单项 if(num1=a) /选择了做算术运算 suanshuyunsuan(); panduan(); scanf(%d,&pd); while(pd) /继续做算术运算时就循环 suanshuyunsuan2(); panduan(); scanf(%d,&pd); if(num1=b) /选择了做单运算符表达式运算 biaodashiyunsuan(); if(num1=c) /清屏 qingping(); if(num1=r) /显示菜单 fanhuicaidan(); if(num1=t) /退出程序 break;