简易的计算器-C语言课程设计_第1页
简易的计算器-C语言课程设计_第2页
简易的计算器-C语言课程设计_第3页
简易的计算器-C语言课程设计_第4页
简易的计算器-C语言课程设计_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、JINGCHU UNIVERSITY OF TECHNOLOGY 简单计算器设计学 院 计算机工程学院 专 业 XX 年级班别 XX 学 号 XX 学生姓名 XX 指导教师 XX 2015年 6 月 25 日目 录1. 选题的意义11.1 课题研究的背景11.2 自己设计的优势11.3 设计上功能上的不足12. 研究的基础12.1 涉及的主要知识点23. 研究的可行性23.1 技术的可行性24. 研究的具体部分34.1 研究的主要流程图34.2 研究的具体代码44.3程序运行结果图表11参考文献13131. 选题的意义通过本项课程设计,可以培养独立思考、综合运用所学有关相应知识的能力,能更好的

2、巩固C语言程序设计课程学习的内容,掌握工程软件设计的基本方法,强化上机动手编程能力,闯过理论与实践相结合的难关!更加了解了c语言的好处和其可用性!同时增加了同学之间的团队合作精神!更加也体会到以后在工作中团队合作的重要性和必要性!通过C语言课程设计,使我了解高级程序设计语言的结构,掌握基本的程序设计过程和技巧,掌握基本的分析问题和利用计算机求解问题的能力,具备初步的高级语言程序设计能力。为后续各门计算机课程的学习和毕业设计打下坚实基础。1.1 课题研究的背景计算器是现代日常生活中使用较为频繁的工具之一,常用的计算器有简易版和科学计算器两种模式。简易版的计算器不支持表达式运算,每次只能输入一个数

3、据或者运算符来计算,而科学计算器除了容纳简易版计算器的功能外,还支持表达式运算,用户可以输入一个合法的算术表达式来得到所需的结果。计算器对我们每一的学生都很熟悉,从初中到高中再到大学。但是我们只知道按下几个按钮计算器便会显示出结果,很少有学生分析过计算器究竟是如何运行的。C语言课程设计便是一个很好的机会,让我去亲自写计算器的运行代码,尽管是简单计算器的设计,但其背后的知识那是相当多的,对我是个挑战,我接受!1.2 自己设计的优势现时学习生活中,常会遇到一些数目较大数据繁杂的数值运算,徒手运算起来很困难,这时候我们就必须用到计算器。人们对计算的要求不断提高,普通的功能简单的仅能进行加、减、乘、除

4、运算的计算工具已经不能满足需要,需要一种能进行多种计算。现在已经有一些功能较为强大、涵盖面较广的计算软件,而且各种平台的小工具仍不断出现。这些大大方便了我们的生活给我们更多的选择和实现方式。本程序实现了加、减、乘、除、求幂、求模,求平方根,求Sin,求Cos,求Log10,求阶乘,取整,求正切,以及进制之间的相互转换。它可以直接输入数学表达式,不需要任何转换,就可以直接输出。1.3 设计上功能上的不足本程序虽然在其他简易计算器的基础上新增加了很多类容,如:三角函数的求值、指数函数的计算、任意数的任意次方、进制之间的相互转换等;但是由于个人能力的限制,仍不能实现四则混合运算的功能,仅仅是能进行一

5、个两个数或者一个数的计算,这是这个程序最为不足的地方。但是我相信,随着学习的不断深入,这个功能在不久以后会被很好的实现。2. 研究的基础 C语言是一种结构化的程序设计语言。它功能丰富、表现力强、使用灵活、应用面广、目标程序效率高、可移植性好,既具有高级语言的特点,有具有低级语言的功能,以此它成为当今的主流程序设计语言之一。2.1 涉及的主要知识点本程序的知识点主要来源于任正云版的C语言程序设计(第二版),其中包含了C语言的数据类型与基本操作、顺序结构设计、选择结构程序设计、循环结构程序设计、函数、数组、指针等。本程序通过不同类型数据间的转换实现了部分进制间的转换,如十进制转换为八、十六中pri

