C语言实现计算器功能.docx
《C语言实现计算器功能.docx》由会员分享,可在线阅读,更多相关《C语言实现计算器功能.docx(12页珍藏版)》请在冰豆网上搜索。
![C语言实现计算器功能.docx](https://file1.bdocx.com/fileroot1/2022-11/25/46f4ea75-1b03-4898-93bf-0bd3ae145ad9/46f4ea75-1b03-4898-93bf-0bd3ae145ad91.gif)
C语言实现计算器功能
实验一多功能计算器
一、问题描述
设计一个多功能计算器,可以完成基本的计算。
设计要求:
1.具备整型数据、浮点型数据的算术(加、减、乘、除)运算功能。
依次输入第一个运算数、运算符(+,-,*,/)、第二个运算数,然后输出结果。
结果可以作为下一个运算的第一运算数。
按‘C’清屏,按‘R’返回菜单。
例如:
输入:
2
+
5
输出:
7
2.实现单运算符表达式计算的功能。
输入的操作数可以包含整数或浮点数。
输入表达式如下:
例如:
输入:
2+5
输出:
7
二、算法说明
1.数据结构说明(可以图示说明,也可以文字说明)
本程序主要根据选择菜单编写了六个自定义函数,用于在main()函数中调用,在main()中,用一个字符变量num1来记录下菜单选项的标号,根据num1的值来决定调用哪个函数。
程序要完成的功能及所要用到的函数如下:
下面是整个程序的流程图:
2.算法说明(即函数说明)
voidsuanshuyunsuan()//做算术运算时调用的函数
voidsuanshuyunsuan2()//选择继续做算术运算调用的函数,将上次运算的结果做为下次算术运算的第一个操作数//判断算术运算是否继续
voidpanduan()//判断算术运算是否继续
voidbiaodashiyunsuan()//单运算符表达式实现函数
voidqingping()//清除屏幕
voidfanhuicaidan()//显示菜单
三、测试结果(这部分需文字与图示结合)
1.第一组测试用例
(1)测试输入:
测试目的:
测试算术运算的功能
结果输出:
(2)再一次输入:
1
测试目的:
测试算术运算是否能继续
结果输出:
(3)这时输入:
0
测试目的:
退出算术运算
结果输出:
2.第二组测试用例
测试输入:
测试目的:
测试单运算符表达式函数
结果输出:
3.第三组测试用例
测试输入:
c
测试目的:
测试输入c是否能清屏
测试输出:
4.第四组测试用例
测试输入:
r
测试目的:
测试返回菜单函数
测试输出:
5.第五组测试用例
测试输入:
t
测试目的:
测试是否能正确退出程序
测试输出:
附录:
源代码(附上全部源代码,且不能雷同)
#include
#include"windows.h"
doublez;//定义全局变量用来存放算术运算前一次的结果
//做算术运算时调用的函数
voidsuanshuyunsuan()
{
charfh,hh1,hh2;//hh1与hh2是用来存放回车字符的
doublenum1,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);
}
//选择继续做算术运算调用的函数,将上次运算的结果做为下次算术运算的第一个操作数
voidsuanshuyunsuan2()
{
doublenum1;
charfh;
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);
}
//判断算术运算是否继续
voidpanduan()
{
printf("是否结束运算?
\n");
printf("0.是");
printf("1.否\n");
printf("请选择0或1>:
");
}
//单运算符表达式实现函数
voidbiaodashiyunsuan()
{
intnum1,num2,num3;
charfh;
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);
}
//清除屏幕
voidqingping()
{
system("cls");
}
//显示菜单
voidfanhuicaidan()
{
printf("菜单\n");
printf("a.算术运算\n");
printf("b.表达式运算\n");
printf("c.清屏重做\n");
printf("r.返回菜单\n");
printf("t.退出程序\n");
}
voidmain()
{
charnum1;//用于存放选择的菜单选项
intpd;//用于存放是否继续算术运算的选择项
printf("菜单\n");//先显示菜单
printf("a.算术运算\n");
printf("b.表达式运算\n");
printf("c.清屏重做\n");
printf("r.返回菜单\n");
printf("t.退出程序\n");
while
(1)
{
rewind(stdin);//清除键盘缓冲区
printf("\npleasechoseoneletterfrom\"a,b,c,r,andt\"\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;
}
}