(完整版)C语言毕业课程设计_语言代码_简易计算器设计定稿

合集下载

C语言课程设计报告书____简易计算器[1]

C语言课程设计报告书____简易计算器[1]

C语言课程设计报告书课程名称:C语言课程设计课题名称:简易计算器班级:学号:姓名:指导老师:成绩:2008年6月欢迎老师指导一、课程设计目的1.通过一个学期的学习,我认为要学好C语言程序这门课程,不仅要认真阅读课本知识,更重要的是要通过上机实践才能增强和巩固我的知识。

特别是作为本科生,更要注重实践这一环节,只有这样我们才能成为合格的计算机人材。

通过这次课程设计,进一步巩固所学的语句,如语句嵌套等;加深对循环,分支等结构的运用;最后还可以熟悉四则运算﹑三角函数等经典算法。

2.通过此次课程设计扩展自己的知识面,课本上的东西是远远不够的,可以通过去图书馆查资料,上网找资料等手段学到一些新知识,比如画图函数,颜色填充函数等。

3.通过课程设计,加深对结构化程序设计思想的理解,能进行一个系统功能需求分析,并设计合理的模块化结构。

提高程序开发能力。

二、设计内容我设计的是一款简易计算器,界面清楚,操作方便,它能实现以下功能:1.以界面形式给出计算器功能2.简单的四则混合运算(支持小括号、优先级)3.弦、余弦函数计算4.指数、对数的运算三、总体设计简单计算器由五大模块组成,模块设计如下:图1 模块调用图1.主函数 void main()功能:调用各个主要模块,实现简单计算器的整体功能。

2.主界面函数void JieMian()功能:使用有关图形函数模拟出可视化的计算器外观界面,并提供用户输入窗口。

3.四则混合运算函数void SiZeHunHeYunSuan()功能:实现简单的加减乘除混合运算,并支持优先级和带括号的运算。

4.三角运算函数void SanJiaoYunSuan()功能:实现基本的三角函数运算:sin(x)和cos(x)。

5.指对数函数void ZhiDuiShuYunSuan()功能:实现基本的指数和对数运算。

四、详细设计(一)数据结构设计1.用initgraph函数初始化图形界面,用outtextxy函数在图形模式下显示需输出内容,用setcolor和setbkcolor函数设置边框颜色和填充颜色,用circle 和rectangle函数来画计算器界面的按键,用gotoxy将数字送入显示区。

毕业设计c语言课程设计

毕业设计c语言课程设计

毕业设计c语言课程设计一、课程目标知识目标:1. 理解C语言在毕业设计中的应用场景,掌握C语言的基本语法和编程技巧。

2. 学会使用C语言进行数据结构的设计与实现,如链表、树、图等。

3. 掌握C语言在嵌入式系统、算法竞赛等领域的实际应用。

技能目标:1. 能够运用C语言编写具有实际意义的程序,解决实际问题。

2. 能够分析并优化C语言程序的运行效率,提高编程质量。

3. 培养良好的编程习惯,编写规范、易读、高质量的C语言代码。

情感态度价值观目标:1. 培养学生积极主动探索新知识的精神,提高学生的自主学习能力。

2. 增强学生的团队协作意识,培养良好的沟通与协作能力。

3. 使学生认识到C语言在计算机科学领域的重要地位,激发学生对编程的兴趣。

分析课程性质、学生特点和教学要求:1. 课程性质:本课程为毕业设计前的预备课程,旨在帮助学生掌握C语言编程技能,为毕业设计奠定基础。

2. 学生特点:学生已具备一定的计算机基础,了解编程基本概念,但实际编程能力较弱,需要加强实践操作。

3. 教学要求:注重理论与实践相结合,强调实际编程能力的培养,以项目驱动教学,提高学生的实践操作能力。

1. 独立完成C语言基础语法的学习,并能运用所学知识编写简单程序。

2. 掌握常见数据结构在C语言中的实现与应用,能够解决实际问题。

3. 编写具有一定规模的C语言项目,具备初步的软件设计能力。

4. 养成良好的编程习惯,具备团队协作能力和沟通能力。

二、教学内容1. C语言基础语法:变量定义、数据类型、运算符、表达式、控制语句(顺序、选择、循环)、函数、数组、指针。

2. 常见数据结构:链表、栈、队列、树(二叉树、查找树)、图(邻接矩阵、邻接表)。

3. 编程技巧与优化:算法复杂度分析、递归与迭代、内存管理、程序调试与优化。

4. C语言项目实践:学生信息管理系统、简易计算器、文件压缩与解压缩、小型游戏等。

5. 教学内容安排与进度:- 第一周:C语言概述、基础语法、数据类型与运算符。

c语言设计计算器课程设计

c语言设计计算器课程设计

c语言设计计算器课程设计一、课程目标知识目标:1. 学生能够掌握C语言基本语法和数据类型,特别是整型、浮点型的运用。

2. 学生能够理解并运用顺序结构、选择结构和循环结构进行程序设计。

3. 学生能够运用C语言的算术运算符,实现基本的数学运算功能。

技能目标:1. 学生能够编写简单的C程序,实现加、减、乘、除等基本计算功能。

2. 学生能够通过键盘输入数据,并处理输入异常。

3. 学生能够运用调试工具检查并修正程序中的错误。

情感态度价值观目标:1. 学生培养编程的兴趣,认识到编程在解决问题中的重要性。

2. 学生在学习过程中形成合作意识,培养团队精神。

3. 学生通过编程解决实际问题,体验成就感,增强自信心。

分析课程性质、学生特点和教学要求:本课程针对的是高一年级学生,他们对C语言已有一定的基础知识,具备基本的编程能力。

课程性质为实践性较强的编程课程,旨在让学生通过动手实践,掌握C语言编程技巧。

教学要求注重培养学生的实际编程能力,将理论知识与实际应用相结合。

课程目标分解:1. 学生能够独立完成一个简单的计算器程序,实现加、减、乘、除功能。

2. 学生能够运用所学知识对程序进行优化,提高计算器的运算效率和用户体验。

3. 学生通过课程学习,培养良好的编程习惯和解决问题的能力。

二、教学内容本课程教学内容紧密结合课程目标,确保学生能够系统地学习和掌握C语言编程计算器的制作。

1. C语言基本语法和数据类型复习:回顾整型、浮点型等基本数据类型,强调其在计算器程序中的应用。

2. 运算符和表达式:详细介绍C语言的算术运算符,如加、减、乘、除等,并讲解表达式的构成和计算规则。

3. 控制结构:- 顺序结构:巩固顺序执行的概念,并应用于计算器程序。

- 选择结构:讲解if语句,实现计算器的不同运算功能。

- 循环结构:介绍for和while循环,实现重复计算功能。

4. 输入输出函数:教授scanf和printf函数的使用,实现用户与计算器程序的交互。

c简单计算器课程设计

c简单计算器课程设计

c 简单计算器课程设计一、课程目标知识目标:1. 让学生掌握简单计算器的基本操作,包括开机、关机、清除屏幕、输入数字和运算符号。

2. 使学生理解加、减、乘、除四则运算的基本概念,并能够在简单计算器上进行正确的运算操作。

3. 帮助学生识别计算器上各个按键的功能,了解其对应的数学意义。

技能目标:1. 培养学生运用简单计算器解决实际问题的能力,如购物找零、计算面积等。

2. 提高学生进行四则运算的速度和准确性,提高计算效率。

3. 引导学生掌握计算器使用技巧,如连续计算、顺序计算等。

情感态度价值观目标:1. 培养学生对计算器的正确态度,认识到计算器是学习数学的工具,而非替代品。

2. 激发学生学习数学的兴趣,让学生在轻松愉快的氛围中体验数学计算的乐趣。

3. 培养学生的合作意识,使学生在小组讨论和互助学习中提高沟通能力,培养团队精神。

本课程针对小学三年级学生设计,结合学生年龄特点,注重激发兴趣和培养动手操作能力。

课程内容紧密联系教材,将目标分解为具体的学习成果,便于后续教学设计和评估。

通过本课程的学习,学生将能够熟练运用简单计算器,提高数学计算能力,培养良好的学习习惯和团队协作能力。

二、教学内容1. 计算器的基本结构:引导学生认识计算器的外观、各部分名称及其功能。

- 教材章节:第三章第1节《认识计算器》- 内容列举:计算器按键布局、显示屏、开机与关机、清除键等。

2. 四则运算操作:讲解加、减、乘、除四则运算在计算器上的操作方法。

- 教材章节:第三章第2节《计算器的四则运算》- 内容列举:按键输入、运算顺序、连续运算、计算结果读取等。

3. 计算器使用技巧:教授计算器的高级使用技巧,提高计算效率。

- 教材章节:第三章第3节《计算器使用技巧》- 内容列举:百分比计算、乘方运算、记忆功能等。

4. 实践应用:结合实际生活场景,让学生运用计算器解决实际问题。

- 教材章节:第三章第4节《计算器在实际生活中的应用》- 内容列举:购物找零、计算面积、体积、速度等。

C语言课程设计--- 制作2.0版简易计算器

C语言课程设计--- 制作2.0版简易计算器

