C语言程序的设计之简单计算器.docx
- 文档编号:29682769
- 上传时间:2023-07-26
- 格式:DOCX
- 页数:24
- 大小:380.34KB
C语言程序的设计之简单计算器.docx
《C语言程序的设计之简单计算器.docx》由会员分享,可在线阅读,更多相关《C语言程序的设计之简单计算器.docx(24页珍藏版)》请在冰豆网上搜索。
C语言程序的设计之简单计算器
学院
学生课程设计(论文)
题目:
简易计算器
学生:
肪瑜学号:
8
所在院(系):
计算机学院
专业:
计算机科学与技术
班级:
10计本
(1)班
指导教师:
三清职称:
讲师
2011年6月25日
学院教务处制
学院本科学生课程设计任务书
题 目
计算器的设计
1、课程设计的目的
本课程设计的目的和任务:
(1)巩固和加深学生对C语言课程的基本知识的理解和掌握;
(2)掌握C语言编程和程序调试的基本技能;(3)利用C语言进行简单软件设计的基本思路和方法;(4)提高运用C语言解决实际问题的能力。
2、课程设计的容和要求(包括原始数据、技术要求、工作要求等)
一、用C实现如下功能:
使用C语言编写一个类似于Windows附件提供的计算器软件,实现计算器的基本功能,能进行浮点数的加、减、乘、除、乘方和求模运算。
二、撰写课程设计报告或课程设计总结课程设计报告要求:
总结报告包括需求分析、总体设计、详细设计、编码(详细写出编程步骤)、测试的步骤和容、课程设计总结、参考资料等,不符合以上要求者,则本次设计以不与格记。
3、主要参考文献
[1]潭浩强,《C程序设计》,清华大学
[2]王声决,《C语言程序设计》,中国铁道
[3]潭浩强,《C程序设计题解与上机指导》,清华大学
[4]玲等,《C语言程序设计应用教程》,西南师大学
4、课程设计工作进度计划
第1天完成方案设计与程序框图
第2、3天编写程序代码
第4天程序调试分析和结果
第5天课程设计报告和总结
指导教师(签字)
日期
年月日
教研室意见:
年月日
学生(签字):
接受任务时间:
年月日
注:
任务书由指导教师填写。
课程设计(论文)指导教师成绩评定表
题目名称
教师网上成绩录入系统开发
评分项目
分值
得分
评价涵
工作
表现
20%
01
学习态度
6
遵守各项纪律,工作刻苦努力,具有良好的科学工作态度。
02
科学实践、调研
7
通过实验、试验、查阅文献、深入生产实践等渠道获取与课程设计有关的材料。
03
课题工作量
7
按期圆满完成规定的任务,工作量饱满。
能力
水平
35%
04
综合运用知识的能力
10
能运用所学知识和技能去发现与解决实际问题,能正确处理实验数据,能对课题进行理论分析,得出有价值的结论。
05
应用文献的能力
5
能独立查阅相关文献和从事其他调研;能提出并较好地论述课题的实施方案;有收集、加工各种信息与获取新知识的能力。
06
设计(实验)能力,方案的设计能力
5
能正确设计实验方案,独立进行装置安装、调试、操作等实验工作,数据正确、可靠;研究思路清晰、完整。
07
计算与计算机应用能力
5
具有较强的数据运算与处理能力;能运用计算机进行资料搜集、加工、处理和辅助设计等。
08
对计算或实验结果的分析能力(综合分析能力、技术经济分析能力)
10
具有较强的数据收集、分析、处理、综合的能力。
成果
质量
45%
09
插图(或图纸)质量、篇幅、设计(论文)规化程度
5
符合本专业相关规或规定要求;规化符合本文件第五条要求。
10
设计说明书(论文)质量
30
综述简练完整,有见解;立论正确,论述充分,结论严谨合理;实验正确,分析处理科学。
11
创新
10
对前人工作有改进或突破,或有独特见解。
成绩
指导教师评语
指导教师签名:
年 月 日
摘要
一直以来,C语言都是在国际上广泛流行的通用编程语言,它既具有高级语言的特点,又具有低级语言的些特点;既可用于编写系统软件又可用于编写应用软件。
虽然说近二十年来计算机技术取得了长远的进步,各种编程语言不断地涌现出来,但是C语言功能强大,使用灵活,即使是在科技快速发展的二十一世纪,仍展现出了强大的生命力,为社会的高度信息化,特别是在信息技术和网络技术领域做出了十分重要的贡献。
本文介绍了用C语言编写一个简易计算器。
实现数学上对浮点数加、减、乘、除、乘方、开方、求模以与进制转换的运算。
利用这个程序可以方便的进行日常性的小规模运算,小巧简易,是个实用的工具。
关键词:
程序设计,计算器,C语言,函数,循环
1绪论
1.1课程设计背景
日常生活中我们经常会遇到一些小型数据计算的问题,本课程设计就是以此为出发点,设计了这样一个简单的计算器,用以实现基本的数学运算。
在C语言当过定义模块函数,并在主函数中进行调用从而实现数据的运算。
通过与用户之间的交互,可以在操作界面上实现对各种运算的选择和程序的控制。
在完成课程设计的期间,参阅了相关的书籍并在网络上查找相关的资料,对实现这个设计提供了很大的帮助。
由于设计水平和知识方面的匮乏,本次课程设计还存在缺点和不足,希望大家提出宝贵的意见,互相交流以期提高。
1.2需求环境
本课程设计需要的设备为硬件要求和软件配置要求具体要求如下:
①硬件要求:
一台计算机。
②软件配置:
WINDOWS系统、c/c++程序设计学习与实验软件
1.3课程设计思路
做计算器最主要的就是实用性,要简单,便于操作。
程序的界面要方便与用户之间的交互。
并以设计的要求为基础,进行了创新,增加了对进制转换运算的支持,这就大致的确定了程序的几个模块。
然后对每个模块进行设计,再整合起来,由此一个简洁美观的计算器就建立起来了。
2课程设计概要
在设计程序的时候,考虑到计算器的功能,我按照其功能划分为几个模块,在程序开始后,可以进行选择,到自己希望进行操作的模块中去。
有了具体的模块之后,在设计程序的时候有更方便了,同时也有法可依,不会造成混乱。
具体分为:
加减乘除运算、乘方开方运算、进制转换运算、求模运算和退出五个模块。
具体的模块关系如表2-1:
表2-1基本模块表
模块
简单的四则运算
乘方开方
进制转换
求绝对值
退出
实现功能
加减乘除运算
乘方开方运算
进制转换运算
求模运算
退出程序
流程图详解:
首先用户运行程序,进入开始菜单,由用户对所要进行的运算做出选择。
当选择运算方式时,程序将调用对应的运算模块,对用户输入的数据进行处理,并输出结果,随后,当用户确认结果后,程序将清屏,并返回开始菜单,由用户继续进行选择。
当选择退出时,程序将调用退出模块,显示“拜拜!
使用哈!
”,并退出程序。
开始菜单
选择
加减
乘除
乘方
开方
进制
转换
求绝
对值
退出
结束
图2-1程序流程图
3程序结构和各模块分析
3.1菜单操作模块
3.1.1fun1函数功能
在这个模块中,为了方便用户的使用,我们定义了一个菜单调用函数,将整个菜单尽量做到简易美观。
程序开始时,由用户对所要进行的运算进行选择。
3.1.2功能实现代码
程序如下:
voidfun1()/*定义菜单调用函数*/
printf("***********************菜单**********************\n");
printf("**\n");
printf("*设计人:
肪瑜*\n");
printf("**\n");
printf("*************************************************\n");
printf("*1.加法运算*\n");
printf("*2.减法运算*\n");
printf("*3.乘法运算*\n");
printf("*4.除法运算*\n");
printf("*5.乘方运算*\n");
printf("*6.开平方运算*\n");
printf("*7.转换为2进制*\n");
printf("*8.转换为8进制*\n");
printf("*9.转换为16进制*\n");
printf("*10.求绝对值*\n");
printf("*11.退出*\n");
printf("*************************************************\n");
printf("\n");
printf("输入你想要进行的运算(1~11):
\n");
printf("\n");
}
3.2加减乘除运算模块
3.2.1fun2函数功能
当用户的选择为1~4时,程序将调用fun2函数(加减乘除运算模块),该函数首先对用户的选项进行匹配,当匹配为1时,进行加法运算;为2时,进行减法运算;为3时,进行乘法运算;为4时,进行除法运算。
最后将所得结果输出。
3.2.2功能实现代码
算法:
采用swich语句的分支机构,对用户选择的加减乘除运算进行匹配,匹配后将进行相应的运算并输出结果。
程序如下:
voidfun2(floatx,floaty,intc)/*定义加减乘除模块函数*/
{floatz;
switch(c)
{
case1:
z=x+y;printf("输出结果为:
%g+%g=%g\n",x,y,z);break;/*进行加法运算*/
case2:
z=x-y;printf("输出结果为:
%g-%g=%g\n\n",x,y,z);break;/*进行减法运算*/
case3:
z=x*y;printf("输出结果为:
%g*%g=%g\n",x,y,z);break;/*进行乘法运算*/
case4:
if(y==0)printf("输入错误!
");/*如果分母为0则输出“输入错误!
”*/
else{z=x/y;printf("输出结果为:
%g/%g=%g\n",x,y,z);}break;/*进行除法运算*/
default:
printf("输入错误!
");
}
}
3.3乘方和开方运算模块
3.3.1fun3函数功能
当用户的选择为5或6时,程序将调用fun3函数(乘方和开方运算模块),该函数首先对用户的选项进行匹配,当匹配为5时,进行乘方运算;为6时,进行开方运算。
最后将所得结果输出。
3.3.2功能实现代码
算法:
采用swich语句的分支机构,对用户选择的乘方开方运算进行匹配,匹配后将进行相应的运算并输出结果。
程序如下:
voidfun3(floatx,intc)/*定义乘方开方模块函数*/
{floatz;
switch(c)
{
case5:
z=x*x;printf("输出结果为:
%g\n",z);break;/*进行乘方运算*/
case6:
if(x<0)printf("输入错误!
");/*如果x小于0则输出“输入错误!
”*/
else{z=sqrt(x);printf("输出结果为:
%g\n",z);}break;/*进行开方运算*/
default:
printf("输入错误!
");
}
}
3.4进制转换运算模块
3.4.1convert函数功能
当用户的选择为7~9时,程序将调用convert函数(进制转换运算模块),该函数首先对用户的选项进行匹配,当匹配为7时,将把用户所输入的数据转换为2进制数;为8时,将把用户所输入的数据转换为8进制数;为9时,将把用户所输入的数据转换为16进制数。
最后将所得结果输出。
3.4.2功能实现代码
算法:
采用swich语句的分支机构,对用户所要进行转换的进制进行匹配,匹配后将进行相应的运算并输出结果。
程序如下:
voidconvert(intm,intc)/*定义进制转换模块函数*/
{chars[128];
switch(c)
{case7:
itoa(m,s,2);printf("输出结果为:
[%s]\n",s);break;/*转换为二进制数*/
case8:
printf("输出结果为:
%o\n",m);break;/*转换为8进制数*/
case9:
printf("输出结果为:
%x\n",m);break;/*转换为16进制数*/
default:
printf("输入错误!
");
}
}
特殊函数介绍:
itoa()函数的头文件是#include
第一个参数是要转换的数字,第二个参数是要写入转换结果的目标字符串,第三个参数是转移数字时所用的基数。
在上例中,转换基数为2,所以函数将把数据转换为二进制数。
3.5求模运算模块
3.5.1fun4函数功能
当用户的选择为10时,程序将调用fun4函数(求模运算模块),并将用户所输入的数据求绝对值并输出。
3.5.2功能实现代码
算法:
采用fabs()的求绝对值函数,匹配后将数据进行相应的运算并输出结果。
程序如下:
voidfun4(floatx)/*定义求绝对值模块函数*/
{floatz=0;
z=fabs(x);/*进行求模运算*/
printf("输出结果为:
%f\n",z);
}
3.6退出模块
3.6.1代码功能
当用户的选择为11时,程序将调用quit函数(退出模块),该函数将终止程序,并退出当前界面。
3.6.2功能实现代码
程序如下:
voidquit()/*定义退出程序模块函数*/
{exit(0);}
4程序调试
4.1操作界面
在TC环境下运行程序,进入程序主界面。
首先是由用户对所要进行的运算进行选择。
图4-1就显示出操作的界面。
图4-1操作界面
4.2加减乘除运算
运行程序,当用户的选择为1-4时,程序将根据用户所选择的运算方式进行加减乘除运算。
图4-2~4-5显示了具体的操作方法与结果。
图4-2加法运算
图4-3减法运算
图4-4乘法运算
图4-5除法运算
4.3乘方和开方运算
开启程序后,当用户的选择为5或6时,程序将根据用户所选择的运算方式进行乘方和开方运算。
图4-6和4-7显示了具体的操作方法与操作结果
图4-6乘方运算
图4-7开方运算
4.4进制转换运算
运行程序,当用户的选择为7-9时,程序将根据用户所选择的运算方式把所输入的数据分别转换为2进制、8进制和16进制数。
操作方法与结果见图4-8~4-10。
图4-8转换为二进制
图4-9转换为八进制
图4-10转换为十六进制
4.5求模运算
开启程序后,当用户的选择为10时,程序将根据用户所选择的运算方式进行求绝对值的运算。
图4-11显示了具体的操作方法与操作结果
图4-11求模运算
4.6退出
基本操作完成之后,我们可以选择11退出程序。
操作方法与结果见图4-12。
图4-12退出
5课程设计总结
在这次课程设计中,我基本上完成了任务,通过对各模块函数的调用和对无限循环算法的使用实现了计算器的演示过程,基本上达到了此次课程设计的要求。
但是这个程序仍然有不少的问题,例如作为一个计算器它的界面还不够人性化,功能也不够丰富等,所以整个程序的功能有待进一步完善,让更多的功能得以实现。
虽然在这次的课程设计中有很多的不足,但是我也收获了很多。
由于本身计算器这个课题就比较简单,涉与的知识不是很多,所以我一个人一组,、通过与同学们的交流,解决了不少长久以来困扰我的C语言问题,让我深切体会到了大家共同努力的重要性。
在设计这个系统的时候,我查阅了很多相关的书籍,并通过网络解决了不少问题。
通过这次课程式设计,我对TC的开发环境有了更多的认识和了解,让我对C语言的认识又加深了一步,不仅使我学会了如何查阅资料,同时也让我发现了网络这个好老师,总之收获了很多。
参考文献
[1]谭浩强.C语言程序设计(第三版).清华大学,2005;260-265,294-308。
[2]黄明,梁旭,万洪莉.《C语言课程设计》.电子工业。
[2]谭浩强.《C语言程序设计习题解答与上机指导》.清华大学。
[3]学院本科学生课程设计任务书。
[4]学院本科学生课程设计论文详细格式。
[5]C语言程序设计参考实例。
[6]C语言名题精选百则技巧篇。
[7]C语言程序设计实验指导-c语言程序设计
[8]程序设计基础(C语言版)
附录:
源代码
/*Note:
YourchoiceisCIDE*/
#include
#include
#include
voidfun1()
{printf("***********************菜单**********************\n");
printf("**\n");
printf("*设计人:
肪瑜*\n");
printf("**\n");
printf("*************************************************\n");
printf("*1.加法运算*\n");
printf("*2.减法运算*\n");
printf("*3.乘法运算*\n");
printf("*4.除法运算*\n");
printf("*5.乘方运算*\n");
printf("*6.开平方运算*\n");
printf("*7.转换为2进制*\n");
printf("*8.转换为8进制*\n");
printf("*9.转换为16进制*\n");
printf("*10.求绝对值*\n");
printf("*11.退出*\n");
printf("*************************************************\n");
printf("\n");
printf("输入你想要进行的运算(1~11):
\n");
printf("\n");
}
voidfun2(floatx,floaty,intc)/*定义加减乘除模块函数*/
{floatz;
switch(c)
{case1:
z=x+y;printf("输出结果为:
%g+%g=%g\n",x,y,z);break;/*进行加法运算*/
case2:
z=x-y;printf("输出结果为:
%g-%g=%g\n\n",x,y,z);break;/*进行减法运算*/
case3:
z=x*y;printf("输出结果为:
%g*%g=%g\n",x,y,z);break;/*进行乘法运算*/
case4:
if(y==0)printf("输入错误!
");/*如果分母为0则输出“entererror!
”*/
else{z=x/y;printf("输出结果为:
%g/%g=%g\n",x,y,z);}break;/*进行除法运算*/
default:
printf("输入错误!
");
}
}
voidfun3(floatx,intc)/*定义乘方开方模块函数*/
{floatz;
switch(c)
{case5:
z=x*x;printf("输出结果为:
%g\n",z);break;/*进行乘方运算*/
case6:
if(x<0)printf("输入错误!
");/*如果x小于0则输出“entererror!
”*/
else{z=sqrt(x);printf("输出结果为:
%g\n",z);}break;/*进行开方运算*/
default:
printf("输入错误,请重新输入!
");
}
}
voidfun4(floatx)/*定义求绝对值模块函数*/
{floatz=0;
z=fabs(x);
printf("输出结果为:
%f\n",z);
}
voidconvert(intm,intc)/*定义进制转换模块函数*/
{chars[128];
switch(c)
{case7:
itoa(m,s,2);printf("输出结果为:
[%s]\n",s);break;/*转换为二进制数*/
case8:
printf("输出结果为:
%o\n",m);break;/*转换为8进制数*/
case9:
printf("输出结果为:
%x\n",m);break;/*转换为16进制数*/
default:
printf("输入错误!
");
}
}
voidquit()/*定义退出程序模块函数*/
{exit(0);}
/******主函数开始*******/
voidmain()
{for(;;)/*无限循环*/
{floatx,y,z;
intc,m;
charn;
fun1();/*调用菜单函数*/
scanf("%d",&c);
if(c==1||c==2||c==3||c==4)
{printf("请输入两个数:
");
scanf("%f%f",&x,&y);
fun2(x,y,c);/*调用加减乘除函数*/
}
if(c==5||c==6)
{printf("请输入一个数:
");
scanf("%f",&x);
if(x<0)printf("输入错误!
");
elsefun3(x,c);/*调用乘方开方函数*/
}
if(c==7||c==8||c==9)
{printf("请输入一个数:
");
scanf("%d",&m);
convert(m,c);/*调用进制转换函数*/
}
if(c==10)
{printf("请输入一个数:
");
scanf("%f",&x);
fun4(x);/*调用求绝对值函数*/
}
if(c==11)
{printf("<<<<<<<<<<<拜拜!
謝謝使用哈!
>>>>>>>>>>>\n");
system("pause");
quit();
}
getch();
}
}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 程序 设计 简单 计算器