C++语言计算器的实验报告

C++语言计算器的实验报告
C++语言计算器的实验报告

1.题目:简单计算器

2.实验目的:模仿日常生活中所用的计算器,自行设计一个简单的

计算器程序,实现简单的计算功能。

3.实验主要硬件软件环境:Window 7Visual C++ 6.0

4.实验内容:

(1)体系设计:

程序是一个简单的计算器,能正确输入数据,能实现加、减、乘、除等算术运算,能进行简单三角运算,运算结果能正确显示,可以清楚数据等。

(2)设计思路:

1)先在Visual C++ 6.0中建立一个MFC工程文件,名为

calculator.

2)在对话框中添加适当的编辑框、按钮、静态文件、复选

框和单选框

3)设计按钮,并修改其相应的ID与Caption.

4)选择和设置各控件的单击鼠标事件。

5)为编辑框添加double类型的关联变量m_edit1.

6)在calculatorDlg.h中添加math.h头文件,然后添加

public成员。

7)打开calculatorDlg.cpp文件,在构造函数中,进行成员

初始化和完善各控件的响应函数代码。

(3)程序清单:

●添加的public成员:

double tempvalue; //存储中间变量

double result; //存储显示结果的值

int sort; //判断后面是何种运算:1.加法2.

减法 3.乘法 4.除法

int append; //判断后面是否添加数字

●成员初始化:

CCalculatorDlg::CCalculatorDlg(CWnd* pParent /*=NULL*/)

: CDialog(CCalculatorDlg::IDD, pParent)

{

//{{AFX_DATA_INIT(CCalculatorDlg)

m_edit1 = 0.0;

//}}AFX_DATA_INIT

// Note that LoadIcon does not require a subsequent DestroyIcon in Win32

m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);

tempvalue=0;

result=0;

sort=0;

append=0;

}

各控件响应函数代码:

void CCalculatorDlg::OnButton1() //按钮“1”

{

// TODO: Add your control notification handler code here

if(append==1)result=0;

result=result*10+1;

m_edit1=result;

append=0;

UpdateData(FALSE);

}

void CCalculatorDlg::OnButton2() //按钮“2”

{

// TODO: Add your control notification handler code here

if(append==1)result=0;

result=result*10+2;

m_edit1=result;

append=0;

UpdateData(FALSE);

}

void CCalculatorDlg::OnButton3() //按钮“3”

{

// TODO: Add your control notification handler code here

if(append==1)result=0;

result=result*10+3;

m_edit1=result;

append=0;

UpdateData(FALSE);

}

void CCalculatorDlg::OnButton4() //按钮“4”{

// TODO: Add your control notification handler code here

if(append==1)result=0;

result=result*10+4;

m_edit1=result;

append=0;

UpdateData(FALSE);

}

void CCalculatorDlg::OnButton5() //按钮“5”

{

// TODO: Add your control notification handler code here

if(append==1)result=0;

result=result*10+5;

m_edit1=result;

append=0;

UpdateData(FALSE);

}

void CCalculatorDlg::OnButton6() //按钮“6”

{

// TODO: Add your control notification handler code here

if(append==1)result=0;

result=result*10+6;

m_edit1=result;

append=0;

UpdateData(FALSE);

}

void CCalculatorDlg::OnButton7() //按钮“7”

{

// TODO: Add your control notification handler code here

if(append==1)result=0;

result=result*10+7;

m_edit1=result;

append=0;

UpdateData(FALSE);

}

void CCalculatorDlg::OnButton8() //按钮“8”

{

// TODO: Add your control notification handler code here

if(append==1)result=0;

result=result*10+8;

m_edit1=result;

append=0;

UpdateData(FALSE);

}

void CCalculatorDlg::OnButton9() //按钮“9”

{

// TODO: Add your control notification handler code here

if(append==1)result=0;

result=result*10+9;

m_edit1=result;

append=0;

UpdateData(FALSE);

}

void CCalculatorDlg::OnBUTTONzero() //按钮“0”{

// TODO: Add your control notification handler code here

if(append==1)result=0;

result=result*10+0;

m_edit1=result;

append=0;

UpdateData(FALSE);

}

void CCalculatorDlg::OnBUTTONequal() //按钮“=”{

// TODO: Add your control notification handler code here

switch(sort)

{

case 1:result=result+tempvalue;break;

case 2:result=tempvalue-result;break;

case 3:result=result*tempvalue;break;

case 4:result=tempvalue/result;break;

}

m_edit1=result;

sort=0;

append=1;

UpdateData(FALSE);

}

void CCalculatorDlg::OnBUTTONclean() //按钮“C”{

// TODO: Add your control notification handler code here

tempvalue=0;

result=0;

m_edit1=0.0;

UpdateData(FALSE);

}

void CCalculatorDlg::OnBUTTONplus() //按钮“+”{

// TODO: Add your control notification handler code

here

sort=1;

tempvalue=result;

m_edit1=0;

append=1;

}

void CCalculatorDlg::OnBUTTONminus() //按钮“-”{

// TODO: Add your control notification handler code here

sort=2;

tempvalue=result;

m_edit1=0;

append=1;

}

void CCalculatorDlg::OnBUTTONmulti() //按钮“*”{

// TODO: Add your control notification handler code here

sort=3;

tempvalue=result;

m_edit1=0;

append=1;

}

void CCalculatorDlg::OnBUTTONdiv() //按钮“/”{

// TODO: Add your control notification handler code here

sort=4;

tempvalue=result;

m_edit1=0;

append=1;

}

void CCalculatorDlg::OnRadio1() //按钮“Sin”{