计算机程序设计基础课程设计报告学院城乡资源与规划学院专业资源环境与城乡规划管理日期:2012年6月23日目录课程设计目的 (1)课程设计要求 (1)题目分析 (1)1.题目简介 (1)2.设计要求 (1)课程设计内容 (1)1.总体设计 (1)2.详细设计 (1)调试与测试 (4)设计心得与总结 (5)参考文献: (6)制作2.0版简易计算器课程设计目的运用所学的C语言基础知识,在VC++中编写简易计算器,从实践中巩固所学知识,培养自学能力,养成勤学好思的良好学习品质。

课程设计要求用VC++编程一个简单的计算器,能够实现简单的四则运算功能,具有可视化的特点,图文外观简洁大方。

它的设计按软件工程的方法进行,系统具有良好的界面、必要的交互信息和较好的健壮性使用人员能快捷简单地进行操作。

题目分析1.题目简介简单计算器2.0只能进行整数之间四则运算,不能对小数之间进行运算,是入门级计算器,有其局限性。

但它是复杂计算器制作的基础,掌握其基本原理,就能够更复杂的编程。

2.设计要求⑴对话框实现整数之间的运算;⑵能够对错误输入进行提示。

课程设计内容1.总体设计主要包括科学计算器系统的设计目标,科学计算器系统的功能模块划分,以及科学计算器系统的运行环境。

系统设计目标(1)能熟练使用vc++6.0编写完成各种运算程序,实现要求的各种功能,并且其中的某些运算,不调用库函数,自己编写实现。

(2)能做到使该计算器使用起来简单、方便,让初次使用者对计算器的功能一目了然,轻松、容易的上手。

(3)使计算器的界面做得简洁美观,有新意。

系统功能模块划分(1)对话框的实现:主对话框。

(2)控件的实现:静态文本控件,文本编辑控件,按钮控件,单选按钮控件。

系统运行环境是在VC++6.0环境下开发的,在Windows98/Windows2000/Windows NT/Windows XP平台下运行均可。

2.详细设计本软件主要用于计算机windows 2000/XP以上版本的用户的使用,这次课程设计一般是实现简单计算器的功能。

C语言课程设计简单计算器程序文件

C语言课程设计简单计算器程序文件

课程设计名称:C语言课程设计课程设计题目:简单计算器程序目录第1章需求分析 (1)1.1设计要求 (1)1.2任务 (1)第2章总体设计 (2)2.1设计简介及设计方案论述 (2)2.2功能模块层次图 (2)第3章详细设计 (3)3.3由(后缀)逆波兰表达式计算中缀表达式原理 (8)3.3.1算法描述 (9)第4章调试分析 (11)4.1程序设计中所遇到的错误及犯错的原因 (11)4.2错误的解决方法 (11)第5章用户手册 (12)总结 (16)参考文献 (17)附录(程序清单) (18)第1章需求分析1.1 设计要求(1)用 C 语言数据结构实现程序设计;(2)利用结构体、栈、进行相关信息处理;(2)系统的各个功能模块要求用函数的形式实现;(4)界面简单.可操作性高。

1.2 任务(1)定义一个结构体类型数组.输入 0~9 及+、--、*等符号的信息.将其信息存储起来;(2)输入简单的加减乘除算术计算式.并在屏幕上显示逆波兰(后缀式)表达式和计算结果;(3)编写代码;(4)程序分析与调试。

说明:本课程设计将实现一个简单计算器。

在功能上尽量模仿 windows 的计算器。

系统界面不做牵制要求。

该程序能实现标准型中+、-、*、/、(、)、.、的混合运算表达式(一般意义上的中缀表达式).将其转换成逆序波兰表达式(后缀表达式)并计算输出结果。

在进行运算后可以选择继续运算或者结束当前运算。

即时准确地获得需要的计算的结果.充分降低了数字计算的难度和节约了时间.对人们的生活有一定的帮助。

第2章 总体设计2.1设计简介及设计方案论述逆波兰表达式又叫做后缀表达式。

在通常的表达式中.二元运算符总是置于与之相 关的两个运算对象之间.所以.这种表示法也称为中缀表达式。

波兰逻辑学家 J.Lukasiewicz 于 1929 年提出了另一种表示表达式的方法。

按此方法.每一运算符都置 于其运算对象之后.故称为后缀表达式。

后缀表达式的优点是显而易见的. 编译器在处理时候按照从左至右的顺序读取逆波 兰表达式.遇到运算对象直接压入堆栈.遇到运算符就从堆栈提取后进的两个对象进行计算.这个过程正好符合了计算机计算的原理。

简单计算器C语言课程设计报告书

简单计算器C语言课程设计报告书

C语言课程设计报告书题目:简单计算器院系:班级:1.2.3.4.5.2.1功能概述:该软件为用户提供一个在windows系统上运行的简单计算器,能进行简单的加、减、乘、除四则运算和一些常用特殊运算,包括余弦运算、正弦运算、正切运算、绝对值、平方根运算、以e为底的指数运算、以10为底的对数运算。

2.2【总体设计】2.2.1系统模块机构框图2.2.3系统流程图2.2.42.3实现各2.3.1算类型的数字代码,并进入相应的功能执行程序,显示相应界面。

(2)数学计算模块中,根据用户选择的运算类型和运算符号,自动调用相应的函数,运行相关程序,进行计算,并显示结果。

(3)退出程序模块。

根据用户的需要,选择是否退出程序。

2.3.2系统头文件#include<stdio.h>/*I/Q函数*/#include<math.h>/*数学函数的定义*/#include<conio.h>/*屏幕操作函数*/#include<stdlib.h>/*库函数*/2.3.3函数声明(1)主函数main()处理:{printf("简单计算器\n");printf("******************************\n");printf("请输入要进行的运算\n");printf("------------------------------\n");printf("1四则运算\n");printf("2特殊运算\n");printf("3退出程序\n");h=getche();switch(h)/*判断用户想要进行的操作*/{}(2)自定义函数size()功能:进行简单的加、减、乘、除四则运算输入:用户输入要计算的数字和运算符号(+、-、*、/)处理:根据用户输入的运算符号,跳转到相关运算函数,并调用输出:运算结果和是否需要继续运算(y/n)程序清单(b)intsize()/*定义四则(size)运算函数*/{intn,m;intc;{c=m+n;printf("\n\n\t结果是%d\n",c);printf("\n");break;case'-':/*减法运算*/c=m-n;printf("\n\n\t结果是%d\n",c);printf("\n");break;case'*':/*乘法运算*/l=getche();/*得到输入的值*/printf("\n");if(l=='y')/*如果得到的是y,则重复运算步骤,达到无限运算的作用*/ {printf("\n请输入下一个要计算的数并按Enter结束:");scanf("%d",&n);printf("\n请选择运算符号[\t+\t-\t*\t/\t]:");l=getche();switch(l){printf("\n");break;case'/':/*除法运算*/c=c/n;printf("\n\n\t结果是%d\n",c);printf("\n");break;}}else}}(33输出:运算结果和是否需要继续运算(y/n)程序清单(c)doubleteshu()/*定义(teshu)特殊运算函数*/{doubley;intn,m;charp;printf("---------请选择特殊运算类型---------");printf("1余弦2正弦3正切4绝对值\n");printf("5平方根6以e为底的指数7以10为底的对数\n");docase'2':y=sin(m);/*正弦函数*/printf("\n\n\t结果是:%f\n",y);printf("\n");break;case'3':y=tan(m);/*正切函数*/printf("\n\n\t结果是:%f\n",y);printf("\n");break;printf("\n");break;case'7':y=log10(m);/*底数为10的对数函数*/ printf("\n\n\t结果是:%f\n",y);printf("\n");break;}printf("\n是否继续?y/n");p=getche();}2.4系统主界面其他功能截图等……2.5【设计总结】本报告对简单计算器系统的分析、设计、实现的完整过程进行了介绍。

c简易计算器课程设计

c简易计算器课程设计

c 简易计算器课程设计一、课程目标知识目标:1. 学生能理解简易计算器的基本原理,掌握加、减、乘、除四则运算的操作方法。

2. 学生能够运用所学知识,解决生活中简单的数学问题。

3. 学生了解计算器的发展历程,认识到科技对生活的影响。

技能目标:1. 学生能够熟练操作简易计算器,进行基本的四则运算。

2. 学生通过实际操作,培养动手能力和问题解决能力。

3. 学生能够运用计算器辅助学习,提高数学学习效率。

情感态度价值观目标:1. 学生培养对数学学习的兴趣,树立正确的数学观念。

2. 学生在合作交流中,培养团队意识和沟通能力。

3. 学生通过计算器的使用,认识到科技发展的成果,增强民族自豪感。

课程性质:本课程为信息技术与数学学科的整合课程,旨在通过简易计算器的学习,提高学生的数学素养和信息技术能力。

学生特点:四年级学生具备一定的数学基础和信息技术能力,好奇心强,善于合作交流。

教学要求:教师需结合学生的特点,采用启发式教学,引导学生主动探究,注重培养学生的动手能力和问题解决能力。

在教学过程中,关注学生的情感态度,激发学生的学习兴趣,使学生在轻松愉快的氛围中学习。

