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

下载本文档

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

文档简介

PAGEPAGE17荆楚理工学院学院:计算机工程学院专业:计算机科学与技术班级:12级本二学生姓名:XX学号:0000000000000设计题目:简易计算器指导老师:XXXXX

目录TOC\o"1-2"\u第一章选题的意义 31.1课题研究的背景 31.2自己设计的优势 31.3设计上功能上的不足 3第二章研究的基础 42.1涉及的主要知识点 4第三章研究的可行性 53.1技术的可行性 53.2经济效益和社会效益的可行性 53.3法律的可行性 5第四章研究的具体部分 64.1研究的主要流程图 64.2研究的具体代码 74.3程序运行结果图表 13第五章总结 16参考文献 17第一章选题的意义①通过本项课程设计,可以培养独立思考、综合运用所学有关相应知识的能力,能更好的巩固《C语言程序设计》课程学习的内容,掌握工程软件设计的基本方法,强化上机动手编程能力,闯过理论与实践相结合的难关!更加了解了c语言的好处和其可用性!同时增加了同学之间的团队合作精神!更加也体会到以后在工作中团队合作的重要性和必要性!②通过C语言课程设计,使学生了解高级程序设计语言的结构,掌握基本的程序设计过程和技巧,掌握基本的分析问题和利用计算机求解问题的能力,具备初步的高级语言程序设计能力。为后续各门计算机课程的学习和毕业设计打下坚实基础。1.1课题研究的背景计算器是现代日常生活中使用较为频繁的工具之一,常用的计算器有简易版和科学计算器两种模式。简易版的计算器不支持表达式运算,每次只能输入一个数据或者运算符来计算,而科学计算器除了容纳简易版计算器的功能外,还支持表达式运算,用户可以输入一个合法的算术表达式来得到所需的结果。计算器对我们每一的学生都很熟悉,从初中到高中再到大学。但是我们只知道按下几个按钮计算器便会显示出结果,很少有学生分析过计算器究竟是如何运行的。C语言课程设计便是一个很好的机会,让我去亲自写计算器的运行代码,尽管是简单计算器的设计,但其背后的知识那是相当多的,对我是个挑战,我接受!1.2自己设计的优势现时学习生活中,常会遇到一些数目较大数据繁杂的数值运算,徒手运算起来很困难,这时候我们就必须用到计算器。人们对计算的要求不断提高,普通的功能简单的仅能进行加、减、乘、除运算的计算工具已经不能满足需要,需要一种能进行多种计算。现在已经有一些功能较为强大、涵盖面较广的计算软件,而且各种平台的小工具仍不断出现。这些大大方便了我们的生活给我们更多的选择和实现方式。本程序实现了加、减、乘、除、求幂、求模,求平方根,求Sin,求Cos,求Log10,求阶乘,取整,求正切,以及进制之间的相互转换。它可以直接输入数学表达式,不需要任何转换,就可以直接输出。1.3设计上功能上的不足本程序虽然在其他简易计算器的基础上新增加了很多类容,如:三角函数的求值、指数函数的计算、任意数的任意次方、进制之间的相互转换等;但是由于个人能力的限制,仍不能实现四则混合运算的功能,仅仅是能进行一个两个数或者一个数的计算,这是这个程序最为不足的地方。但是我相信,随着学习的不断深入,这个功能在不久以后会被很好的实现。第二章研究的基础C语言是一种结构化的程序设计语言。它功能丰富、表现力强、使用灵活、应用面广、目标程序效率高、可移植性好,既具有高级语言的特点,有具有低级语言的功能,以此它成为当今的主流程序设计语言之一。2.1涉及的主要知识点本程序的知识点主要来源于任正云版的《C语言程序设计(第二版)》,其中包含了C语言的数据类型与基本操作、顺序结构设计、选择结构程序设计、循环结构程序设计、函数、数组、指针等。本程序通过不同类型数据间的转换实现了部分进制间的转换,如十进制转换为八、十六中printf("%o\n",a);printf("%x\n",a);直接把输入的十进制数转换成了八和十六进制。对于控制程序进行什么样的计算方面,采用了输入的方法,根据提示的信息,输入不同的选项,可以实现不同的运算。在选择结构程序设计方面,采用if语句来判断如在二级制数和十进制数的相互转换的过程中用if—else语句对数的正负进行判断,为其分情况研究提供帮助;又如在一般二次方程的求解上运用if—elseif—else{if—else}语句对方程解的四种情况,即无解、两个相同实数根、两个不同实数根、和两个虚数根分别进行计算,以求出不同情况的解。本程序大量运用switchcase语句;以实现本程序的不同功能。如图(1):这里运用switch语句,来选择你所以运用到的这个程序的不同的功能,这里共有六个,根据你要使用的功能,可以相应的输入数据,来实现自己所需要的的计算。又如图(2)对于加减乘除的简单的四则混合运算也是运用的switch语句来实现的;通过switch来实现加减乘除的多级运算,而不是简单的两个数相加减,但是由于没有判断优先级的语句,所以此程序不能进行优先级的计算,只能从左到右的依次计算!本程序的循环结构用的是while和for。对于需要逐级进行的表达式,就用了这些循环语句在x^y的for(i=1;i<=b;i++)c=c*x;,二级制十进制的转换while(a!=0){t=a%2;b[i]=t;i++;a=a/2;}{for(j=i-1;j>=0;j--)printf("%d",b[j]);},求最值并排序的输入过程、排序过程、输出过程等过程中都运用有这些语句!之所以运用循环,是由于要实现其功能,都要按照一定的条件重复执行同样的一段语句,所以运用循环语句来做到多次重复。本程序采用的是函数调用的方法,该程序运用了6个自己声明的函数,通过这些函数来在一个程序上实现多种不同的功能voiddisplaymain();voidYBys();voidTSys();voidPSys();voidjzzh1();voidjzzh2();voidqfcz();这些就是就是笨晨曦的函数声明的部分内容。关于数组方面,对于进制的处理方面就用的是数组,把每个数字分别储存在一个空间里,这样就可以更方便的对数的每一个位进行操作。而不用分别去求每一位的数值,正是基于这个原因,本程序可以对多达80位的数来进行转换。突破了只能对同一位数求解的限制。第三章研究的可行性3.1技术的可行性本程序是用C语言编写的一部功能相对全面的简易计算器,它通过程序,可以帮助我们解决一些复杂的运算。其所运用的知识点也全部是《C语言程序设计(第二版)》上的知识。对于一些不能解决的问题,都可以在百度上找到根据。通过一个学期的学习,我认为要学号C语言程序这门课程,不仅要认真阅读课本知识,更重要的是要通过上机实践来巩固我们的知识,特别是学计算机专业的,我们更应该注重这一环节,只有这样我们才能成为一个合格的计算机人才。通过这一个课程设计,进一步来巩固所学的语句,如:循环,和分支结构的运用。还要熟悉四则运算和函数的算法。通过这次课程设计扩展自己的知识面,课本上的东西是远远不够的,可以通过上网或去图书馆查资料等方式得到一些新的知识,加深对课程化设计思想的理解,能进行一个系统功能分析,并设计一个合理的模块化结构,提高程序开发能力。3.2经济效益和社会效益的可行性对于现在的科技发展的时代,机器代替了手工,人们越来越热衷于对能节时省事的机器依赖,而这个程序正好可以满足人们对于麻烦计算的需要,通过使用这个计算器,来节省花在计算上的时间,这也正好符合现代人的要求──省事!同时,其成本也很低,就这个程序而言,仅仅需要一部装有VisualC++6.0的计算机就可以做出来了。而现在的电脑也普及于各个家庭了,所以也就对于大部分人来说,使用它不是问题,你仅仅只需要下载个VisualC++6.0就可以使用这个程序了,同时,你还可以通过VisualC++6.0来运行其他自己感兴趣的程序!3.3法律的可行性在编制过程中,都是通过和同学讨论和协商进行的,同时也参考了几本教课书,可以说里面没有盗窃和抄袭的成分,这个计算器完全属于个人的开发设计,没有侵权行为,实属正常的课程的设计。第四章研究的具体部分4.1研究的主要流程图开始开始输入数字(1-7),选择服务项目输入数字(1-7),选择服务项目输入数字(1-7)?输入数字(1-7)?NONOYY计算器运算输出计算结果输出计算结果结束结束4.2研究的具体代码/*主函数*/#include"stdio.h"#include"math.h"#defineN80#include"stdlib.h"#include"string.h"voidmain(){intchoice,flag=0;voiddisplaymain();voidYBys();voidTSys();voidPSys();voidjzzh1();voidjzzh2();voidqfcz();while(flag==0){displaymain();printf("pleaseinputadigital(1-7)\n");scanf("%d",&choice);if(choice>=1&&choice<=7)switch(choice){case1:YBys();break;case2:TSys();break;case3:PSys();break;case4:jzzh1();break;case5:jzzh2();break;case6:qfcz();break;default:printf("theprogressisover!\n");}else{printf("yourinputsiserror!\n");flag=1;}}getch();}voiddisplaymain()/*显示主菜单*/{printf("==============");printf("简易计算器");printf("==============\n");printf("请选择\n");printf("1-简单四则运算\n");printf("2-特殊数学运算\n");printf("3-对数进行排序并求最值\n");printf("4-十进制转化成N进制\n");printf("5-N进制转化成二进制\n");printf("6-求解一般二元一次方程组\n");printf("7-退出运算\n");}voidYBys()/*简单的四则运算函数*/{floata,b;charc;printf("请输入运算数和四则运算如a+(-,*,/)b:");scanf("%f%c%f",&a,&c,&b);switch(c){case'+':printf("%f\n",a+b);break;case'-':printf("%f\n",a-b);break;case'*':printf("%f\n",a*b);break;case'/':printf("%f\n",a/b);break;default:printf("输入错误");}}voidTSys()/*特殊的数学函数运算函数*/{floatx;inta,b,i;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");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){case1:printf("atan(x)=%f",atan(x));break;case2:printf("acos(x)=%f",acos(x));break;case3:printf("asin(x)=%f",asin(x));break;case4:printf("sin(x)=%f",sin(x));break;case5:printf("cos(x)=%f",cos(x));break;case6:printf("tan(x)=%f",tan(x));break;case7:printf("log(x)=%f",log(x));break;case8:printf("√(x)=%f",sqrt(x));break;case9:{floatc=1;printf("请再输入一个个数\n");scanf("%d",&b);for(i=1;i<=b;i++)c=c*x;printf("(x)^(x)=%f\n",c);};break;}elseprintf("yourinputsiserror!\n");}voidPSys()/*找出最大值和最小值的函数*/{floata[N],temp;inti,j,k,n;printf("请输入要比较数的个数\n");scanf("%f",&n);printf("请输入%d数",n);for(i=0;i<n;i++)scanf("%f",&a[i]);for(i=0;i<n;i++)printf("%f\n",a[i]);printf("\n\n");for(k=0;k<n-1;k++){for(j=1;j<=n-k-1;j++)if(a[j-1]>a[j]){temp=a[j-1];a[j-1]=a[j];a[j]=temp;}}for(i=0;i<n;i++)printf("%f\n",a[i]);printf("max=%f,min=%f",a[n-1],a[0]);printf("\n");}voidjzzh1()/*十进制数转化成二、八、十六进制数*/{inta,t,b[N],i=0,j,choice;printf("1-二进制");printf("2-八进制");printf("3-十六进制");printf("请选择转化形式(1-3)\n");scanf("%d",&choice);printf("请输入十进制数\n");scanf("%d",&a);switch(choice){case1:if(a>0){while(a!=0){t=a%2;b[i]=t;i++;a=a/2; }/*正整数十进制转化二进制*/{for(j=i-1;j>=0;j--)printf("%d",b[j]);}printf("\n");}else{while(a!=0){a=labs(a);a=255-a;t=a%2;b[i]=t;i++;a=a/2; }/*负整数十进制转化二进制*/{for(j=i-1;j>=0;j--)printf("%d",b[j]);};break;printf("\n");};break;case2:printf("%o\n",a);break;case3:printf("%x\n",a);break;}}voidjzzh2()/*N进制数转化成十进制数的函数*/{longt1;inti,n,t,t3;chara[N];printf("请输入一串数字:\n");scanf("%s",a);strupr(a);t3=strlen(a);t1=0;printf("pleaseinputn(2or8or16):\n");scanf("%d",&n);for(i=0;i<t3;i++){if(a[i]-'0'>=n&&a[i]<'A'||a[i]-'A'+10>=n){printf("dataerror!!");}if(a[i]>='0'&&a[i]<='9')t=a[i]-'0';elseif(n>=11&&(a[i]>='A'&&a[i]<='A'+n-10))t=a[i]-'A'+10;t1=t1*n+t;}printf("thedecimalis%ld\n",t1);}voidqfcz()/*求解二元一次方程组函数*/{floata,b,c,disc,x1,x2,realpart,imagpart;printf("请依次输入一般二次方程的系数a,b,c\n");scanf("%f,%f,%f",&a,&b,&c);if(fabs(a)<=1e-6&&fabs(b)<=1e-6)printf("方程无解!\n");elseif(fabs(a)<=1e-6&&fabs(b)>1e-6)printf("方程有单根是%8.4f\n",-c/b);else{disc=b*b-4*a*c;if(fabs(disc)<=1e-6||disc>1e-6){x1=(-b+sqrt(disc))/(2*a);x2=(-b-sqrt(disc))/(2*a);printf("方程有两个实数根!\n");printf("x1=%8.4f",x1);printf("x2=%8.4f",x2);}else{realpart=-b/(2*a);imagpart=sqrt(-disc)/(2*a);printf("方程有两个虚根!\n");printf("x1=%8.4f+%8.4fi\n",realpart,imagpart);printf("x2=%8.4f-%8.4fi\n",realpart,imagpart);}}}4.3程序运行结果图表第五章总结通过为期一周的课程设计,我们对《C语言》这门课程有了更深一步的了解。它是计算机程序设计的重要理论技术基础,在我们信息与计算科学专业的学习中占据着十分重要的地位。同时也使我们知道,要学好这门课程,仅学习书本上的知识是不够的,还要有较强的实践能力。因为我们学习知识就是为了实践。而只有多实践,多编写程序,才能更好的理解与掌握书本上的东西。运用《C语言》中的算法思想作数据结构,结合C语言基本知识,编写一个简单的计算器。通过完成本课题,进一步熟悉C语言的基本知识,并掌握数据结构的一些基本算法思想,进一步熟悉数组的建立运用和函数的调用等。这个C语言课程设计是一个简单的计算器,在设计和编写的时候费了很多时间,有时候一天才写一点,而且还编译不成功,在编译的时候遇到了很多困难,同时编程是一个很辛苦的事情,它需要一个人具有良好的耐心和细心,也需要良好的身体,而且有很好的C语言基础。在这次C语言程序设计中,我们学会了如何面对困难,如何团结互助,如何分析和解决问题。当我们解决了一个问题会感到很开心和有成就感。因此,我们觉得这次的程序设计很有意义,他不仅让我们有团队合作精神,也是一种对自身素质和体质的考验,这为我们今后的毕业论文打下了基础,和对未来的发展确定了方向,在以后的学习和生活中我们会努力朝这方面发展,争取以后成为一名优秀的程序设计师参考文献任正云.C语言程序设计(第二版).中国水利水电出版社。王娣、安剑、孙秀梅.C语言程序开发.人民邮电出版社。