6、ntf("%on",a); printf("%xn",a);直接把输入的十进制数转换成了八和十六进制。对于控制程序进行什么样的计算方面,采用了输入的方法,根据提示的信息,输入不同的选项,可以实现不同的运算。在选择结构程序设计方面,采用if语句来判断如在二级制数和十进制数的相互转换的过程中用ifelse语句对数的正负进行判断,为其分情况研究提供帮助;又如在一般二次方程的求解上运用ifelse ifelseifelse语句对方程解的四种情况,即无解、两个相同实数根、两个不同实数根、和两个虚数根分别进行计算,以求出不同情况的解。本程序大量运用switch ca

7、se 语句;以实现本程序的不同功能。如图(1):这里运用switch语句,来选择你所以运用到的这个程序的不同的功能,这里共有六个,根据你要使用的功能,可以相应的输入数据,来实现自己所需要的的计算。又如图(2)对于加减乘除的简单的四则混合运算也是运用的switch语句来实现的;通过switch来实现加减乘除的多级运算,而不是简单的两个数相加减,但是由于没有判断优先级的语句,所以此程序不能进行优先级的计算,只能从左到右的依次计算!本程序的循环结构用的是while和for。对于需要逐级进行的表达式,就用了这些循环语句在xy的for(i=1;i<=b;i+) c=c*x;,二级制十进制的转换wh

8、ile(a!=0)t=a%2;bi=t;i+;a=a/2; for(j=i-1;j>=0;j-) printf("%d",bj);,求最值并排序的输入过程、排序过程、输出过程等过程中都运用有这些语句!之所以运用循环,是由于要实现其功能,都要按照一定的条件重复执行同样的一段语句,所以运用循环语句来做到多次重复。本程序采用的是函数调用的方法,该程序运用了6个自己声明的函数,通过这些函数来在一个程序上实现多种不同的功能void displaymain(); void YBys(); void TSys(); void PSys(); void jzzh1(); void j

9、zzh2();void qfcz();这些就是就是笨晨曦的函数声明的部分内容。关于数组方面,对于进制的处理方面就用的是数组,把每个数字分别储存在一个空间里,这样就可以更方便的对数的每一个位进行操作。而不用分别去求每一位的数值,正是基于这个原因,本程序可以对多达80位的数来进行转换。突破了只能对同一位数求解的限制。3. 研究的可行性 3.1 技术的可行性本程序是用C语言编写的一部功能相对全面的简易计算器,它通过程序,可以帮助我们解决一些复杂的运算。其所运用的知识点也全部是C语言程序设计(第二版)上的知识。对于一些不能解决的问题,都可以在百度上找到根据。通过一个学期的学习,我认为要学号C语言程序这

10、门课程,不仅要认真阅读课本知识,更重要的是要通过上机实践来巩固我们的知识,特别是学计算机专业的,我们更应该注重这一环节,只有这样我们才能成为一个合格的计算机人才。通过这一个课程设计,进一步来巩固所学的语句,如:循环,和分支结构的运用。还要熟悉四则运算和函数的算法。通过这次课程设计扩展自己的知识面,课本上的东西是远远不够的,可以通过上网或去图书馆查资料等方式得到一些新的知识,加深对课程化设计思想的理解,能进行一个系统功能分析,并设计一个合理的模块化结构,提高程序开发能力。4. 研究的具体部分4.1 研究的主要流程图 开始输入数字(1-7),选择服务项目输入数字(1-7)?NOY 计算器运算输出计

11、算结果 结束 4.2 研究的具体代码/*主函数*/ #include"stdio.h" #include"math.h" #define N 80 #include "stdlib.h"#include"string.h" void main() int choice,flag=0; void displaymain(); void YBys(); void TSys(); void PSys(); void jzzh1(); void jzzh2(); void qfcz(); while(flag=0) dis