通过本课程的学习,使学生达到预期的学习成果。

二、教学内容1. 计算器的历史与原理:介绍计算器的发展简史,探讨计算器的工作原理,让学生了解计算器的演变过程,认识到科技对生活的改变。

2. 简易计算器操作方法:详细讲解加、减、乘、除四则运算的操作步骤,让学生熟练掌握计算器的使用方法。

3. 实践应用:结合数学课本中的实际例题,指导学生运用计算器进行计算,解决实际问题,提高计算速度和准确性。

4. 计算器在数学学习中的应用:探讨计算器在辅助数学学习中的作用,如:简化计算过程、提高解题效率等。

教学内容安排和进度:第一课时:计算器的历史与原理,计算器的简单操作。

第二课时:四则运算的操作方法,实践练习。

第三课时:计算器在数学学习中的应用,解决实际问题。

教材章节:《信息技术》第四章:计算器与计算机。

C语言毕业课程设计报告-计算器

C语言毕业课程设计报告-计算器

C语言课程设计报告——计算器题目:设计一个计算器的程序,功能上尽量模仿windows内的计算器目录一、需求分析 (1)二、设计思路 (1)三、详细设计 (2)1、主要函数 (2)2、函数的主要调用关系图 (3)四、调试分析及编程心得体会 (3)五、用户手册 (3)六、测试结果 (3)七、源程序代码 (4)1、 cal.c 主控文件 (4)2、mouse.h 鼠标程序头文件 (5)一、需求分析1、演示程序中,对数据进行四则运算。

2、由于人们长期在window下工作,程序最好要键盘和鼠标都可以用。

界面要适应人们的习惯。

3、程序执行的命令包括:1)、乘法;2)、除法3)、加法4)、减法5)、自然对数6)、结束。

4、测试数据:(以加法为例)(1)、‘0’+‘0’应输出“0”。

(2)、‘80’-‘30’应输出“50.”。

(3)、’2’* ‘35’应输出“0”.(4)、’2’/ ‘1’应输出“2.”.(5)’1’‘exp’;应输出“2.”。

二、设计思路我们首先要考虑的是如何记录用户的输入信号,识别信号,按照信号的处理要求的不同进行不同的操作,因此我们可以考虑用两个字符串不停地来记录数据,但检测到用户按等号的时候,再转换成数字来处理,结合到鼠标的应用,从鼠标左键的输入信号和键盘有着同样的。

再用显示界面函数来显示计算器的外观。

本程序包含两个模块:1)主程序模块:void main() //cal.c{各种宏定义;欢迎界面;图像的初始化;do{接受键盘和鼠标输入的命令;处理命令;}while(“命令”=“结束”)}2)鼠标调用的界面模块//mouse.h各模块之间的调用关系如下:三、详细设计1、主要函数(1)、主控模块main.cvoid initialmouse(void); /*初始化鼠标函数*/double char_to_float(char *p); /*字符转换成浮点数*/void welcome(); /*欢迎界面*/(2)、鼠标头文件mouse.cvoid mouse(); //接受鼠标的按键信息int rmouse(void) //初始化鼠标图像图标,并且返回是否成功的信息showmouse() //利用不断复制和粘贴图像的方法来动态显示鼠标光标hidemouse() //关闭光标getmousecoods() //得到鼠标当前的信息void movemouse(int x,int y); //确定鼠标的位置Area(int x0,int y0,int x1,int y1) //设置鼠标移动的位置范围guangbiao(int x,int y) //画出光标2、函数的主要调用关系图四、调试分析及编程心得体会1、刚开始的时候不习惯于结构话编程,没有严格按单元模块结构编写不善于构建子函数来简化和理清楚编程思路,可读性几乎为零!!2、刚开始时在鼠标功能的区域选择的宏定义中花了较大功夫,程序容错性较差。

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

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

攀枝花学院学生课程设计(论文)题目:简易计算器学生姓名:葛肪瑜学号:2所在院(系):计算机学院专业:计算机科学与技术班级: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语言课程设计_语言代码_简易计算器设计
[8]姜仲秋.C语言程序设计基础.南京:南京大学出版社,1998:16-100
[9]李国昌.C语言程序设计基础.北京:科学出版社,1998:78-120
[10]谭浩强.C语言程序设计.北京:清华大学出版社,2000:74-129
第2章系统功能需求分析
2.1系统的基本要求
1. 算术运算功能。能够实现+、-、*、/、mod、int运算。
现时学习生活中,常会遇到一些数目较大数据繁杂的数值运算,徒手运算起来很困难,这时候我们就必须用到计算器。人们对计算的要求不断提高,普通的功能简单的仅能进行四则运算的计算工具已经不能满足需要,需要一种能进行多种计算。现在已经有一些功能较为强大、涵盖面较广的计算软件,而且各种平台的小工具仍不断出现。这些大大方便了我们的生活给我们更多的选择和实现方式。本程序的编写基础是Tubro C2.0汉化版,它在tubro c的原有基础上实现了多汉字的支持方便了我们的使用。生成的程序可移植性强兼容性好稳定!本程序实现了加、减、乘、除、求幂、求模,求平方根,求Sin,求Cos,求Log10,求阶乘,取整,求正切,以及进制之间的相互转换。它可以直接输入数学表达式,不需要任何转换,就可以直接输出数学四则运算的结果。但是,每次只能运算一个表达式,按 CE清空后再计算下一组式子。本程序在进制转换方面有一些漏洞,但一般的进制转换结果还是准确的。
#define RIGHT 0x4d /*光标右移键*/
#define ENTER 0x0d /*回车键*/
void *rar; /*全局变量,保存光标图象*/
int specialkey(void) ; /*获取特殊键函数*/
int arrow(); /*设置箭头光标函数*/
main()
{

c课程设计简易计算器

c课程设计简易计算器

c 课程设计简易计算器一、课程目标知识目标:1. 让学生掌握简易计算器的基本功能与操作,包括加、减、乘、除等四则运算。

2. 使学生理解计算器的工作原理,了解显示屏、键盘等组成部分及其作用。

3. 帮助学生掌握计算器的使用规范,如开关机、输入输出等基本操作。

技能目标:1. 培养学生运用计算器解决实际问题的能力,提高计算速度和准确性。

2. 培养学生通过观察、尝试、探索等方法,自主发现计算器操作技巧和功能特点。

3. 培养学生合作交流的能力,学会在小组讨论中分享观点,共同解决问题。

情感态度价值观目标:1. 激发学生对计算器的学习兴趣,培养良好的学习习惯和探究精神。

2. 培养学生尊重科学、严谨求实的态度,树立正确的价值观。

3. 培养学生团队协作意识,增强合作解决问题的能力。

本课程针对小学四年级学生,结合教材内容,以实用性为导向,注重培养学生的动手操作能力和实际问题解决能力。

课程目标明确,易于衡量,为后续教学设计和评估提供依据。

在教学过程中,教师应关注学生个体差异,因材施教,确保每位学生都能在课程中收获知识和技能。

二、教学内容本章节教学内容主要包括以下几部分:1. 计算器的基本结构:介绍计算器的显示屏、键盘、电池等组成部分及其功能。

2. 四则运算操作:详细讲解加、减、乘、除四则运算在计算器上的操作步骤。

3. 计算器操作规范:教授计算器的开关机、清屏、输入输出等基本操作规范。

4. 实际问题解决:结合教材实例,引导学生运用计算器解决生活中的实际问题。

5. 操作技巧与功能探索:指导学生探索计算器的其他功能,如百分比、乘方等,并分享操作技巧。

教学内容安排如下:第一课时:计算器的基本结构及操作规范介绍。

第二课时:四则运算操作教学,以教材为例题进行讲解和实操。

第三课时:实际问题解决,分组讨论并运用计算器解决生活中的数学问题。

第四课时:操作技巧与功能探索,学生自主探究计算器其他功能并分享。

教学内容与教材紧密关联,确保科学性和系统性。

(完整版)C++毕业课程设计___简单计算器的设计

(完整版)C++毕业课程设计___简单计算器的设计

C++课程设计报告学生姓名: 刘建军专业: 计算机应用技术班级:指导教师: 阳红星目录一、设计任务 (1)1.1 选题意义 (1)1.2 设计目标 (1)1.3 关于virtualc++ (2)1.4 可行性及需求分析 (3)二、程序设计与实现 (3)2.1 程序结构 (3)2.2 详细设计 (4)2.2.1 程序流程图 (4)2.2.2 程序设计具体步骤 (5)2.2.3 程序运行界面 (23)三、设计难点与解决方法 (24)四、设计效果与不足之处 (24)4.1程序效果图 (24)4.2 不足之处 (27)五、参考资料 (27)六、课程设计总结 (27)此题选择意义在于引导学生学会设计简单的科学计算器,进一步掌握Visual C++应用程序。

统地学习面向对象编程思想,了解MFC 架构,逐步熟悉可视化编程环境Visual C++,并在此环境下设计并实现一个简单计算器系统。

该计算器应能实现如下功能:1)、数的加、减、乘、除、乘方等简单计算2)、科学计算函数,包括正弦、余弦、正切、余切、开方、对数、指数等函数运算3)、具备历史计算的记忆功能。

