实验一多功能计算器
一、问题描述
设计一个多功能计算器,可以完成基本的计算。
设计要求:
1、具备整型数据、浮点型数据的算术(加、减、乘、除)运算功能。
依次输入第一个运算数、运算符(+,-,*,/)、第二个运算数,然后输出结果。
结果可以作为下一个运算的第一运算数。
按‘C’清屏,按‘R’返回菜单。
例如:输入:2
+
5
输出:7
2、实现单运算符表达式计算的功能。
输入的操作数可以包含整数或浮点数。
输入表达式如下:
例如:输入:2+5
输出:7
二、算法说明
1.数据结构说明(可以图示说明,也可以文字说明)
本程序主要根据选择菜单编写了六个自定义函数,用于在main()函数中调用,在main()中,用一个字符变量num1来记录下菜单选项的标号,根据num1的值来决定调用哪个函数。
程序要完成的功能及所要用到的函数如下:
下面就是整个程序的流程图:
2.算法说明(即函数说明)
void suanshuyunsuan() //做算术运算时调用的函数
void suanshuyunsuan2() //选择继续做算术运算调用的函数,将上次运算的结果做为下次算术运算的第一个操作数//判断算术运算就是否继续
void panduan() //判断算术运算就是否继续
void biaodashiyunsuan() //单运算符表达式实现函数
void qingping() //清除屏幕
void fanhuicaidan() //显示菜单
三、测试结果(这部分需文字与图示结合)
1.第一组测试用例
(1)测试输入:
测试目的:测试算术运算的功能
结果输出:
(2)再一次输入:1测试目的:测试算术运算就是否能继续
结果输出:
(3)这时输入:0
测试目的:退出算术运算
结果输出:
2、第二组测试用例
测试输入:
测试目的:测试单运算符表达式函数
结果输出:
3、第三组测试用例
测试输入:c
测试目的:测试输入c就是否能清屏测试输出:
4、第四组测试用例
测试输入:r
测试目的:测试返回菜单函数测试输出:
5、第五组测试用例
测试输入:t
测试目的:测试就是否能正确退出程序测试输出:
附录:源代码(附上全部源代码,且不能雷同)
#include<stdio、h>
#include"windows、h"
double 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;
}
printf("结果:=");
printf("\n%lf\n",z);
}
//选择继续做算术运算调用的函数,将上次运算的结果做为下次算术运算的第一个操作数void suanshuyunsuan2()
{
double num1;
char fh;
printf("%lf\n",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("结果:=");
printf("\n%lf\n",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 '*':num3=num1*num2;break;
case '/':num3=num1/num2;break;
}
printf("%d",num3);
}
//清除屏幕
void qingping()
{
system("cls");
}
//显示菜单
void fanhuicaidan()
{
printf(" 菜单\n");
printf("a、算术运算\n");
C语言实现计算器功能
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、表达式运算\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",&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;
}
}。