12、playmain(); printf("please input a digital(1-7)n"); scanf("%d",&choice); if(choice>=1&&choice<=7) switch(choice) case 1:YBys();break; case 2:TSys();break; case 3: PSys();break; case 4:jzzh1();break; case 5: jzzh2();break; case 6: qfcz();break; default:printf(&qu

13、ot;the progress is over!n"); else printf("your inputs is error!n");flag=1; getch(); void displaymain()/*显示主菜单*/ printf("="); printf("简易计算器"); printf("=n"); printf("请选择n"); printf(" 1-简单四则运算n"); printf(" 2-特殊数学运算n"); printf(&q

14、uot; 3-对数进行排序并求最值n"); printf(" 4-十进制转化成N进制n"); printf(" 5-N进制转化成二进制n"); printf(" 6-求解一般二元一次方程组n"); printf(" 7-退出运算n"); void YBys()/*简单的四则运算函数*/ float a,b; char c; printf("请输入运算数和四则运算如a+(-,*,/)b:"); scanf("%f%c%f",&a,&c,&b);

15、 switch(c) case '+':printf("%fn",a+b);break; case '-':printf("%fn",a-b);break; case '*':printf("%fn",a*b);break; case '/':printf("%fn",a/b);break; default: printf("输入错误"); void TSys()/*特殊的数学函数运算函数*/ float x; int a,b,i;

16、 printf("atan(x),acos(x),asin(x),sin(x),cos(x),tan(x),log(x),(x),(x)(x)n"); printf("1-atan(x)n"); printf("2-acos(x)n"); printf("3-asin(x)n"); printf("4-sin(x)n"); printf("5-cos(x)n"); printf("6-tan(x)n"); printf("7-log(x)n&qu

17、ot;); printf("8-(x)n"); printf("9-(x)(x)n"); printf("请选择数学函数n"); scanf("%d",&a); printf("请输入数值n"); scanf("%f",&x); if(a>=1&&a<=9) switch(a) case 1:printf("atan(x)=%f",atan(x);break; case 2:printf("acos(x

18、)=%f",acos(x);break; case 3:printf("asin(x)=%f",asin(x);break; case 4:printf("sin(x)=%f",sin(x);break; case 5:printf("cos(x)=%f",cos(x);break; case 6:printf("tan(x)=%f",tan(x);break; case 7:printf("log(x)=%f",log(x);break; case 8:printf("(x

19、)=%f",sqrt(x);break; case 9: float c=1; printf("请再输入一个个数n"); scanf("%d",&b); for(i=1;i<=b;i+) c=c*x; printf("(x)(x)=%fn",c); ;break; else printf("your inputs is error!n");void PSys()/*找出最大值和最小值的函数*/ float aN,temp; int i,j,k,n; printf("请输入要比较数的

20、个数n"); scanf("%f",&n); printf("请输入%d数",n); for(i=0;i<n;i+) scanf("%f",&ai); for(i=0;i<n;i+) printf("%fn",ai); printf("nn"); for(k=0;k<n-1;k+) for(j=1;j<=n-k-1;j+) if(aj-1>aj) temp=aj-1; aj-1=aj; aj=temp; for(i=0;i<n;i+)

21、 printf("%fn",ai); printf("max=%f,min=%f",an-1,a0); printf("n");void jzzh1()/*十进制数转化成二、八、十六进制数*/ int a,t,bN,i=0,j,choice; printf("1-二进制"); printf("2-八进制"); printf("3-十六进制"); printf("请选择转化形式(1-3)n"); scanf("%d",&choic

22、e); printf("请输入十进制数n"); scanf("%d",&a); switch(choice) case 1: if(a>0) while(a!=0) t=a%2;bi=t; i+;a=a/2; /*正整数十进制转化二进制*/ for(j=i-1;j>=0;j-) printf("%d",bj); printf("n"); else while(a!=0) a=labs(a);a=255-a;t=a%2;bi=t; i+;a=a/2; /*负整数十进制转化二进制*/ for(j=i

23、-1;j>=0;j-) printf("%d",bj); ;break; printf("n");break; case 2:printf("%on",a);break; case 3:printf("%xn",a);break; void jzzh2()/*N进制数转化成十进制数的函数*/long t1;int i,n,t,t3;char aN;printf("请输入一串数字 :n");scanf("%s",a);strupr(a);t3=strlen(a);t1=0

24、;printf("please input n(2or8or16):n");scanf("%d",&n);for(i=0;i<t3;i+) if(ai-'0'>=n&&ai<'A'|ai-'A'+10>=n) printf("data error!"); if(ai>='0'&&ai<='9') t=ai-'0' else if(n>=11&&(ai>='A'&&ai<='A'+n-10) t=ai-'A'+10; t1=t1*n+t; printf("the decimal is %

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论