使计算器含有以下功能:(1)、基本运算功能:可以进行加、减、乘、除等基本运算。

(2)、三角函数运算功能:可以一次完成三角函数之间的计算,求正弦函数(sin )、余弦函数(cos )、正切函数(tan )、余切函数(cot )等函数的值。

(3)、对数、指数运算功能:可以一次求的对数函数(log 、ln )、指数函数(exp )等函数的运算。

(4)、删除功能:可以在输入错误时删除已输入的数值。

(5)、归零功能:可以在计算完成后清空编辑框中的已有数值。

一、 设计任务1.1选题意义 1.2 设计目标1.3关于virtualc++关于Visual C++Visual C++6.0 是Microsoft公司在1998年推出的基于Windows 9X 和Windows NT的优秀集成开发环境。

C语言简单计算器编写课程设计

C语言简单计算器编写课程设计

2013-2014 学年第二学期学号《高级语言程序设计》课程设计报告题目:简单计算器专业:数字媒体技术班级:13级1班姓名:邢洪波指导教师:王辉成绩:计算机与信息工程系二 0 一四年二月二十天1设计内容及要求利用本学期所学的《 C语言程序设计》课程,运用有关知识,查阅相关资料,编写 C语言程序,设计一个简单计算器,要求编写的简单计算器能够模拟 windows 系统的计算器,用户能够用键盘输入有关数据,能够进行简单的加、减、乘、除运算,而且在程序运转过程中能够正常的退出程序。

?在计算器程序运转中,输入数据时假如碰到输入错误的状况,能够能过键盘上的退格键进行删除,而且从头输入正确的数据。

在数据输入达成后,假如需要放弃本次计算操作,能够利用程序中设置好的按键进行清零,并为下一次运算作准备。

运用有关知识,查阅有关资料,编写一个简单的计算器,能够实现简单的基本的加减乘除运算,在计算器工作时用户能利用键盘或鼠标进行相应操作。

程序基本功能要务实现完好,并有简单的考证。

程序还须有切合标准的程序设计报告。

2纲要设计系统流程图开始输入第一个操作数加法减法乘除法法清开零方乘方输入第二个操作数显示结果结束系统流程图主要功能表主要功能表序号文件名主要功能备注1+加法两个操作数2—减法两个操作数3*乘法两个操作数4/除法两个操作数5#开方一个操作数6^乘方两个操作数7Enter等于8Tab清零9q退出3设计过程或程序代码#include<>#include<>#include<>/*malloc的头文件代表在内存中开拓储存空间*/double jisuan(char a[]){int i=1,j,k,m,cnt=0,t1=0,t2=0,t3=0;/*定义整型变量 i,j,k,m,n,cnt,t1,t2,t3*/char nibo[50],zhan2[50];/* 定义字符型数组 */double x,n,l,z=0,zhan3[50];/*定义双精度变量x,n,l,z,zhan3[50]*/typedef struct/*表示能够用 con 定义构造体变量 */{double d1;int d2;}dd;typedef struct{dd data[50];int top;}zhan1;zhan1 *shu;/*定义指针变量 */shu=(zhan1 *)malloc(sizeof(zhan1));shu->top=0;while(a[i]!='\0')/* 外循环是用 while 语句 */{if(a[i]>='0'&&a[i]<='9')/* 内循环使用 if-else语句*/{z=0;j=i+1;while(a[j]>='0'&&a[j]<='9')/*内循环使用各样循环语句的嵌套*/{j++;}j--;for(k=i;k<=j;k++){z=z*10+a[k]-'0';}j=j+1;x=z;if(a[j]=='.'){l=1;i=j+1;j=i+1;while(a[j]>='0'&&a[j]<='9')/*内循环使用各样循环语句的嵌套*/{j++;}j--;for(k=i;k<=j;k++){n=pow,l);l=l+1;x=x+n*(a[k]-'0');}i=j+1;}else i=j;shu->data[++shu->top].d1=x;shu->data[shu->top].d2=++cnt;nibo[++t1]='0'+shu->data[shu->top].d2;}else if(a[i]=='('){zhan2[++t2]=a[i];i++;}else if(a[i]==')'){j=t2;while(zhan2[j]!='('){nibo[++t1]=zhan2[j];nibo[t1+1]='\0';j--;}t2=j-1;i++;}else if(a[i]=='+')/* 对加法的定义 */{while(t2>0&&zhan2[t2]!='(')/*定义当加号和括号同时出现时*/{nibo[++t1]=zhan2[t2];/* 将 zhan2[t2] 赋给 nibo[++t2]*/nibo[t1+1]='\0';t2--;}zhan2[++t2]=a[i];i++;}else if(a[i]=='-')/* 对减法的定义 */{{a[0]='0';i=0;}else if(a[i-1]=='('){a[i-1]='0';a[i-2]='(';i=i-2;t2--;}else{while(t2>0&&zhan2[t2]!='(')/*对括号的定义 */{nibo[++t1]=zhan2[t2];nibo[t1+1]='\0';t2--;}zhan2[++t2]=a[i];i++;}}else if(a[i]=='*'||a[i]=='/')/*对乘法和除法的定义 */{while(zhan2[t2]=='*'||zhan2[t2]=='/'||zhan2[t2]=='^'||zhan2[t2]=='#')/* 逻辑运算 */{nibo[++t1]=zhan2[t2];nibo[t1+1]='\0';t2--;}zhan2[++t2]=a[i];i++;}else if(a[i]=='^'||a[i]=='#')/*逻辑运算中的或运算*/{while(zhan2[t2]=='^'||zhan2[t2]=='#'){nibo[++t1]=zhan2[t2];nibo[t1+1]='\0';t2--;}zhan2[++t2]=a[i];i++;}}while(t2>0){nibo[++t1]=zhan2[t2];/*将的zhan2[t2]值赋给nibo[++t1]*/nibo[t1+1]='\0';/*碰到 '\0'结束部分程序的运算*/t2--;}j=1;t3=0;while(j<=t1){if(nibo[j]>='0'&&nibo[j]!='^'&&nibo[j]!='#'){for(i=1;i<=shu->top;i++){if((int)(nibo[j]-'0')==shu->data[i].d2){m=i;break;}}zhan3[++t3]=shu->data[m].d1;}else if(nibo[j]=='+')/*对加法的定义*/{zhan3[t3-1]=zhan3[t3-1]+zhan3[t3];t3--;}else if(nibo[j]=='-')/*对减法的定义*/{zhan3[t3-1]=zhan3[t3-1]-zhan3[t3];t3--;}else if(nibo[j]=='*')/*对乘法的定义 */{zhan3[t3-1]=zhan3[t3-1]*zhan3[t3];t3--;}else if(nibo[j]=='/')/*对除法的定义*/{zhan3[t3-1]=zhan3[t3-1]/zhan3[t3];t3--;}else if(nibo[j]=='^')/*对乘方的定义 */{zhan3[t3-1]=pow(zhan3[t3-1],zhan3[t3]);t3--;}else if(nibo[j]=='#')/*对开方的定义*/{zhan3[t3]=sqrt(zhan3[t3]);}j++;}return zhan3[t3];/* 返回值 */}void main(){for(;;){char x,a[50];double jieguo;int i=0;a[0]='$';printf("# 表示开方, ^表示乘方 ( 支持负数 )\n");/* 对乘方和开方的定义 */printf("请输入表达式无需输入= 号直接回车可输出答案退出请输入q \n\n");scanf("%c",&x);if(x=='q') break;while(x!='\n')/*碰到 '\0'结束部分程序的运算*/{a[++i]=x;scanf("%c",&x);}a[i+1]='\0';jieguo=jisuan(a);printf("\n");printf("结果为 :%lf",jieguo);printf("\n\n\n");printf(" 退出请输入 q 持续请直接输入 \n\n");}}4设计结果与剖析系统测试结果以下:依据电脑所给的提示出现语法错误,缺乏变量的定义大多的语法错误在经过书籍参考下能够改正。

数据结构课程设计(简单计算器C语言)

数据结构课程设计(简单计算器C语言)

郑州师范学院信息科学与技术学院《简单计算器》课程设计报告设计题目:简单计算器班级: B15计科二班组长:组员:指导教师:完成日期: 2016 年 12 月 23 日成绩:摘要本次选做的课程设计是实现简单计算器的问题。

计算器是一个常用的运算工具,本次课题要求用程序语言的方式解决问题。

此问题仅使用数据结构中的栈操作就可以解决此问题。

而在为了方便使用,添加了easyx图形库实现了UI设计。

为了接近平常使用的计算器,特地创建死循环而且添加了“CE”清空输入和“<-”删除键来控制输入错误或者循环使用的问题。

在UI方面主要是实现按键和点击响应等交互,方便输入和修改,在程序框上面有输入和显示结果的文本框。

在计算过程中,以栈出栈进站的特性把中缀形式的算数表达式转化为计算机方便计算的后缀表达式,最后计算出结果以文本方式显示在结果输出框内。