// TODO: Add your control notification handler code here

m_edit1=sin(result);

UpdateData(FALSE);

}

void CCalculatorDlg::OnRadio2() //按钮“Cos”{

// TODO: Add your control notification handler code

here

m_edit1=cos(result);

UpdateData(FALSE);

}

void CCalculatorDlg::OnRadio3() //按钮“Tan”

{

// TODO: Add your control notification handler code

here

m_edit1=tan(result);

UpdateData(FALSE);

}

void CCalculatorDlg::OnRadio4() //按钮“Log10”

{

// TODO: Add your control notification handler code

here

m_edit1=log10(result);

UpdateData(FALSE);

}

(4)程序调试:

简单计算器:

测试与思考:

5.小结:

A.在做上面那个简单计算器的时候,遇到的问题很少,而且

差不多都是些很小的问题,很容易就解决了

B.刚开始,在老师没讲课之前,不知道如何设置响应事件,

经老师讲解后,很快就解决了

C.在运行的调试的时候,发现计算器的减法与除法的功能出

错,原来是减数与被减数、除数与被除数的位置互换了;

还有,连续点击“=”时显示结果会不停变动,解决方法是:加“sort=0;”语句;另外,在点击“=”后,再点击数字键时,会发现点击的相应数字会显示在原显示结果的后面,解决方法是:加“append=1;”语句

D.后来,在做后面的测试与思考时,遇到的问题就很多了。

其中最棘手的就是Backspace键和连续四则运算的实现,其次就是M系列按键(MS:保存;MC:清除;MR:读数;M+:数加)的理解和响应代码的编写,再者就是正负号和小数点的处理,其工程量非常大。

E.但是还有很多细节问题解决不了,例如小数后面的零因为

是double型的而不是字符型,所以显示不出来,还有连续的四则运算实现不了,不过连续的单一运算还是可以运行的。

F.通过此次试验,我初次认识了MFC,了解到其功能的强

大,及其实用性之强,只不过我还只是接触到其冰山一角而已,要想真正地掌握MFC还有很长的路要走,还要投入更多精力。

编程实验报告---科学计算器设计与实现

《可视化程序编程环境》 实验报告 项目名称科学计算器设计与实现 学院计算机学院 专业班级计算机科学与技术0804 2010年1月9 日

一、设计任务与要求 使学生了解可视化程序设计语言的基础知识,掌握面向对象编程的分析设计方法,以及与面向对象技术相关的一些软件开发技术,掌握在 VisualC++6环境下进行可视化程序设计技术。通过实践具体的项目,为他们进一步开展相关领域的学习和科研打下良好的基础。 二、需求分析 1. 功能需求(功能划分、功能描述) 1、二进制、八进制、十进制及十六进制数的加、减、乘、除、乘方、取模等简单计算 2、科学计算函数,包括(反)正弦、(反)余弦、(反)正切、(反)余切、开方、指数等函数运行 3、以角度、弧度两种方式实现上述部分函数 4、具备历史计算的记忆功能 5、对不正确的表达式能指出其错误原因 2. 运行需求(用户界面、人机接口、故障处理) 根据计算器要实现的相应功能来布局,分为基本功能区,特殊函数区,进制转换区,度数转换区和输出显示区五大基本模块。 三、实验方案 1、总体设计框图 2

