C语言实现计算器功能
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验一多功能计算器
一、问题描述
设计一个多功能计算器,可以完成基本的计算。
设计要求:
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
#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;
}