1、实验一 多功能计算器一、问题描述设计一个多功能计算器,可以完成基本的计算。设计要求:1.具备整型数据、浮点型数据的算术(加、减、乘、除)运算功能。依次输入第一个运算数、运算符(+,-,*,/) 、第二个运算数,然后输出结果。结果可以作为下一个运算的第一运算数。按C清屏,按R返回 菜单。例如:输入:2+5输出:72.实现单运算符表达式计算的功能。输入的操作数可以包含整数或浮点数。输入表达式如下: 例如:输入:2+5输出:7二、算法说明1数据结构说明(可以图示说明,也可以文字说明)本程序主要根据选择菜单编写了六个自定义函数,用于在 main()函数中调用,在 main()中,用一个字符变量 num
2、1 来记录下菜单选项的标号,根据 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#include“windows.h“dou
4、ble z; /定义全局变量用来存放算术运算前一次的结果/做算术运算时调用的函数void suanshuyunsuan() char fh,hh1,hh2; /hh1 与 hh2 是用来存放回车字符的double num1,num2;printf(“输入:“);scanf(“%lf%c%c%c%lf“, switch(fh) /判断是做什么运算case +:z=num1+num2;break;case -:z=num1-num2;break;case *:z=num1*num2;break;case /:z=num1/num2;break;printf(“结果:=“);printf(“n%lf
5、n“,z);/选择继续做算术运算调用的函数,将上次运算的结果做为下次算术运算的第一个操作数void suanshuyunsuan2()double num1;char fh;printf(“%lfn“,z);/首先输出前一次算术运算的结果rewind(stdin);scanf(“%c%lf“, switch(fh)case +:z=z+num1;break;case -:z=z-num1;break;case *:z=z*num1;break;case /:z=z/num1;break;printf(“结果:=“);printf(“n%lfn“,z);/判断算术运算是否继续void pandu
6、an()printf(“是否结束运算?n“);printf(“0.是 “);printf(“1.否n“);printf(“请选择 0 或 1:“);/单运算符表达式实现函数void biaodashiyunsuan()int num1,num2,num3;char fh;printf(“输入:“);scanf(“%d%c%d“,printf(“结果:=“);switch(fh)case +:num3=num1+num2;break;case -:num3=num1-num2;break;case *:num3=num1*num2;break;case /:num3=num1/num2;brea
7、k;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“); /先显示菜单printf(“a.算术运算 n“);printf(“b.表达式
8、运算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 t“n“);scanf(“%c“, /输入一个数用于判断是选择了哪一个菜单项if(num1=a) /选择了做算术运算suanshuyunsuan(); panduan();scanf(“%d“,while(pd) /继续做算术运算时就循环suanshuyunsuan2();panduan();scanf(“%d“,if(num1=b) /选择了做单运算符表达式运算biaodashiyunsuan();if(num1=c) /清屏qingping();if(num1=r) /显示菜单fanhuicaidan();if(num1=t) /退出程序break;