目录摘要 (I)目录 (II)1需求分析 (3)1.1功能简介及分析 (3)1.2设计平台 (3)2概要设计 (3)2.1 Trans函数 (3)2.2 Compvalue 函数 (4)2.3 GetKey函数 (4)3详细设计和实现 (4)3.1转化为逆波兰式 (4)3.2计算逆波兰式 (6)3.3实现流程图 (7)3.3部分具体程序 (8)4调试与操作说明 (14)4.1调试情况 (14)4.2操作说明 (14)5设计总结 (15)参考文献 (17)1需求分析1.1功能简介及分析本次选做的课程设计是实现简单的计算器并且添加UI的交互。

此计算器是以软件的形式实现的计算器,运行在windows系统。

计算器在功能上分为三类,分别是:常见计算器,专用计算器,综合功能计算器。

常见的计算器又分为四种:①简单型计算器:只实现基本的加减乘除和括号运算。

②科学型计算器:可以进行乘方、开方、指数、对数、三角函数、统计等方面的运算,又称函数计算器。

③程序员计算器:专门为程序员设计的计算器, 主要特点是支持And, Or, Not, Xor:最基本的与或非和异或操作, 移位操作 Lsh, Rsh:全称是Left Shift和Right Shift,也就是左移和右移操作,你需要输入你要移动的位数(不能大于最大位数) RoL, RoR:全称是Rotate Left和Rotate Right,对于RoL来讲,就是向左移动一位,并将移出的那位补到最右边那位上,RoR类似。

简单计算器C语言课程设计报告书

简单计算器C语言课程设计报告书

C 语言课程设计报告
系:
级:
号:
名:
院 班 学 姓
、课程设计目的
、课程设计的基本过程
课程设计的基本过程包括 5 个步骤,即功能需求,总体
设计,详细设计,程序测试,结论。

每个步骤都有其特定的 任务。

2.1 【功能需求】
功能概述:该软件为用户提供一个在 windows 系统上
运 行的简单计算器,能进行简单的加、减、乘、除四则运算和
些常用特殊运算,包括余弦运算、正弦运算、正切运算、 绝对值、平方根运算、以 e 为底的指数运算、以 10 为底的 对数运算。

2.2 【总体设计】
1. 巩固和加深 C 语言课程的基本知识的理解和掌握
2. 掌握 C 语言编程和程序调试的基本技能
3. 利用 C 语言进行基本的软件设计
4. 掌握书写程序设计说明文档的能力
5. 提高运用 C 语言解决实际问题的能力。

C语言课程设计报告书____简易计算器[1]

C语言课程设计报告书____简易计算器[1]

C语言课程设计报告书课程名称:C语言课程设计课题名称:简易计算器班级:学号:姓名:指导老师:成绩:2008年6月欢迎老师指导一、课程设计目的1.通过一个学期的学习,我认为要学好C语言程序这门课程,不仅要认真阅读课本知识,更重要的是要通过上机实践才能增强和巩固我的知识。

特别是作为本科生,更要注重实践这一环节,只有这样我们才能成为合格的计算机人材。

通过这次课程设计,进一步巩固所学的语句,如语句嵌套等;加深对循环,分支等结构的运用;最后还可以熟悉四则运算﹑三角函数等经典算法。

2.通过此次课程设计扩展自己的知识面,课本上的东西是远远不够的,可以通过去图书馆查资料,上网找资料等手段学到一些新知识,比如画图函数,颜色填充函数等。

3.通过课程设计,加深对结构化程序设计思想的理解,能进行一个系统功能需求分析,并设计合理的模块化结构。

提高程序开发能力。

二、设计内容我设计的是一款简易计算器,界面清楚,操作方便,它能实现以下功能:1.以界面形式给出计算器功能2.简单的四则混合运算(支持小括号、优先级)3.弦、余弦函数计算4.指数、对数的运算三、总体设计简单计算器由五大模块组成,模块设计如下:图1 模块调用图1.主函数 void main()功能:调用各个主要模块,实现简单计算器的整体功能。

2.主界面函数void JieMian()功能:使用有关图形函数模拟出可视化的计算器外观界面,并提供用户输入窗口。

3.四则混合运算函数void SiZeHunHeYunSuan()功能:实现简单的加减乘除混合运算,并支持优先级和带括号的运算。

4.三角运算函数void SanJiaoYunSuan()功能:实现基本的三角函数运算:sin(x)和cos(x)。

5.指对数函数void ZhiDuiShuYunSuan()功能:实现基本的指数和对数运算。

四、详细设计(一)数据结构设计1.用initgraph函数初始化图形界面,用outtextxy函数在图形模式下显示需输出内容,用setcolor和setbkcolor函数设置边框颜色和填充颜色,用circle 和rectangle函数来画计算器界面的按键,用gotoxy将数字送入显示区。

C语言毕业课程设计报告【简易计算器设计】

C语言毕业课程设计报告【简易计算器设计】

(此文档为word格式,下载后您可任意编辑修改!) 《C语言课程设计》报告设计题目:简单计算器设计学院名称:电子与信息工程学院1专业:计算机科学与技术班级:计科09-1姓名:朱凯迪学号 1 9指导教师:宋宏图定稿日期:2010年03月10日一、设计题目简单计算器设计二、设计要求在功能上功能尽量模拟windows操作系统中的计算器,系统界面不做强制要求。

三、设计目的①通过本项课程设计,可以培养独立思考、综合运用所学有关相应知识的能力,能更好的巩固《C语言程序设计》课程学习的内容,掌握工程软件设计的基本方法,强化上机动手编程能力,闯过理论与实践相结合的难关!更加了解了c语言的好处和其可用性!同时增加了同学之间的团队合作精神!更加也体会到以后在工作中团队合作的重要性和必要性!②通过C语言课程设计,使学生了解高级程序设计语言的结构,掌握基本的程序设计过程和技巧,掌握基本的分析问题和利用计算机求解问题的能力,具备初步的高级语言程序设计能力。

为后续各门计算机课程的学习和毕业设计打下坚实基础。

四、设计思想及过程①由于需要使功能尽量模仿Windows下的计算器,而很多功能要以图形界面实现,故用Borland C++ Builder编写。

所以用的是面向对象程序设计。

但因为这是C语言的课程设计,所以除了面向对象的使用以外,所有语法都是按照C语言的格式编写。

②采用工程模式,文件包括calc...cpp(代码主文件,包括各空间操作的函数)以及一些其它附属文件,包括dll动态链接库。

③在参考了Windows里的计算器以后,决定在我的课程设计中实现:⒈0~9的数字输入功能(小数点除外)⒉实现加、减、乘、整除、取模、阶乘、位运算左移、x的y次方、与、异或、x立方、x平方运算功能,二进制、八进制、十进制、十六进制转换功能,正负转换功能,退格、归零等功能。

⒊数字显示最多为40位,超过即用科学表示法表示(例如1E50)。

⒋运算时因最高能对5000位的数字进行运算,故所有功能建立在自行编写代码的高精度运算基础上。

C语言简易计算器课程设计

C语言简易计算器课程设计

C语⾔简易计算器课程设计C语⾔课程设计报告书题⽬:简易计算器院系:班级:学号:姓名:摘要该软件为⽤户提供在windows系统上的简易计算器,能进⾏简单的加、减、乘、除四则运算与混合运算。

⽬的是为了巩固和加深C语⾔课程的基本知识的理解和掌握,利⽤C语⾔进⾏基本的软件设计,掌握C语⾔的编程和程序调试的基本技能,掌握书写程序设计说明⽂档的能⼒,提⾼运⽤C语⾔解决实际问题的能⼒。

关键词:C;简易计算器;程序;基本算法;混合运算SUMMARYthe software provides a simple calculator in Windows system for users ,can be a simple add,subtract,multiply,divide.The purpose is to consolidate and deepen the basic knowledge of C language courses to understand and master, The use of C language for software design basic, To master the basic skills of C language programming and program debugging, Master the writing program design documentation ability,improve the ability to use C language to solve practical problems.⽬录1、概述 (1)1.1.简单计算器设计的意义 (1)1.2.系统的基本要求 (1)1.3.功能设计 (1)2、总体设计 (2)2.1系统模块机构框图 (2)2.2.功能模块框图 (2)2.3.系统流程图 (3)2.4.界⾯设计 (4)3、详细设计 (5)3.1.模块描述 (5)3.2.系统头⽂件 (5)3.3.函数声明 (5)4、调试分析 (8)5、总结 (8)6、参考⽂献 (10)7、致谢 (11)1、概述1.1.简单计算器设计的意义本课题的内容是设计⼀个简单的计算器。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

单位电气与电子工程分院(系)专业电气与电子工程学号学生姓名彭东林指导教师刘辉完成日期年月日摘要课程设计语言类课程的指导思想:使学生通过学习高级编程语言的知识、编程技术和基本算法,掌握课程设计的思想和方法,具备利用计算机求解实际问题的能力,能灵活运用高级语言进行程序设计。

其实认真学习一门语言并不难,关键是所追求的学习方法和途径。

通过C语言程序设计,可以使我们掌握软件开发过程的难题分析、系统设计、程序编码、测试程序等基本方法和技能。

同时,还能加强我们的时间管理意识,锻炼对难题的发现、分析和处理能力。

我认为遇到难题并不可怕,可怕的是你不去解决,这可能是C语言课程设计的主要目的之一。

