基于c语言的简易计算器的设计与实现(共25页).doc
《基于c语言的简易计算器的设计与实现(共25页).doc》由会员分享,可在线阅读,更多相关《基于c语言的简易计算器的设计与实现(共25页).doc(25页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上 课程名称: C语言程序设计课题名称: 简易计算器班级: 学号: 姓名: 指导老师: 成绩: 一、课程设计目的1. 通过这次的课程设计,巩固以前所学的知识:1) 进一步熟悉了各种语句,如宏定义语句,语句的嵌套等等。2) 对顺序,选择,循环结构的综合运用。3) 进一步巩固了一些算法,如求四则混合运算,三角函数,指对数的算法。2. 在课程设计的过程中,拓展了自己的知识面,知道我们所学过的C语言知识不过是很少的一部分。还有很多知识等待我们自己去学习。3. 为了完善自己的程序,通过上网,查阅图书等途径学到了一些新的知识,如对C语言中一些常用图形函数的应用。4. 通过课程设计,
2、加深对结构化程序设计思想的理解,能进行一个系统功能需求分析,并设计合理的模块化结构。5. 通过课程设计,提高程序开发能力,能运用合理的控制流编写清晰高效的程序。二、设计内容我设计的是一款简易计算器,界面清楚,操作方便,它能实现以下功能:1. 查询当时时间2. 简单的四则混合运算(支持小括号、优先级)3. 正弦、余弦函数计算4. 指对数计算三、总体设计 简单计算器由六大模块组成,模块调用图如下:Main() ZhiDuiShuYunSuan()SanJiaoYunSuan()Time()SiZeYunSuan()ZhuJieMian() 1. 主函数 void main() 功能:调用各个主要模
3、块,实现简单计算器的整体功能。 2. 主界面函数void ZhuJieMian() 功能:使用有关图形函数模拟出可视化的计算器外观界面,并提供用户输入窗口。 3. 时钟函数 int Time()功能:在模拟的可视化计算器中显示当时的时间。4. 四则混合运算函数void SiZeHunHeYunSuan()功能:实现简单的加减乘除混合运算,并支持优先级和带括号的运算。 5. 三角运算函数void SanJiaoYunSuan() 功能:实现基本的三角函数运算:sin(x)和cos(x)。 6. 指对数函数void ZhiDuiShuYunSuan() 功能:实现基本的指数和对数运算。四、详细设计
4、a)数据结构设计:int priority(char left,char right)char option=+,-,*,/,(,),=; int i,le,ri; int l=4,4,6,6,2,10,0; int r=3,3,5,5,9,3,0; for(i=0;i=7;i+) if(optioni=left) le=li; if(optioni=right) ri=ri; return(ri-le);用两个数组模拟数据结构栈,其特点是数据先进后出。用两个数组分别保存操作数和运算符。从字符串中依次分离出操作数与运算符,分别存入对应数组。当操作符串为空时,直接存入(相当与栈元素的压入)。当不
5、为空时,与数组最后一个元素(相当于栈顶)比较优先级,若大于直接存入,否则弹出操作数最后两位进行运算,直到操作符栈顶元素优先级小于当前运算符,并将其存入。b)模块接口设计:1.时钟函数:int Time()包括的子函数的函数原型:void TimeJieMian();用于制作界面2.四则混合运算:void SiZeHunHeYunSuan()包括的子函数的函数原型:void SiZehunheYunSuanJieMian( ); 用于制作界面char* readstr(); 将输入的连续单个字符整合成一个完整的串,并返回其首地址double yunsuan(double shu1,double
6、shu2,char option); 对shu1和shu2的简单加减乘除运算,并返回运算结果Int priority(char left,char right); 判断左符、右符的优先级谁高,若右大于左,返回正值,否则返回负值double compute(char *p); 传入表达式串的首地址,返回表达式之值void SiZeHunHeYunSuan()SiZehunheYunSuanJiemian()readstr()compute() Priority()Yunsuan() 3.三角运算:void SanJiaoYunSuan()包括的子函数的函数原型:void SanJiaoJieMi
7、an(); 用于制作界面。double hudu(double x); 把接受到的实数转化为弧度返回。double to_double(char *p); 将字符串转化为实数。double read(); 将连续输入的字符整合成一个浮点数并在屏幕上逆向输出将其返回。 double sin(double x); 求sinx,实数型参数,返回实数型值。double cos(double x); 求cosx,实数型参数,返回实数型值。void SanJiaoYunSuan()Cos(double x)Hudu(double x)Sin(double x)Sanjiaojiemian() Read()
8、 to_double(char *p)4指对数运算:void ZhiDuiShuYunSuan()包括的子函数的函数原型: void ZhiDuiShuJieMian(); 用于制作界面。 double read(); 将连续输入的字符整合成一个浮点数在屏幕上逆向输出将其返回。 double exp(double x); 求e的x次方,返回双精度实数值。 double lnx(double x); 求lnx的值,返回双精度实数值。void ZhiDuiShuYunSuan()double lnx(double x)double exp(double x)read() c)流程图:1 主函数的流
9、程图:endC=getch()调用主界面函数void ZhuJieMian()调用指对数函数调用三角函数调用四则混合运算函数调用时钟函数Switch(c)C=5?C=getch();调用主界面函数void ZhuJieMian()Char cstartyesnoc=1c=2c=3c=42 优先级:start接受参数char left char rightReturn(ri-le)optioni=lefti1e-8return(sinx)fz*=x*x;fm*=(t+1)*(t+2);t+=2;int sign=-1,t;xiang=x,fz=x,fm=1,t=1;接受参数x;double fz
10、,fm,sinx=x,xiang;start3.正弦函数:noxiang=sign*(fz/fm);sinx+=xiang;sign=sign*(-1); yes4.ln函数:return (0-y)fabs(t)1e-6y+=t; n+; s=-s;m*=(x-1); t=m*s/n;x=1/xfabs(t)1e-6Y+=t; n+; s=-s;M*=(x-1); t=m*s/n;x0&x=1接受参数x;int s=-1,n=0;float y=0,t=0,m=1;startnoyesyesnoyesno五、调试与测试遇到的问题:1.计算器的界面不会做,有时数字显示在边框外面。2.时钟显示不
11、出来。3.编写ln函数遇到困难。采取的解决措施:1.去图书馆借相关图书,上网查资料,通过自己的阅读,研究,不断的尝试,运行,修改,最终做出了简单的界面,但仍存在很多不足的地方,只能模拟出大体的外观,没能模拟出计算器中的各个键。2.查在界面显示的函数原型,对比自己的程序,不断修改,对比,调试,检查,反思,最后发现是语句顺序错误,显示写在了判断的后面,修改成功。3.在编写ln函数的时候,遇到很大困难,最后通过查阅资料,向别人请教编写出了函数。界面截图及相关说明:主界面: 按1:进入时钟界面 按2:进入四则混合运算界面 按3:进入三角函数运算界面按4:进入指对数运算界面 按5:退出程序时钟界面截图:
12、先按一下s键,并输入表达式之后的四则混合运算界面截图:运算结果截图:先按一下s键,并输入数字的三角函数界面截图:运算结果截图:先按一下e键,并输入数字的指对数运算界面截图:运算结果截图:按空格键,再按l键,并输入数字的指对数运算界面截图:结果界面截图:#include #include #include #include #include#include#define QINGLING setfillstyle(1 ,15);bar(195,80,445,130);outtextxy(435,120,0)#define SHUCHU setfillstyle(1,15);bar(195,80,
13、445,130);setcolor(0);outtextxy(220,120,ch)#define JIEMIAN setfillstyle(1,7); bar(165,40,475,400); /*底板*/ setfillstyle(1,15); bar(195,80,445,130); /*工作区*/#define PI 3.double hudu(double x); /*把输入的数转化为弧度*/void ZhuJieMian();void TimeJieMian();void SiZehunheYunSuanJieMian();void SanJiaoJieMian();void Zh
14、iDuiShuJieMian();double to_double(char *p);double read(); /*将读到的数字整和成实数*/double sin(double x);double cos(double x);double exp(double x); /*e的次方*/float lnx(float x);char* readstr();double yunsuan(double shu1,double shu2,char option);int priority(char left,char right) ;double compute(char *p);int Time
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 语言 简易 计算器 设计 实现 25
限制150内