3.基本功能区的设计 在这个模块中主要把0到F各个按键按下去后在输出显示区上显示出来列举一例: void Caysf55Dlg::OnBnClickedButton3() {if(zuizong=="0") m_str=""; m_str+="1"; UpdateData(0); if(zuizong=="0") zuizong=""; zuizong+="1";// TODO: 在此添加控件通知处理程序代码 } 接下来从输出显示区获得字符串,通过运算符的相应按键处理:列举加法: void Caysf55Dlg::OnBnClickedButton19()/*加法运算*/ {double zan; if(m_str=="") MessageBox(L"没有运算数"); else if(y==1||M==1) MessageBox(L"只能输入数值"); else if(m_str.GetAt (m_str.GetLength()-1)=='+'||m_str.GetAt (m_str.GetLength()-1)=='-'||m_str.GetAt (m_str.GetLength()-1)=='*'||m_str.GetAt (m_str.GetLength()-1)=='/')

c语言程序设计课程计算器设计报告

课程设计说明书 题目计算器程序设计 起讫日期 2006 年 7月 3日至 2006 年 8月 6日 所在院系软件学院 专业机械+软件班级 04-2 学生姓名偶偶哦学号 指导教师 2006年 8 月日

摘要 当今社会是信息社会,科技经济高速发展的社会!为了更方便人们的工作生活和加速人们处理信息的速度,计算器应运而生。由于它体积小巧,携带方便,价格便宜,构造简单等诸多的优点成为人们生活中的必备品! 随着科技的发展计算器的种类变得更多,功能变得更强大,体积变得更小!电脑的出现改变人们的生活习惯,很多事情都可以电脑来完成!电脑的更大一个优点就是可以通过软件的应用无限的延伸电脑功能的外延!下面我们将用我们学习的c语言编写一个简易的计算器程序!实现简单的初步的计算功能! 本程序的编写基础是Tubro 汉化版,它在tubro c的原有基础上实现了多汉字的支持方便了我们的使用。生成的程序可移植性强兼容性好稳定!现在只实现了加、减、乘、除、求幂、求模,求平方根,求Sin,求Cos,求Log10,以及一个时钟原代码。这个系统是基于软件发展的生命周期来研制的,它可以直接输入数学表达式,不需要任何转换,就可以直接输出数学四则运算的结果。但是,每次只能运算一个表达式。不能运算多个表达式。在程序里面在添加一组选择函数即可。本论文主要介绍了本课题的开发背景,开发的过程和所要完成的功能。重点的说明了系统设计思想,设计的步骤、难点技术和解决方案。 关键词:C语言 Tubro c 汉化版计算器时钟

目录 第一章综述 (1) 1.1 课题的现实意义 (1) 1.2 软件环境 (1) 1.3 硬件环境 (1) 第二章系统设计流程图 (2) 2.1 系统流程图 (2) 2.2 主要功能表 (2) 第三章系统分析和设计 (3) 3.1 图形的绘制和输出 (3) 3.2 文本的输出显示 (3) 3.3 计算函数的调用 (4) 3.4 程序的运行和退出 (5) 第四章系统测试 (6) 4.1 系统测试 (6) 4.2 调试 (6) 4.3 错误原因分析一 (6) 4.4 错误原因分析二 (6) 第五章用户使用说明书 (8)

(整理)基于vcmfc的科学计算器程序实验报告

实验报告 课程名称:windows软件开发实习实验项目:科学计算器

沈阳工业大学实验报告 (适用计算机程序设计类) 专业班级:软件1006 学号:101201622 姓名:张鑫可 实验名称: 1.实验目的: 本程序设计实践是采用C++语言,在VC平台下设计。本课程设 计为学生提供了一个既动手又动脑,独立实践的机会,将课本上的理论知识和实际有机的结合起来,锻炼学生的分析解决实际问题的能力。提高学生适应实际,实践编程的能力。程序设计实践主要是培养学生利用系统综合C++语言进行程序设计的能力。 1.进一步巩固和复习C++程序设计的基础知识。 2.培养学生结构化程序、模块化程序设计的方法和能力。 3.了解软件的编制过程及各环节的具体内容。 4.提高学生程序调试技巧、软件设计能力和代码规范化等素质。 5.提高学生分析问题、解决问题以及实际运用能力。 2.实验内容: 设计一个简单的计算器。要求能实现整数、小数算数运算。程序带 清零按钮。 3. 实验方案(程序设计说明) 见附件 4. 实验步骤或程序(经调试后正确的源程序) (填写主要步骤与程序代码等。见附件A) 5.出现的问题及解决方法

附件A 沈阳工业大学实验报告 (适用计算机程序设计类) 专业班级:软件1006 学号:101201622 姓名:张鑫可 实验步骤或程序: 一、关于Visual C++: Visual C++6.0由Microsoft开发, 它不仅是一个C++ 编译器,而且是一个基于Windows 操作系统的可视化集成开发环境(integrated development environment,IDE)。Visual C++6.0由许多组件组成,包括编辑器、调试器以及程序向导AppWizard、类向导Class Wizard等开发工具。这些组件通过过一个名为Developer Studio的组件集成为和谐的开发环境。Microsoft 的主力软件产品。Visual C++是一个功能强大的可视化软件开发工具。自1993年Microsoft 公司推出Visual C++1.0后,随着其新版本的不断问世,Visual C++已成为专业程序员进行软件开发的 首选工具。虽然微软公司推出了Visual C++.NET(Visual C++7.0),但它的应用的很大的局限性,只适用于Windows 2000,Windows XP和Windows NT4.0。所以实际中,更多的是以Visual C++6.0为6平台。 Visual C++6.0以拥有“语法高亮”,自动编译功能以及高级除错功能而著称。比如,它允许用户进行远程调试,单步执行等。还有允许用户在调试期间重新编译被修改的代码,而不必重新启动正在调试的程序。其编译及创建预编译头文件(stdafx.h)、最小重建功能及累加连结(link)著称。这些特征明显缩短程序编辑、编译及连结的时间花费,在大型软件计划上尤其显著。 二、设计要点 1、基本要求:设计的系统界面要美观大方,操作合理,有必要的 提示。 2、创新要求:在基本要求达到后,进行创新设计。

c计算器实验报告

简单计算器 姓名: 周吉祥 实验目的:模仿日常生活中所用的计算器,自行设计一个简单的计算器程序,实现简单的计算功能。 实验内容: (1)体系设计: 程序是一个简单的计算器,能正确输入数据,能实现加、减、乘、除等算术运算,运算结果能正确显示,可以清楚数据等。 (2)设计思路: 1)先在Visual C++ 6.0中建立一个MFC工程文件,名为calculator. 2)在对话框中添加适当的编辑框、按钮、静态文件、复选框和单选框 3)设计按钮,并修改其相应的ID与Caption. 4)选择和设置各控件的单击鼠标事件。 5)为编辑框添加double类型的关联变量m_edit1. 6)在calculatorDlg.h中添加math.h头文件,然后添加public成员。 7)打开calculatorDlg.cpp文件,在构造函数中,进行成员初始化和完善各控件 的响应函数代码。

(3)程序清单: 添加的public成员: double tempvalue; //存储中间变量 double result; //存储显示结果的值 int sort; //判断后面是何种运算:1.加法 2.减法 3.乘法 4.除法 int append; //判断后面是否添加数字 成员初始化: CCalculatorDlg::CCalculatorDlg(CWnd* pParent /*=NULL*/) : CDialog(CCalculatorDlg::IDD, pParent) { //{{AFX_DATA_INIT(CCalculatorDlg) m_edit1 = 0.0; //}}AFX_DATA_INIT // Note that LoadIcon does not require a subsequent DestroyIcon in Win32 m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); tempvalue=0;

计算机科学与技术第次实验报告.docx