现时学习生活中,常会遇到一些数目较大数据繁杂的数值运算,徒手运算起来很困难,这时候我们就必须用到计算器。

人们对计算的要求不断提高,普通的功能简单的仅能进行四则运算的计算工具已经不能满足需要,需要一种能进行多种计算。

现在已经有一些功能较为强大、涵盖面较广的计算软件,而且各种平台的小工具仍不断出现。

这些大大方便了我们的生活给我们更多的选择和实现方式。

本程序的编写基础是Tubro C2.0汉化版,它在tubro c的原有基础上实现了多汉字的支持方便了我们的使用。

生成的程序可移植性强兼容性好稳定!本程序实现了加、减、乘、除、求幂、求模,求平方根,求Sin,求Cos,求Log10,求阶乘,取整,求正切,以及进制之间的相互转换。

它可以直接输入数学表达式,不需要任何转换,就可以直接输出数学四则运算的结果。

但是,每次只能运算一个表达式,按 CE清空后再计算下一组式子。

本程序在进制转换方面有一些漏洞,但一般的进制转换结果还是准确的。

关键字:C语言程序设计基本算法高级编程语言思想和方法计算器Tubro c 2.0汉化版目录第1章选题的意义 (4)1.1自我介绍 (4)1.2选题 (4)第2章系统功能需求分析 (5)2.1系统的基本要求 (5)2.2数据结构和用法 (5)第3章系统设计 (6)第4章系统实现 (7)第5章总结 (8)第1章选题的意义1.1 自我介绍我的名字是彭东林,就读于石家庄铁道大学,电0905-2班,电气与电子工程分院。

1.2 选题1.我选的题目是:简单计算器的设计2.我选这道题的原因如下:计算器对我们每一的学生都很熟悉,从初中到高中再到大学。

但是我们只知道按下几个按钮计算器便会显示出结果,很少有学生分析过计算器究竟是如何运行的。

C语言课程设计便是一个很好的机会,让我去亲自写计算器的运行代码,尽管是简单计算器的设计,但其背后的知识那是相当多的,对我是个挑战,我接受!3.运用的数据结构和知识点TuborC 绘图知识数学函数选择结构循环结构数组指针顺序结构进制间的转换4.时间安排5.主要参考文献:《C语言绘图与计算机仿真技术》王强如北京航空航天大学[1]科钦.C语言程序设计.北京:电子工业出版社,1987:56-58[2]徐君毅.C语言程序设计基础.上海:复旦大学出版社,1992:87-98[3]李成付.C语言程序设计基础.北京:科学出版社,1992:42-67[4]郝玉洁.C语言程序设计.北京:机械工业出版社,2000:63-88[5]钱启平.C语言程序设计基础.北京:中国铁道出版社,2000:91-99[6]李大友.C语言程序设计基础.北京:清华大学出版社,1999:58-98[7]黄迪明.C语言程序设计.北京:电子科技大学出版社,1998:78-98[8]姜仲秋.C语言程序设计基础.南京:南京大学出版社,1998:16-100[9]李国昌.C语言程序设计基础.北京:科学出版社,1998:78-120[10]谭浩强.C语言程序设计.北京:清华大学出版社,2000:74-129第2章系统功能需求分析2.1系统的基本要求1. 算术运算功能。

能够实现+、-、*、、mod、int运算。

2. 函数运算功能。

能够实现exp、ln、sin、x^y、log、cos、x^3、n!、tan、x^2、1x等运算。

3. 进制之间的转换功能。

能够实现十六、十、二、八进制数据之间的转换。

4.通过键盘控制字符和数字的输入。

2.2数据结构设计及用法说明此程序调用的函数主要有<math.”,按“=”,输出结果。

正切:输入一个数,按“tan”,按“=”,输出结果。

阶乘:输入一个数,按“n!”,按“=”,输出结果。

倒数:输入一个数,按“1x”,按“=”,输出结果十进制转二进制:输入一个十进制数,按“10->2”,输出二进制结果。

十进制转八进制:输入一个十进制数,按“10->8”,输出八进制结果。

八进制转十进制:输入一个八进制数,按“10->8”,输出十进制结果。

第3章系统设计第4章系统实现本系统采用 C语言开发,生成可执行文件在任何系统下都可以执行,具有很好的数据处理能力和稳定性。

并且使用Turbo C 2.0汉化版在原有基础上实现了多汉字的支持,方便了我们的使用。

生成的程序可移植性强、兼容性好。

这个系统是基于软件发展的生命周期来研制的,它可以直接输入数学表达式,不需要任何转换,就可以直接输出数学四则运算的结果。

