当前位置:文档之家› C语言程序设计之简单计算器

C语言程序设计之简单计算器

攀枝花学院学生课程设计(论文)题目:简易计算器学生姓名:葛肪瑜学号:************ 所在院(系):计算机学院专业:计算机科学与技术班级:10计本(1)班指导教师:陈三清职称:讲师2011年6月25日攀枝花学院教务处制攀枝花学院本科学生课程设计任务书课程设计(论文)指导教师成绩评定表目录目录 ......................................................................................................................... I V 摘要 .. (V)1 绪论 ....................................................................................................................... V I1.1 课程设计背景 (VI)1.2 需求环境 (VI)1.3 课程设计思路 (VI)2 课程设计概要 (2)3 程序结构和各模块分析 (3)3.1菜单操作模块 (3)3.1.1 fun1函数功能 (3)3.1.2 功能实现代码 (3)3.2 加减乘除运算模块 (3)3.2.1 fun2函数功能 (3)3.2.2 功能实现代码 (4)3.3 乘方和开方运算模块 (4)3.3.1 fun3函数功能 (4)3.3.2 功能实现代码 (4)3.4 进制转换运算模块 (5)3.4.1 convert函数功能 (5)3.4.2 功能实现代码 (5)3.5 求模运算模块 (5)3.5.1 fun4函数功能 (5)3.5.2 功能实现代码 (6)3.6 退出模块 (6)3.6.1代码功能 (6)3.6.2 功能实现代码 (6)4 程序调试 (7)4.1 操作界面 (7)4.2 加减乘除运算 (7)4.3 乘方和开方运算 (9)4.4 进制转换运算 (10)4.5 求模运算 (11)4.6 退出 (12)5 课程设计总结 (12)参考文献 (13)附录:源代码 (14)摘要一直以来,C语言都是在国际上广泛流行的通用编程语言,它既具有高级语言的特点,又具有低级语言的些特点;既可用于编写系统软件又可用于编写应用软件。

虽然说近二十年来计算机技术取得了长远的进步,各种编程语言不断地涌现出来,但是C语言功能强大,使用灵活,即使是在科技快速发展的二十一世纪,仍展现出了强大的生命力,为社会的高度信息化,特别是在信息技术和网络技术领域做出了十分重要的贡献。

本文介绍了用C语言编写一个简易计算器。

实现数学上对浮点数加、减、乘、除、乘方、开方、求模以及进制转换的运算。

利用这个程序可以方便的进行日常性的小规模运算,小巧简易,是个实用的工具。

关键词:程序设计,计算器,C语言,函数,循环1 绪论1.1 课程设计背景日常生活中我们经常会遇到一些小型数据计算的问题,本课程设计就是以此为出发点,设计了这样一个简单的计算器,用以实现基本的数学运算。

在C语言当中通过定义模块函数,并在主函数中进行调用从而实现数据的运算。

通过与用户之间的交互,可以在操作界面上实现对各种运算的选择和程序的控制。

在完成课程设计的期间,参阅了相关的书籍并在网络上查找相关的资料,对实现这个设计提供了很大的帮助。

由于设计水平和知识方面的匮乏,本次课程设计还存在缺点和不足,希望大家提出宝贵的意见,互相交流以期提高。

1.2 需求环境本课程设计需要的设备为硬件要求和软件配置要求具体要求如下:①硬件要求:一台计算机。

②软件配置:WINDOWS系统、c/c++程序设计学习与实验软件1.3 课程设计思路做计算器最主要的就是实用性,要简单,便于操作。

程序的界面要方便与用户之间的交互。

并以设计的要求为基础,进行了创新,增加了对进制转换运算的支持,这就大致的确定了程序的几个模块。

然后对每个模块进行设计,再整合起来,由此一个简洁美观的计算器就建立起来了。

2 课程设计概要在设计程序的时候,考虑到计算器的功能,我按照其功能划分为几个模块,在程序开始后,可以进行选择,到自己希望进行操作的模块中去。

有了具体的模块之后,在设计程序的时候有更方便了,同时也有法可依,不会造成混乱。

具体分为:加减乘除运算、乘方开方运算、进制转换运算、求模运算和退出五个模块。