哈尔滨工程大学 《程序设计基础》实验报告 基础实践一 姓名:班级: 学号: 实验时间 :2018年5月10日成绩 哈尔滨工程大学计算机基础课程教学中心 实验题目 1:输入两个整数数组,每个数组有五个整数,将两者和并 并排列输出。 设计思想: 定义三个数组 , 将两组数据存储到第三个数组中 , 再用冒泡排序对其由大到小排序并输出。 实验代码及注释: #include #include #define N 10//宏定义

int main() { int a[5],b[5],c[N];//第一组数据,第二组,合并数组int i,j,t;//循环变量,中间变量 printf("输入第一组数据 :\n");//输入数据 for(i=0;i<5;i++) scanf("%d",&a[i]); printf("输入第二组数据 :\n"); for(i=0;i<5;i++) scanf("%d",&b[i]); for(i=0;i<5;i++) { c[i]=a[i];//两组数据合并 c[i+5]=b[i]; } for(i=0;i

for(j=0;j

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算法描述 (8) 第4章调试分析 (10) 4.1程序设计中所遇到的错误及犯错的原因 (10) 4.2错误的解决方法 (10) 第5章用户手册 (11) 总结 (15) 参考文献 (16) 附录(程序清单) (17)

第1章需求分析 1.1 设计要求 (1)用 C 语言数据结构实现程序设计; (2)利用结构体、栈、进行相关信息处理; (2)系统的各个功能模块要求用函数的形式实现; (4)界面简单,可操作性高。 1.2任务 (1)定义一个结构体类型数组,输入0~9 及+、--、*等符号的信息,将其信息存储起来; (2)输入简单的加减乘除算术计算式,并在屏幕上显示逆波兰(后缀式)表达式和计算结果; (3)编写代码; (4)程序分析与调试。 说明: 本课程设计将实现一个简单计算器。在功能上尽量模仿windows 的计算器。系统界面不做牵制要求。该程序能实现标准型中+、-、*、/、(、)、.、的混合运算表达式(一般意义上的中缀表达式),将其转换成逆序波兰表达式(后缀表达式)并计算输出结果。在进行运算后可以选择继续运算或者结束当前运算。即时准确地获得需要的计算的结果,充分降低了数字计算的难度和节约了时间,对人们的生活有一定的帮助。

第2章 总体设计 2.1设计简介及设计方案论述 逆波兰表达式又叫做后缀表达式。在通常的表达式中,二元运算符总是置于与之相 关的两个运算对象之间,所以,这种表示法也称为中缀表达式。波兰逻辑学家 J.Lukasiewicz 于 1929 年提出了另一种表示表达式的方法。按此方法,每一运算符都置 于其运算对象之后,故称为后缀表达式。 后缀表达式的优点是显而易见的, 编译器在处理时候按照从左至右的顺序读取逆波 兰表达式,遇到运算对象直接压入堆栈,遇到运算符就从堆栈提取后进的两个对象进行计算,这个过程正好符合了计算机计算的原理。后缀表达式比前缀表达式更加易于转换,并且它的最左面一定为数字,这一点在实 际编程的时候就会体会到它的好处了。 逆波兰表达式有一个更大的优点,就是拆括号,根据运算符的级别将中缀表达式转 换成逆波兰表达式后,运算顺序就已经替代了运算符的级别,这样也避免了括号提高运 算级别的特殊处理。 2.2功能模块层次图 将算术表达式转化为逆波兰表达式 计算逆波兰表达式的值 简单计算器 表 达 式 格 式 转 换 系统 求 值 计 算 系 统

C语言简易计算器的实现

目录 一.课程设计目的 (1) 二.设计环境 (1) 三.设计内容 (1) 四.设计说明 (2) 五.设计程序流程图 (2) 六.调试 (4) (1)错误原因分析一 (4) (2)语法错误 (5) (3)逻辑错误 (5) 七. 调试结果图 (6) 八. 结论与心得体会 (7) 九.附录 (8) 具体代码实现 (8) 十.参考文献 (18)

一.课程设计目的 1.通过一个学期的学习,我认为要学号C语言程序这门课程,不仅要认真阅读课本知识,更重要的是要通过上机实践来巩固我 们的知识,特别是学计算机专业的,我们更应该注重这一环节, 只有这样我们才能成为一个合格的计算机人才。通过这一个课程 设计,进一步来巩固所学的语句,如:循环,和分支结构的运用。还要熟悉四则运算和函数的算法。 2.通过这次课程设计扩展自己的知识面,课本上的东西是远 远不够的,可以通过上网或去图书馆查资料等方式得到一些新的 知识, 3.通过课程设计,加深对课程化设计思想的理解,能进行一 个系统功能分析,并设计一个合理的模块化结构,提高程序开发 能力。 二.设计环境 1.硬件:一台完整的电脑,包括键盘、鼠标,最小硬盘空间1GHz 2.软件:安装有Microsoft visual c++6.0 三.设计内容 以简易计算器为例,通过对简单应用软件计算器的设计,编制、调试,实现

简单的加,减,乘,除等运算,以学习应用MFC库类编写对话框的原理,加深对C++类的学习及应用。 (1)定义一个结构体类型数组,输入0~9及+、--、*等符号的信息,将其信息存入文件中; (2)输入简单的加减乘除算术计算式,并在屏幕上显示计算结果; (3)画出部分模块的流程图; (4)编写代码; (5)程序分析与调试。 四.设计说明 1)包含的功能有:加、减、乘、除运算,开方、平方等功能。 (2)计算器上数字0—9为一个控件数组,加、减、乘、除为一个控件数组,其余为单一的控件。 (3)输入的原始数据、运算中间数据和结果都显示在窗口顶部的同一个标签中。 (4)计算功能基本上是用系统内部函数。 (5)程序可以能自动判断输入数据的正确性,保证不出现多于一个小数点、以0开头等不正常现象。 (6)“CE”按钮可以清除所有已输入的数据从头计算 五.设计程序流程图

c面向对象程序设计MFC简单计算器实验报告

计算机与信息工程学院 《程序设计基础》课程设计报告 题目名称:60.编写一个能实现简单功能的计算器学生姓名:刘沛东 学生学号:2011508154 专业班级:电子信息工程(1)班 指导教师:高攀

1 课程设计的题目 编写一个能实现简单功能的计算器 2 题目要求 1. 有一个计算器图形。 2. 能实现加、减、乘、除及乘方的运算。 3. 当输入题目时,屏幕上要在指定位置上显示出相应的题目内容,且相应的数字键要改变颜色 例如:输入数字1 时,在计算器图形上的1键变为红色。 4. 屏幕、图形颜色、形状自定 3 总体设计 3.1 总体框架 图1 系统框架

3.2 系统功能说明 在VC++6.0中绘制计算器界面,各控件的设置 对0~9控件设定相应的ID和其他属性: 图2 “1”控件设置 对“+、-、*、\”控件设定相应的ID和其他属性: 图2 “+”控件设置 对其它控件设定相应的ID和其他属性: 图3 其它控件设置

主要使用到Layout菜单中的Align功能对各个按钮进行对其,使界面更加整洁。拖出的控件有上面的一个Edit控件用于显示数字,Button控件用于处理鼠标的消息。 4 程序详细设计 4.1系统主调模块 图5 程序流程图

4.2各模块详细设计 4.2.1 建立的变量,控件的命名,对应的消息处理函数对应表 double poz; //保存小数点的位置,初始化为1,表示poz-1个小数点。 double m_Dis; //Edit控件上需要显示的数字 BOOL point_flag; //小数点表示位,判定是否是小数,是小数为1,不是小数为0。 double numfirst; //保存计算过程中的前一个数字, double numsecond;//保存计算过程中的第二个数字 char op;//记录当前的计算符号,可以为’+’,’-’,’*’,’/’,’=’,’c’,’n’ 变量初始化: poz=1; m_Dis = 0.0; numfirst=0; numsecond=0; op=0;

数电实验二:简易计算器(实验报告)

数电实验2实验报告 1、设计修改方案 (1)加入编码器连接4选一数据选择器,控制进行运算的种类 (2)修改了输出端数据选择器的程序,使得当计算器没有任何输入时,结果显示保持为0,并且利用芯片自身的灭零管脚,让显示结果中,当十位为零时,十 位的零不显示。

2、实验数据及分析 (1)修改后电路图(附后) (2)仿真波形 设置输入2个4位二进制数为0110(十进制6)和0010(十进制2),计算方式控制SW[3:0]设为0111,即模拟除法操作,加入时钟信号。 ①模拟除法波形: 可以看到十位(商)的数码管显示中,1、2、3、4、7段亮,显示为数字3,而个位(余数)显示1、2、3、4、5、6段亮,显示数字0,相当于计算出6除2商3余0。满足计算要求。 ②模拟乘法波形:(SW[3:0]设为1011,其他输入同上)

可以看到个位的数码管显示中,1、4、5、6段亮,显示为C(化为十进制为12),而十位一直显示1、2、3、4、5、6段亮,显示数字0,相当于计算出6乘2等于0C,即等于12。当改变输入4和2是,显示结果为8,。满足计算要求。 ③模拟加法波形:(SW[3:0]设为1101,其他输入同上) 可以看到个位的数码管显示中,1、2、3、4、5、6、7段全亮,显示为数字8,而十位一直显示1、2、3、4、5、6段亮,显示数字0,相当于计算出6加2等于08,即等于8。满足计算要求。 ④模拟减法波形:(SW[3:0]设为1110,其他输入同上) 可以看到个位的数码管显示中,2、3、6、7段亮,显示为数字3,而十位一直显示1、2、3、4、5、6段亮,显示数字0,相当于计算出6减2等于03,即等于3。满足计算要求。 从上面加减乘除四种功能运算的波形仿真可以看出,本实验设计能够正确完成对输入数字的上述四种运算。满足题目要求。

vb科学计算器实验报告

西安科技大学 可视化编程语言实验报告 题目:科学计算器 班级: 学号: 姓名: 2010年11月

复杂型科学计算器的设计与实现实验目的 1.通过本实验,进一步理解Visual Basic的编程方法。 2.提高运用Visual Basic编程的能力。 3.培养对所学知识的综合运用能力。 实验类型 综合型。 实验内容与步骤 一.界面设计。

Command5Caption= 三.程序代码: Dim num1 As Single, num2 As Single Dim fu As Integer Dim sign As Integer Private Sub Command1_Click(Index As Integer) Select Case Index Case 0 To 9 sign = Index + 20 Case 10 sign = Index + 20 fu = 1 Case 11 To 14 sign = Index + 20 End Select = "" End Sub Private Sub Command2_Click(Index As Integer) Select Case Index Case 0 To 9 = & Index If fu = 0 Then num1 = Val Else num2 = Val

Case 10 = & "-" Case 11 = & "." Case 12 To 18 = "" sign = Index fu = 1 End Select End Sub Private Sub Command3_Click() If =”” then else = Left$, Len - 1) End if End Sub Private Sub Command4_Click() = "" End Sub Private Sub Command5_Click() Dim n As Integer, cf As Single fu = 0: cf = 1 Select Case sign Case 12 = num1 & "+" & num2 = num1 + num2 Case 13 = num1 - num2 Case 14 = num1 * num2 Case 15 = num1 / num2 Case 18 For n = 1 To num2 cf = cf * num1 Next n = cf Case 20 = Sin(num1) Case 21