本程序通过调用int specialkey(void) 和#include <conio.(){float num1=0,num2=0,result;intx,y,x0=315,y0=160,i,j,v,m,n,act,t1=0,t2=0,cd=0,zj=0,zj1=0,num=0 ,cd1=0,a[25];int flag1,flag2=1,flag3=1,flag4=1,flag5=1;charstr2[5]={""},temp[20]={""},c,str3[10]={""},str4[10]={""},str5[2 0]={""},str7[20]={""};charstr1[]={'A','1','2','3','4','5','6','7','B','8','9','=','+','-' ,'*','','C','G','H','I','J','K','L','0','D','M','N','O','P','Q','.','$','E' ,'R','S','T','U','V','@','(','F','W','X','Y','Z','&',')','|'};int sj1[]={0,250};int sj2[]={};int driver,mode;driver=DETECT;mode=0;initgraph(&driver,&mode,""); *初始化* setcolor(0); *绘画*setlinestyle(0,0,3);setfillstyle(1,13);sector();setfillstyle(1,2);setcolor(2);fillpoly(4,sj1);setcolor(4);setfillstyle(1,6);pieslice(360,80);setfillstyle(1,15);line(255);line(255);pieslice(0,5);pieslice(0,5);fillpoly(4,sj2);ellipse();setlinestyle(0,0,3); *标题*settextstyle(4,0,8);outtextxy("PENGDONGLIN CACULATOR");setbkcolor(3);setcolor(5);setfillstyle(5,9);bar3d(); *键盘外框三维*setlinestyle(0,0,1);setfillstyle(1,8);bar3d(); *键盘内框三维*setcolor(2); *绿色*setfillstyle(1,7); *画按钮轮廓三维* bar3d();bar3d();bar3d();bar3d();bar3d();bar3d();bar3d();bar3d();bar3d();bar3d();bar3d();bar3d();bar3d();bar3d();bar3d();bar3d();bar3d();bar3d();bar3d();bar3d();bar3d();bar3d();bar3d();bar3d();bar3d();bar3d();bar3d();bar3d();bar3d();bar3d();bar3d();bar3d();bar3d();bar3d(); setcolor(2); bar3d(); setcolor(2); bar3d(); setcolor(2); bar3d();bar3d();bar3d();bar3d();bar3d();bar3d();bar3d();bar3d();bar3d();bar3d();setcolor(1);*按钮字符蓝色* outtextxy("A");outtextxy("1");outtextxy("2");outtextxy("3");outtextxy("4");outtextxy("5");outtextxy("6");outtextxy("7");outtextxy("B");outtextxy("8");outtextxy("9");outtextxy("=");outtextxy("+");outtextxy("-");outtextxy("*"); outtextxy(""); outtextxy("C"); outtextxy("mod"); outtextxy("x^y"); outtextxy("log"); outtextxy("ln"); outtextxy("int"); outtextxy("16"); outtextxy("|"); outtextxy("2"); outtextxy("0"); outtextxy("D"); outtextxy("cos"); outtextxy("x^3"); outtextxy("n!"); outtextxy("tan"); outtextxy("x^2"); outtextxy("."); outtextxy("8"); outtextxy("|"); outtextxy("2"); outtextxy("E"); outtextxy("1x"); outtextxy("sin");;outtextxy("exp"); outtextxy("10"); outtextxy("|"); outtextxy("2"); outtextxy("8"); outtextxy("|"); outtextxy("16"); outtextxy("2"); outtextxy("|"); outtextxy("16"); outtextxy("F"); outtextxy("10"); outtextxy("|"); outtextxy("8"); outtextxy("10"); outtextxy("|"); outtextxy("16"); outtextxy("2"); outtextxy("|"); outtextxy("10"); outtextxy("QIT"); outtextxy("CE"); outtextxy("2"); outtextxy("|");outtextxy("8"); outtextxy("8"); outtextxy("|"); outtextxy("10"); setcolor(4); outtextxy("sft"); outtextxy("16"); outtextxy("|"); outtextxy("10"); outtextxy("16"); outtextxy("|"); outtextxy("8"); setlinestyle(0,0,3); setcolor(1); setfillstyle(1,7); bar3d(00,2,1); setlinestyle(0,0,1); line(0);line(0);line(8);setcolor(5); setfillstyle(1,3); bar(9);*填充x* outtextxy("x="); setcolor(6);bar(9); *填充y*outtextxy("y=");setfillstyle(1,6);bar(9);*填充符号*outtextxy("Result=");setcolor(5);setfillstyle(1,15);bar(8);*填充结果**开始*x=x0;y=y0;gotoxy(x,y);setcolor(6);arrow();*显示光标*putimage(x,y,rar,XOR_PUT);m=0;n=0;strcpy(str2,"");while((v=specialkey())!=45){while((v=specialkey())!=ENTER) *当压下键不是回车时* {putimage(x,y,rar,XOR_PUT); *显示光标图象*if(v==RIGHT) *向右*if(x>=595){x=x0;m=0;}else{x=x+40;m++;}if(v==LEFT) *向左* if(x<=x0){x=595;m=8-1;}else{x=x-40;m--;}if(v==UP) *向上* if(y<=y0){y=410;n=6-1;}else{y=y-50;n--;}if(v==DOWN) *向下*if(y>=410){y=y0;n=0;}else{y=y+50;n++;}putimage(x,y,rar,XOR_PUT);}c=str1[n*8+m];if(isxdigit(c)||c=='.') *判断是否是十六进制的数字、字母或小数点*{ if(flag1==-1) *flag1为负数标志*{strcpy(str2,"-");flag1=1;}sprintf(temp,"%c",c);*将字符保存到字符串变量temp中* strcat(str2,temp); *将temp中的字符串连接到str2中* if(flag2==1) *flag2为填充x或y的标志*{setfillstyle(1,3);bar(9);*填充x*setcolor(5);outtextxy("x=");outtextxy(str2);*显示字符串x的值*}if(flag2==0){setcolor(6);setfillstyle(1,3);bar(9); *填充y*outtextxy("y=");outtextxy(str2);*显示字符串y的值*flag2=1;}}if(c=='+'){num1=atof(str2);*将第一个操作数转换为浮点数*strcpy(str2,""); *清空str2*act=1;setfillstyle(1,6);setcolor(9);bar(9);outtextxy("+"); *显示'+'*flag2=0;}if(c=='-'){if(strcmp(str2,"")==0)flag1=-1;else{num1=atof(str2);strcpy(str2,""); *将str2清空* act=2; *做计算减法标志值*setfillstyle(1,6);setcolor(9);bar(9);outtextxy("-"); *显示'-'*flag2=0;}}if(c=='*'){num1=atof(str2); *将第二个操作数转换为浮点数* strcpy(str2,""); *将str2清空*act=3; *做计算乘法标志值*setfillstyle(1,6);setcolor(9);bar(9);outtextxy("*"); *显示'*'*flag2=0;}if(c==''){num1=atof(str2); *将第二个操作数转换为浮点数* strcpy(str2,""); *将str2清空*act=4; *做计算除法标志值*setfillstyle(1,6);setcolor(9);bar(9);outtextxy(""); *显示''*flag2=0;}if(c=='Q'){num1=atof(str2); *将第二个操作数转换为浮点数* strcpy(str2,""); *将str2清空*act=7; *做计算除法标志值*setfillstyle(1,6);setcolor(9);bar(9);outtextxy("x^2"); *显示'x^2'*flag2=0;}if(c=='H'){num1=atof(str2); *将第二个操作数转换为浮点数* strcpy(str2,""); *将str2清空*act=5; *做计算除法标志值*setfillstyle(1,6);setcolor(9);bar(9);outtextxy("x^y"); *显示"x^y"*flag2=0;}if(c=='N'){num1=atof(str2); *将第二个操作数转换为浮点数* strcpy(str2,""); *将str2清空*act=6; *做计算除法标志值*setfillstyle(1,6);setcolor(9);bar(9);outtextxy("x^3"); *显示"x^3"*flag2=0;}if(c=='R'){num1=atof(str2); *将第二个操作数转换为浮点数* strcpy(str2,""); *将str2清空*act=8; *做计算除法标志值*setfillstyle(1,6);setcolor(9);bar(9);outtextxy("1x"); *显示"1x"*flag2=0;}if(c=='S'){if(flag3==0){num1=atof(str2); *将第二个操作数转换为浮点数* strcpy(str7,str2);strcpy(str2,""); *将str2清空*act=28; *做计算除法标志值*setfillstyle(1,6);setcolor(9);bar(9);outtextxy("jz:16->10"); *显示"jz:16->10"*flag3=0;flag5=0;}else{num1=atof(str2); *将第二个操作数转换为浮点数* strcpy(str2,""); *将str2清空*act=9; *做计算除法标志值*setcolor(9);setfillstyle(1,6);bar(9);outtextxy("sin"); *显示"sin"*setcolor(6);setfillstyle(1,3);bar(9); *填充y*outtextxy("y=");flag2=0;}}if(c=='M'){num1=atof(str2); *将第二个操作数转换为浮点数* strcpy(str2,""); *将str2清空*act=10; *做计算除法标志值*setfillstyle(1,6);setcolor(9);bar(9);outtextxy("cos"); *显示"cos"*flag2=0;}if(c=='P'){num1=atof(str2); *将第二个操作数转换为浮点数* strcpy(str2,""); *将str2清空*act=11; *做计算除法标志值*setfillstyle(1,6);setcolor(9);bar(9);outtextxy("tan"); *显示"tan"*flag2=0;}if(c=='I'){num1=atof(str2); *将第二个操作数转换为浮点数* strcpy(str2,""); *将str2清空*act=12; *做计算除法标志值*setfillstyle(1,6);setcolor(9);bar(9);outtextxy("log"); *显示"log"*flag2=0;}if(c=='J'){num1=atof(str2); *将第二个操作数转换为浮点数* strcpy(str2,""); *将str2清空*act=13; *做计算除法标志值*setfillstyle(1,6);setcolor(9);bar(9);outtextxy("ln"); *显示"ln"*flag2=0;}if(c=='T'){if(flag3==0){num1=atof(str2); *将第二个操作数转换为浮点数* strcpy(str7,str2);strcpy(str2,""); *将str2清空*act=29; *做计算除法标志值*setfillstyle(1,6);setcolor(9);bar(9);outtextxy("jz:16->8"); *显示"jz:16->8"*flag3=0;flag5=0;}else{num1=atof(str2); *将第二个操作数转换为浮点数* strcpy(str2,""); *将str2清空*act=14; *做计算除法标志值*setcolor(9);setfillstyle(1,6);bar(9);outtextxy("exp"); *显示"exp"*setcolor(6);setfillstyle(1,3);bar(9); *填充y*outtextxy("y=");flag2=0;}}if(c=='K'){num1=atof(str2); *将第二个操作数转换为浮点数* strcpy(str2,""); *将str2清空*act=15; *做计算除法标志值*setfillstyle(1,6);setcolor(9);bar(9);outtextxy("int"); *显示"int"*flag2=0;}if(c=='O'){num1=atof(str2); *将第二个操作数转换为浮点数* strcpy(str2,""); *将str2清空*act=16; *做计算除法标志值*setfillstyle(1,6);setcolor(9);bar(9);outtextxy("n!"); *显示"n!"*flag2=0;}if(c=='U'){flag3=0;}if(c=='G'){num1=atof(str2); *将第二个操作数转换为浮点数* strcpy(str2,""); *将str2清空*act=17; *做计算除法标志值*setfillstyle(1,6);setcolor(9);bar(9);outtextxy("mod"); *显示"mod"*flag2=0;}if(c=='V'){num1=atof(str2); *将第二个操作数转换为浮点数* strcpy(str2,""); *将str2清空*act=18; *做计算除法标志值*setfillstyle(1,6);setcolor(9);bar(9);outtextxy("jz:10->2"); *显示"jz:10->2"*flag3=0;}if(c=='W'){num1=atof(str2); *将第二个操作数转换为浮点数* strcpy(str2,""); *将str2清空*act=19; *做计算除法标志值*setfillstyle(1,6);setcolor(9);bar(9);outtextxy("jz:10->8"); *显示"jz:10->8"*flag3=0;}if(c=='X'){num1=atof(str2); *将第二个操作数转换为浮点数* strcpy(str2,""); *将str2清空*act=20; *做计算除法标志值*setfillstyle(1,6);setcolor(9);bar(9);outtextxy("jz:10->16"); *显示"jz:10->16"*flag3=0;flag4=0;}if(c=='Y'){num1=atof(str2); *将第二个操作数转换为浮点数* cd=strlen(str2);strcpy(str2,""); *将str2清空*act=21; *做计算除法标志值*setfillstyle(1,6);setcolor(9);bar(9);outtextxy("jz:2->10"); *显示"jz:2->10"*flag3=0;}if(c==')'){num1=atof(str2); *将第二个操作数转换为浮点数* cd=strlen(str2);strcpy(str2,""); *将str2清空*act=22; *做计算除法标志值*setfillstyle(1,6);setcolor(9);bar(9);outtextxy("jz:2->8"); *显示"jz:2->8"*flag3=0;}if(c=='|'){num1=atof(str2); *将第二个操作数转换为浮点数* cd=strlen(str2);strcpy(str2,""); *将str2清空*act=23; *做计算除法标志值*setfillstyle(1,6);setcolor(9);bar(9);outtextxy("jz:8->10"); *显示"jz:8->10"*flag3=0;}if(c=='('){num1=atof(str2); *将第二个操作数转换为浮点数* cd=strlen(str2);strcpy(str2,""); *将str2清空*act=24; *做计算除法标志值*setfillstyle(1,6);setcolor(9);bar(9);outtextxy("jz:2->16"); *显示"jz:2->16"*flag3=0;}if(c=='@'){num1=atof(str2); *将第二个操作数转换为浮点数* cd=strlen(str2);strcpy(str2,""); *将str2清空*act=25; *做计算除法标志值*setfillstyle(1,6);setcolor(9);bar(9);outtextxy("jz:8->16"); *显示"jz:8->16"*flag3=0;if(c=='$'){num1=atof(str2); *将第二个操作数转换为浮点数* cd=strlen(str2);strcpy(str2,""); *将str2清空*act=26; *做计算除法标志值*setfillstyle(1,6);setcolor(9);bar(9);outtextxy("jz:8->2"); *显示"jz:8->2"*flag3=0;}if(c=='L'){num1=atof(str2); *将第二个操作数转换为浮点数* strcpy(str7,str2);strcpy(str2,""); *将str2清空*act=27; *做计算除法标志值*setfillstyle(1,6);setcolor(9);bar(9);outtextxy("jz:16->2"); *显示"jz:16->2"*flag3=0;flag5=0;if(c=='&'){num1=0;num2=0;strcpy(str2,"");strcpy(str5,"");setcolor(1);setfillstyle(1,15); bar(8);*清空结果* setcolor(5);setfillstyle(1,3); bar(9);*清空x*outtextxy("x=");setcolor(6);bar(9); *清空y*outtextxy("y=");setfillstyle(1,6); bar(9);*清空符号* strcpy(str7,"");cd1=0;num=0;flag2=1;flag3=1;flag4=1;flag5=1;cd=0;zj=0;zj1=0;}if(c=='Z'){putimage(x,y,rar,XOR_PUT);goto tie; *退出*}if(c=='='){num2=atof(str2); *将第二个操作数转换为浮点数*switch(act) *根据运算符号计算*{case 1:result=num1+num2;break; *做加法*case 2:result=num1-num2;break; *做减法*case 3:result=num1*num2;break; *做乘法*case 4:result=num1num2;break; *做除法*case 5:result=pow(num1,num2);break; *做x的y次方*case 6:result=pow(num1,3);break; *做x^3*case 7:result=pow(num1,2);break; *做x^2*case 8:result=1num1;break; *做1x*case 9:result=sin(num1);break; *做sinx*case 10:result=cos(num1);break; *做cosx*case 11:result=tan(num1);break; *做tanx*case 12:if(num2==0||num2==1)result=0;elseresult=log(num1)log(num2);break; *做LOGxY* case 13:result=log(num1);break; *做lnx*case 14:result=exp(num1);break; *做e^x*case 15:result=(int)num1;if(result<0)result--;break; *做int x*case 16: result=1;for(i=1;i<=num1;i++)result=result*i;break; *做n!*case 17:result=fmod(num1,num2);break; *做xy取余* case 18: zj=num1;t1=1;for(i=0;t1!=0;i++){t1=(int)(zj2);t2=(int)(fmod(zj,2));a[i]=t2;zj=t1;}result=0;for(i--;i>=0;i--){result=result+a[i]*pow(10,i);}break;*十进制转二进制*case 19: zj=num1;t1=1;for(i=0;t1!=0;i++){t1=(int)(zj8);t2=(int)(fmod(zj,8));a[i]=t2;zj=t1;}result=0;for(i--;i>=0;i--){result=result+a[i]*pow(10,i);}break;*十进制转八进制*case 21:zj=num1;result=0;for(i=0;i<=cd;i++){result=result+fmod((int)(zj),10)*pow(2,i); zj=(int)(zj10);}break;*2->10*case 22: result=0;zj=num1;for(i=0;i<=cd;i++){result=result+fmod((int)(zj),10)*pow(2,i);zj=(int)(zj10);}zj1=result;t1=1;for(i=0;t1!=0;i++){t1=(int)(zj18);t2=(int)(fmod(zj1,8));a[i]=t2;zj1=t1;}result=0;for(i--;i>=0;i--){result=result+a[i]*pow(10,i);}break;*2->8*case 23:zj=num1;result=0;for(i=0;i<=cd;i++){result=result+fmod((int)(zj),10)*pow(8,i); zj=(int)(zj10);}break;*8->10*case 26:zj=num1;result=0;setcolor(10);gotoxy();printf("%d",cd);for(i=0;i<=cd;i++){result=result+fmod((int)(zj),10)*pow(8,i); zj=(int)(zj10);}zj1=result;t1=1;for(i=0;t1!=0;i++){t1=(int)(zj12);t2=(int)(fmod(zj1,2));a[i]=t2;zj1=t1;}result=0;for(i--;i>=0;i--){result=result+a[i]*pow(10,i);}break;*8->2*case 20:result=(int)num1;flag4=0;break;*10->16*case 24:zj=num1;result=0;for(i=0;i<=cd;i++){result=result+fmod((int)(zj),10)*pow(2,i); zj=(int)(zj10);}flag4=0;break;*2->16*case 25:zj=num1;result=0;for(i=0;i<=cd;i++){result=result+fmod((int)(zj),10)*pow(8,i); zj=(int)(zj10);}flag4=0;break;*8->16*case 27:cd1=strlen(str7); *测量字符串str7的长度* for(i=0,j=1;i<cd1;i++,j++){if(str7[i]=='1')num=num+1*pow(16,cd1-j);elseif(str7[i]=='2')num=num+2*pow(16,cd1-j);elseif(str7[i]=='3')num=num+3*pow(16,cd1-j);elseif(str7[i]=='4')num=num+4*pow(16,cd1-j);elseif(str7[i]=='5')num=num+5*pow(16,cd1-j);elseif(str7[i]=='1')num=num+1*pow(16,cd1-j);elseif(str7[i]=='6')num=num+6*pow(16,cd1-j);elseif(str7[i]=='7')num=num+7*pow(16,cd1-j); elseif(str7[i]=='8')num=num+8*pow(16,cd1-j); elseif(str7[i]=='9')num=num+9*pow(16,cd1-j); elseif(str7[i]=='A')num=num+10*pow(16,cd1-j); elseif(str7[i]=='B')num=num+11*pow(16,cd1-j); elseif(str7[i]=='C')num=num+12*pow(16,cd1-j); elseif(str7[i]=='D')num=num+13*pow(16,cd1-j); elseif(str7[i]=='E')num=num+14*pow(16,cd1-j); elseif(str7[i]=='F')}zj=num;t1=1;for(i=0;t1!=0;i++){t1=(int)(zj2);t2=(int)(fmod(zj,2));a[i]=t2;zj=t1;}result=0;for(i--;i>=0;i--){result=result+a[i]*pow(10,i); }break;*16->2*case 28:cd1=strlen(str7);for(i=0,j=1;i<cd1;i++,j++){if(str7[i]=='1')num=num+1*pow(16,cd1-j); elseif(str7[i]=='2')elseif(str7[i]=='3')num=num+3*pow(16,cd1-j); elseif(str7[i]=='4')num=num+4*pow(16,cd1-j); elseif(str7[i]=='5')num=num+5*pow(16,cd1-j); elseif(str7[i]=='1')num=num+1*pow(16,cd1-j); elseif(str7[i]=='6')num=num+6*pow(16,cd1-j); elseif(str7[i]=='7')num=num+7*pow(16,cd1-j); elseif(str7[i]=='8')num=num+8*pow(16,cd1-j); elseif(str7[i]=='9')num=num+9*pow(16,cd1-j);elseif(str7[i]=='A')num=num+10*pow(16,cd1-j); elseif(str7[i]=='B')num=num+11*pow(16,cd1-j); elseif(str7[i]=='C')num=num+12*pow(16,cd1-j); elseif(str7[i]=='D')num=num+13*pow(16,cd1-j); elseif(str7[i]=='E')num=num+14*pow(16,cd1-j); elseif(str7[i]=='F')num=num+15*pow(16,cd1-j); }result=num;break;*16->10*case 29:cd1=strlen(str7);for(i=0,j=1;i<cd1;i++,j++){if(str7[i]=='1')num=num+1*pow(16,cd1-j); elseif(str7[i]=='2')num=num+2*pow(16,cd1-j); elseif(str7[i]=='3')num=num+3*pow(16,cd1-j); elseif(str7[i]=='4')num=num+4*pow(16,cd1-j); elseif(str7[i]=='5')num=num+5*pow(16,cd1-j); elseif(str7[i]=='1')num=num+1*pow(16,cd1-j); elseif(str7[i]=='6')num=num+6*pow(16,cd1-j); elseif(str7[i]=='7')num=num+7*pow(16,cd1-j); elseif(str7[i]=='8')num=num+8*pow(16,cd1-j); elseif(str7[i]=='9')num=num+9*pow(16,cd1-j); elseif(str7[i]=='A')num=num+10*pow(16,cd1-j); elseif(str7[i]=='B')num=num+11*pow(16,cd1-j); elseif(str7[i]=='C')num=num+12*pow(16,cd1-j); elseif(str7[i]=='D')num=num+13*pow(16,cd1-j); elseif(str7[i]=='E')num=num+14*pow(16,cd1-j); elseif(str7[i]=='F')num=num+15*pow(16,cd1-j); }zj=num;t1=1;。

相关文档
最新文档