具体的模块关系如表2-1:流程图详解:首先用户运行程序,进入开始菜单,由用户对所要进行的运算做出选择。

当选择运算方式时,程序将调用对应的运算模块,对用户输入的数据进行处理,并输出结果,随后,当用户确认结果后,程序将清屏,并返回开始菜单,由用户继续进行选择。

当选择退出时,程序将调用退出模块,显示“拜拜!谢谢使用哈!”,并退出程序。

图2-1 程序流程图3 程序结构和各模块分析3.1菜单操作模块3.1.1 fun1函数功能在这个模块中,为了方便用户的使用,我们定义了一个菜单调用函数,将整个菜单尽量做到简易美观。

程序开始时,由用户对所要进行的运算进行选择。

3.1.2 功能实现代码程序如下:void fun1() /* 定义菜单调用函数*/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.1 fun2函数功能当用户的选择为1~4时,程序将调用fun2函数(加减乘除运算模块),该函数首先对用户的选项进行匹配,当匹配为1时,进行加法运算;为2时,进行减法运算;为3时,进行乘法运算;为4时,进行除法运算。

最后将所得结果输出。

3.2.2 功能实现代码算法:采用swich语句的分支机构,对用户选择的加减乘除运算进行匹配,匹配后将进行相应的运算并输出结果。

程序如下:void fun2(float x,float y,int c) /* 定义加减乘除模块函数*/{float z;switch(c){case 1: z=x+y;printf("输出结果为: %g+%g=%g\n",x,y,z);break; /* 进行加法运算*/case 2: z=x-y;printf("输出结果为: %g-%g=%g\n\n",x,y,z);break; /* 进行减法运算*/case 3: z=x*y;printf("输出结果为: %g*%g=%g\n",x,y,z);break; /* 进行乘法运算*/case 4: if(y==0) printf(" 输入错误!"); /* 如果分母为0则输出“输入错误!”*/ else{z=x/y;printf("输出结果为:%g/%g=%g\n",x,y,z);}break; /* 进行除法运算*/ default: printf(" 输入错误!");}}3.3 乘方和开方运算模块3.3.1 fun3函数功能当用户的选择为5或6时,程序将调用fun3函数(乘方和开方运算模块),该函数首先对用户的选项进行匹配,当匹配为5时,进行乘方运算;为6时,进行开方运算。

最后将所得结果输出。

3.3.2 功能实现代码算法:采用swich语句的分支机构,对用户选择的乘方开方运算进行匹配,匹配后将进行相应的运算并输出结果。

程序如下:void fun3(float x,int c) /* 定义乘方开方模块函数*/{float z;switch(c){case 5: z=x*x;printf("输出结果为: %g\n",z);break; /* 进行乘方运算*/case 6: if(x<0) printf(" 输入错误!"); /* 如果x小于0则输出“输入错误!”*/ else{z=sqrt(x);printf("输出结果为: %g\n",z);}break; /* 进行开方运算*/ default: printf(" 输入错误!");}}3.4 进制转换运算模块3.4.1 convert函数功能当用户的选择为7~9时,程序将调用convert函数(进制转换运算模块),该函数首先对用户的选项进行匹配,当匹配为7时,将把用户所输入的数据转换为2进制数;为8时,将把用户所输入的数据转换为8进制数;为9时,将把用户所输入的数据转换为16进制数。

最后将所得结果输出。

3.4.2 功能实现代码算法:采用swich语句的分支机构,对用户所要进行转换的进制进行匹配,匹配后将进行相应的运算并输出结果。

程序如下:void convert(int m,int c) /* 定义进制转换模块函数*/{char s[128];switch(c){case 7: itoa(m, s, 2);printf("输出结果为: [%s]\n",s);break; /* 转换为二进制数*/case 8: printf("输出结果为:%o\n",m);break; /* 转换为8进制数*/case 9: printf("输出结果为:%x\n",m);break; /* 转换为16进制数*/default: printf(" 输入错误!");}}特殊函数介绍:itoa()函数的头文件是# include <stdlib.h>,该函数有3个参数:第一个参数是要转换的数字,第二个参数是要写入转换结果的目标字符串,第三个参数是转移数字时所用的基数。

相关主题