C语言实现计算器功能

实验一多功能计算器 一、问题描述 设计一个多功能计算器,可以完成基本的计算。 设计要求: 1、具备整型数据、浮点型数据的算术(加、减、乘、除)运算功能。依次输入第一个运算数、运算符(+,-,*,/)、第二个运算数,然后输出结果。结果可以作为下一个运算的第一运算数。按‘C’清屏,按‘R’返回菜单。 例如:输入:2 + 5 输出:7 2、实现单运算符表达式计算的功能。输入的操作数可以包含整数或浮点数。输入表达式如下: 例如:输入:2+5 输出:7 二、算法说明 1.数据结构说明(可以图示说明,也可以文字说明) 本程序主要根据选择菜单编写了六个自定义函数,用于在main()函数中调用,在main()中,用一个字符变量num1来记录下菜单选项的标号,根据num1的值来决定调用哪个函数。 程序要完成的功能及所要用到的函数如下:

下面就是整个程序的流程图:

2.算法说明(即函数说明) void suanshuyunsuan() //做算术运算时调用的函数 void suanshuyunsuan2() //选择继续做算术运算调用的函数,将上次运算的结果做为下次算术运算的第一个操作数//判断算术运算就是否继续 void panduan() //判断算术运算就是否继续 void biaodashiyunsuan() //单运算符表达式实现函数 void qingping() //清除屏幕 void fanhuicaidan() //显示菜单 三、测试结果(这部分需文字与图示结合) 1.第一组测试用例 (1)测试输入: 测试目的:测试算术运算的功能 结果输出:

