C语言实现计算器功能

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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;

}

相关文档
最新文档