论大学生写作能力写作能力是对自己所积累的信息进行选择、提取、加工、改造并将之形成为书面文字的能力。积累是写作的基础,积累越厚实,写作就越有基础,文章就能根深叶茂开奇葩。没有积累,胸无点墨,怎么也不会写出作文来的。写作能力是每个大学生必须具备的能力。从目前高校整体情况上看,大学生的写作能力较为欠缺。一、大学生应用文写作能力的定义那么,大学生的写作能力究竟是指什么呢?叶圣陶先生曾经说过,“大学毕业生不一定能写小说诗歌,但是一定要写工作和生活中实用的文章,而且非写得既通顺又扎实不可。”对于大学生的写作能力应包含什么,可能有多种理解,但从叶圣陶先生的谈话中,我认为:大学生写作能力应包括应用写作能力和文学写作能力,而前者是必须的,后者是“不一定”要具备,能具备则更好。众所周知,对于大学生来说,是要写毕业论文的,我认为写作论文的能力可以包含在应用写作能力之中。大学生写作能力的体现,也往往是在撰写毕业论文中集中体现出来的。本科毕业论文无论是对于学生个人还是对于院系和学校来说,都是十分重要的。如何提高本科毕业论文的质量和水平,就成为教育行政部门和高校都很重视的一个重要课题。如何提高大学生的写作能力的问题必须得到社会的广泛关注,并且提出对策去实施解决。二、造成大学生应用文写作困境的原因:(一)大学写作课开设结构不合理。就目前中国多数高校的学科设置来看,除了中文专业会系统开设写作的系列课程外,其他专业的学生都只开设了普及性的《大学语文》课。学生写作能力的提高是一项艰巨复杂的任务,而我们的课程设置仅把这一任务交给了大学语文教师,可大学语文教师既要在有限课时时间内普及相关经典名著知识,又要适度提高学生的鉴赏能力,且要教会学生写作规律并提高写作能力,任务之重实难完成。(二)对实用写作的普遍性不重视。“大学语文”教育已经被严重地“边缘化”。目前对中国语文的态度淡漠,而是呈现出全民学英语的大好势头。中小学如此,大学更是如此。对我们的母语中国语文,在大学反而被漠视,没有相关的课程的设置,没有系统的学习实践训练。这其实是国人的一种偏见。应用写作有它自身的规律和方法。一个人学问很大,会写小说、诗歌、戏剧等,但如果不晓得应用文写作的特点和方法,他就写不好应用文。(三)部分大学生学习态度不端正。很多非中文专业的大学生对写作的学习和训练都只是集中在《大学语文》这一门课上,大部分学生只愿意被动地接受大学语文老师所讲授的文学经典故事,而对于需要学生动手动脑去写的作文,却是尽可能应付差事,这样势必不能让大学生的写作水平有所提高。(四)教师的实践性教学不强。学生写作能力的提高是一项艰巨复杂的任务,但在教学中有不少教师过多注重理论知识,实践性教学环节却往往被忽视。理论讲了一大堆,但是实践却几乎没有,训练也少得可怜。阅读与写作都需要很强的实践操作,学习理论固然必不可少,但是阅读方法和写作技巧的掌握才是最重要的。由于以

温馨提示

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

评论

0/150

提交评论