(2)再一次输入:1测试目的:测试算术运算就是否能继续 结果输出: (3)这时输入:0 测试目的:退出算术运算 结果输出:

c计算器实验报告

c计算器实验报告集团标准化工作小组 #Q8QGGQT-GX8G08Q8-GNQGJ8-MHHGN#

简单计算器 姓名: 周吉祥 实验目的:模仿日常生活中所用的计算器,自行设计一个简单的计算器程序,实现简单的计算功能。 实验内容: (1)体系设计: 程序是一个简单的计算器,能正确输入数据,能实现加、减、 乘、除等算术运算,运算结果能正确显示,可以清楚数据等。 (2)设计思路: 1)先在Visual C++ 中建立一个MFC工程文件,名为calculator. 2)在对话框中添加适当的编辑框、按钮、静态文件、复选框和 单选框 3)设计按钮,并修改其相应的ID与Caption. 4)选择和设置各控件的单击鼠标事件。 5)为编辑框添加double类型的关联变量m_edit1. 6)在中添加头文件,然后添加public成员。 7)打开文件,在构造函数中,进行成员初始化和完善各控件的 响应函数代码。 (3)程序清单: 添加的public成员: double tempvalue; 法 2.减法 3.乘法 4.除法

int append; //判断后面是否添加数字 ●成员初始化: CCalculatorDlg::CCalculatorDlg(CWnd* pParent /*=NULL*/) : CDialog(CCalculatorDlg::IDD, pParent) { //{{AFX_DATA_INIT(CCalculatorDlg) m_edit1 = ; //}}AFX_DATA_INIT // Note that LoadIcon does not require a subsequent DestroyIcon in Win32 m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); tempvalue=0; result=0; sort=0; append=0; } ●各控件响应函数代码: void CCalculatorDlg::OnButton1() //按钮“1” { // TODO: Add your control notification handler code here if(append==1)result=0;

单片机实验报告 计算器

单片机原理及其应用实验报告基于51单片机的简易计算器的设计 班级:12电子1班 姓名:金腾达 学号:1200401123 2015年1月6日

摘要 一个学期的51单片机的课程已经随着期末的到来落下了帷幕。“学以致用”不仅仅是一句口号更应该是践行。本设计秉承精简实用的原则,采用AT89C51单片机为控制核心,4X4矩阵键盘作为输入,LCD1602液晶作为输出组成实现了基于51单片机的简易计算器。计算器操作方式尽量模拟现实计算器的操作方式,带有基本的运算功能和连续运算能力。并提供了良好的显示方式,与传统的计算器相比,它能够实时显示当前运算过程和上一次的结果,更加方便用户记忆使用。本系统制作简单,经测试能达到题目要求。 关键词:简易计算器、单片机、AT89C51、LCD1602、矩阵键盘

目录 一、系统模块设计......................................................................................... 错误!未定义书签。 1.1 单片机最小系统 (1) 1.2 LCD1602液晶显示模块 (1) 1.3 矩阵按键模块 (2) 1.4 串口连接模块 (1) 二、C51程序设计 (2) 2.1 程序功能描述及设计思路 (2) 2.1.1按键服务函数 (2) 2.1.2 LCD驱动函数 (2) 2.1.3 结果显示函数 (2) 2.1.4状态机控制函数 (2) 2.1.5串口服务函数 (2) 2.2 程序流程图 (3) 2.2.1系统总框图 (3) 2.2.2计算器状态机流程转换图 (3) 三、测试方案与测试结果 (4) 3.1测试方案 (4) 3.3 测试结果及分析 (7) 4.3.1测试结果(仿真截图) (7) 4.3.2测试分析与结论 (7) 四、总结心得 (7) 五、思考题 (8) 附录1:整体电路原理图 (9) 附录2:部分程序源代码 (10)

安卓计算器开发实验报告

嵌入式WebOS应用开发 实验报告 实验名称:使用An droid Developer SDK开发应用程序 专业:_________________________ 姓名:__________________________________ 班级:_______________________________ 学号:______________________________ 一、作品的运行环境及安卓SDK基础操作 SDK An droid Developer 是一款在windows系统上运行的针对 An droid应用开发的谷歌官方软件(需要JAVA环境支持)。 1、导入工程 2、建立虚拟机 在运行虚拟机是为保证机器的顺畅运行建议选择分辨率较低的虚拟机,但是其RAM最好设为512MB因为部分程序如果调用资源过大会导致虚拟机无法运行。 3、虚拟机界面 二、作品介绍 我的应用是一个计算器。能实现包括小数的加减乘除运算,结果过大会自动用科学记数法表示,另外还有退格跟清屏功能键。

加应用图标 1.首先在我的桌面上添加你应 用的图标以及文字,双击图标后 项中自行进行挑选; 也可以添加自己的图片, 只要将图片放到对应的 文件夹之下在刷新就可 以,但不建议放分辨率 过高图片可能会出现超 出界面的等错误。 要在xml 界面中添加排版: xml 代码首末的 格式较为自由可以直接在 界面中拖动图标位置以及修改大小,而其他layout 则更会自动排列, 各有优劣。 三、 编程以及运行调试 (一)、在MyDesktop 主界面中添 fin^_ok,prig 世IF it launchiWipng 32E img'O.png jdE im^il.png] 3E img?.pHg 血 imql.pngi 32E img4.png 血 im^S.pngi Tn? imgg.png JJL -mgT.pngj ..1. imy^.png ..1. uiHiprxg 就可以看见对应的代码, 可直接 在代码中进行修改图片文字的 大小颜色等等。 以下是对应图像图标的代码 图片可以在左侧的选 (二)、在 res/layout 目录下新建.xml 文件,由于计算器的按钮很多, TIF charfrc 起 ch^tfrorn_bg_ipTW5&d !S'.pflg ~l <+i?,kbnif^M 口 .股 ch?kbojco#f bsckgrourid^na SE chfkb rn (」]n.hewlcgin 口unci 岱n 评 弧 tlwr^na TTF de^ r o 1 .pnq

大学计算机c语言计算器源代码

C++语言编写。。 #include #include #include using namespace std; const double pi = 3.14159265; const double e = 2.718281828459; const int SIZE = 1000; typedef struct node//为了处理符号而建立的链表(如: 1+(-2)) { char data; node *next; }node; typedef struct stack_num//存储数的栈 { double *top; double *base; }stack_num; typedef struct stack_char//存储运算符号的栈 { char *top;

char *base; }stack_char; stack_num S_num;//定义 stack_char S_char;//定义 char fu[18] = {'\n', ')', '+', '-', '*', '/', '%', '^', 'Q', 'L', 'C', 'S', 'T', 'c', 's', 't', '('}; int compare[1000];//表现出各运算符号的优先级 double shu[1000];//存储"数"的数组 double dai_result;//运算的结果,是为了处理M运算(简介函数里有M的定义) int biao = 0;//和dia_result一样,为了处理M运算 char line[SIZE];//输入的所要计算的表达式 void init()//初始化 { compare[fu[0]] = -2;//用数字的大小表现出符号的优先级 compare[fu[1]] = -1; compare[fu[2]] = 2; compare[fu[3]] = 2; compare[fu[4]] = 4; compare[fu[5]] = 4; compare[fu[6]] = 4;

MFC计算器程序报告

C++课程设计实验报告 学号姓名 院系专业

一、课题名称 简易的计算器设计。 二、问题陈述 编写一个计算器程序,能够进行四则运算、取模等运算 要求: 1、个人完成; 2、运用对话框编写,界面上只能有一个输出框,数据通过按钮输入到程序,并显 示在输出框中;当按下运算符后再输入数据,输出框中应显示新数据;运算结果也显示在输出框中。 3、四则运算、取模运算是最低要求,程序能正确执行; 4、界面设计美观、合理; 5、独立完成; 三、设计目标和设计任务 编写一个计算器程序,能够进行四则运算、取模、乘方、立方,并且给计算器程序添加背景。 四、解题算法思想 1.创建一个基于对话框的项目 2. 给对话框加入相应的操作按钮 3. 给按钮加上代码,设置属性 4. 为实现四则运算、取模等操作添加必要函数 五、程序算法过程 ①选择File→New菜单命令,选择Project选项卡,并选择MFC AppWizard(exe), name 命名为calculator;选择应用程序基于对话框,即Dialog based。多次单击next,最后单击Finish后,系统弹出一对话框,如下图:

②使用按钮控件、文本编辑框控件和组控件,将他们加入到对话框中,并通过更改按钮控件的属性中的标题部分。选中所有按钮,在属性中的Extended Style中选中Modal frame,使其达到下图效果:(注意,在布局按钮时,为了使按钮总体整齐美观,可以先创建一行或一列按钮,使他们保持整齐后,按住Ctrl键,选中这一行或一列按钮,再移动鼠标,即可生成另一行或一列按钮;也可以通过Layout菜单中的指令对其进行布局) ③鼠标右击按钮控件,选择属性,即可对其ID进行更改,各ID与标题内容对应如下: ID 标题ID 标题IDC_BUTTON0 0 IDC_BUTTONCLS 清零 IDC_BUTTON1 1 IDC_ADD + IDC_BUTTON2 2 IDC_PLUS -

简易计算器设计实验报告

简易计算器设计实验报告 一.设计任务及要求 1.1实验任务: 根据计算器的原理设计一个具有加减乘除功能的简易计算器。如:5+3*4/8=4。 1.2 实验基本要求: (1)实现最大输入两位十进制数字的四则运算(加减乘除)。 (2)能够实现多次连算(无优先级,从左到右计算结果)。 如:12+34*56-78/90+9=36 (3)最大长度以数码管最大个数为限,溢出报警。 二.实验设计方案 (1)用QuartusII的原理图输入来完成系统的顶层设计。 (2)用VHDL编写以及直接拖模块来各功能模块。 (3)通过2个脉冲分别实现个位数和十位数的输入。 (4)通过选择每次的输出数值,将输出值反馈到运算输入端 (4)通过除法运算实现十六进制到十进制的转换输出。 其具体实现流程图如下:

三系统硬件设计 FPGA: EP2C5T144C8目标板及相应外围硬件电路。(从略) 四系统软件设计 1.数据输入模块 原理:用VHDL创建模块,通过两个脉冲分别对两个数码管进行输入控制,再通过相应运算模块将两个独立数据转化成两位十进制数字。 2.运算模块 原理:用VHDL创建模块,四种运算同步运行,通过按键加、减、乘、除选择输出对应的计算结果,当按键等号来时,将所得结果反馈给运算模块输入端。具体实现代码见附录二。 3.输出模块 原理:用VHDL创建模块,通过按键等号来控制显示运算对象还是运算结果,当等号按下时,输出计算结果,否则显示当前输入的数据,并且通过除法模块将十六进制转化为十进制。当输出结果溢出是LED0亮,同时数码管显示都为零。部分实现见附录二。 五实验调试 输入数据12,再按加法键,输入第二个数字25,按等号键,数码管显示37;按灭加法、等号键,输入第二个数据2,依次按等号键,减法键,数码管显示35;同上,按灭减法键、等号键,输入第三个数据7,依次按等号键,除法键,数码管显示5;按灭除法键、等号键,输入第四个数据99,依次按等号键,乘法键,数码管显示495,按灭乘法键、等号键,当前显示为99,依次按等号键、乘法键,数码管显示49005,同上进行若干次之后,结果溢出,LED0亮,同时数码管显示都为零。当输出为负数时,LED0灯变亮,同时数码管显示都为零。六实验结论 本实验基本实现了计算器的加减乘法运算功能,但是存在一个突出的缺陷,就是当输出结果时,必须先按等号键导通数据反馈,再按运算键选择输出结果。这与实际应用的计算器存在很大的差距。但是,本设计可以通过等号键实现运算对象和运算结果之间的切换。

计算机科学与技术实验报告

哈尔滨工程大学《程序设计基础》实验报告 基础实践二 姓名:王明班级: 学号: 实验时间: 2017 年 5 月 8 日 哈尔滨工程大学计算机基础课程教学中心 实验五 实验题目1: 输入两个整数数组,每个数组有5个整数,将两者合并并排序输出。 设计思想:定义两个5个元素的数组,一个10个元素的数组,数据类型为整型,通过for循环输入前两个数组的值,并依次存入第三个数组中。另外编写排序函数,在主函数中调用对第三个数组中的元素排序并输出。 实验代码及注释: #include<> #include<>

void f1(int *a, int i, int j) { int m, n, c; int k; m = i; n = j; k = a[(i + j) / 2]; do { while (a[m]k&&n>i) n--; if (m <= n) { c = a[m]; a[m] = a[n]; a[n] = c; m+=1; n-=1; }

} while (m <= n); if (mi) f1(a, i, n); } int main() { int a1[5],a2[5],c[10]; printf("请输入两个数组,每组五个整数:\n"); for(int i=0;i<5;i++) scanf("%d %d",&a1[i],&a2[i]); for(int i=0;i<5;i++) { c[i]=a1[i]; c[i+5]=a2[i]; } f1(c,0,9); printf("排序后为:\n");

C语言制作简单计算器

C语言制作简单计算器 一、项目介绍 我们要用c语言做一个简单的计算器,进行加、减、乘、除操作。本程序涉及的所有数学知识都很简单,但输入过程会增加复杂性。我们需要检查输入,确保用户没有要求计算机完成不可能的任务。还必须允许用户一次输入一个计算式,例如:32.4+32 或者9*3.2 项目效果图 编写这个程序的步骤如下: ?获得用户要求计算机执行计算所需的输入。 ?检查输入,确保输入可以理解。 ?执行计算。 ?显示结果。 三、解决方案 1.步骤1

获得用户输入是很简单的,可以使用printf()和scanf()。下面是读取用户输入的程序代码: #includeint main(){ double number1=0.0; //定义第一个操作值 double number2=0.0; //定义第二个操作值 char operation=0; //operation必须是'+''-''*''/'或'%' printf("\nEnter the calculation\n"); scanf("%lf%c%lf",&number1,&operation,&number2); return0; } 2.步骤2 接着,检查输入是否正确。最明显的检查是要执行的操作是否有效。有效的操作有+、-、*、/和%,所以需要检查输入的操作是否是其中的一个。 还需要检查第二个数字,如果操作是/或者%,第二个数字就不能是0。如果右操作数是0,这些操作就是无效的。这些操作都可以用if语句来完成,switch语句则为此提供了一种更好的方式,因此它比一系列if语句更容易理解。 switch(operation) { case'+': printf("=%lf\n",number1+number2); break; case'-': printf("=%lf\n",number1-number2); break; case'*': printf("=%lf\n",number1*number2); break; case'/': if(number2==0) printf("\n\n\aDavision by zero error!\n"); else printf("=%lf\n",number1/number2); break;

相关文档
最新文档