7-2 简单计算器 (25分)

	模拟简单运算器的工作。假设计算器只能进行加减乘除运算,运算数和结果都是整数,四种运算符的优先级相同,按从左到右的顺序计算。

输入格式:
输入在一行中给出一个四则运算算式,没有空格,且至少有一个操作数。遇等号”=”说明输入结束。

输出格式:
在一行中输出算式的运算结果,或者如果除法分母为0或有非法运算符,则输出错误信息“ERROR”。

输入样例:

1+2*10-10/2=

输出样例:

10

代码:

#include<stdio.h>
int operation(int num1,char sign,int num2);
int i=1;
int main()
{
 int num1,num2,j;
 char sign;
 	scanf("%d",&num1);
 	scanf("%c",&sign); 
 	for(;sign!='=';)
 	{
		scanf("%d",&num2); 
		//printf("%d\n",num1);
		//printf("%c\n",sign);
		//printf("%d\n",num2);
		num1 = operation(num1,sign,num2);
		if(i==0) break;
	  
	  //getchar();
	  scanf("%c",&sign);	
	}
if(i!=0)
	printf("%d",num1);
else printf("ERROR");
return 0;
}


int operation(int num1,char sign,int num2)
{
int num=0;
switch(sign)
	{
		case('+'):num = num1+num2;break;
		case('-'):num = num1-num2;break;	
		case('*'):num = num1*num2;break;
		case('/'):if(num2!=0)num = num1/num2;else i=0; break;
			
	default:  i=0; 
	}
	//printf("%d",num);
return num;
}

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
摘要 近些年以单片机为核心的技术发展很快,现在它被广泛的应用于与我们生活相关的各 个领域中,如电子、通信、科技、工业等,其中电子产品的更新速度更为迅猛。计算器 是日常生活中比较常见的电子产品之一,怎样才能使计算器技术更加的成熟、简单,充 利用已有的硬件和软件条件,设计出更简易的计算器。 本设计是以AT89C51单片机为核心的简易计算器设计,输入采用4*4矩阵键盘,可以进 行加、减、乘、除带符号数字运算(八位整数),并在液晶显示屏LCD1602上静态显示操 作的过程及结果。软件用C语言编程、Keil uVision2和pretues仿真。 关键词:单片机;计算器;液晶显示屏;矩阵键盘 Abstract In recent years, the microcontroller as the core technology is developing very fast, now it is widely used in various fields related with our life, such as electronics, communications, science and technology, industry and so on, and the update speed of electronic product is more rapid. The calculator is the one of common electronic products in our daily life, how to make the computer technology more mature and simple and to make full use of the existing hardware and software conditions to design a simple calculator. The design is based on the AT89C51single-chip microcomputer as the core of a simple calculator design, using 4*4matrix keyboard input, you can add, subtract, multiplication, except the symbol digit operation ( eight integers ), and static display operation process and result in the LCD1602 screen LCD. The Software programming use C language, Keil uVision2 and pretues simulation. Key words: single chip microcomputer; calculator; LCD screen; keyboard matrix 目录 引言 1 第一章 设计原理及要求 2 1.1 设计方案的确定 2 1.2 系统的设计方案 2 1.3 系统的设计要求 2 第二章 硬件模块设计 4 2.1 单片机AT89C51 4 2.1.1 AT89C51芯片的特点 5 2.1.2 管脚说明 5 2.1.3 振荡器特性 7 2.1.4 芯片擦除 7 2.2 键盘控制模块 7 2.2.1 矩阵键盘的工作原理 8 2.2.2 键盘电路主要器件介绍 8 2.3 LCD显示模块 10 2.3.1 显示电路 11 2.3.2 LCD1602主要技术参数 11 2.3.3 引脚功能说明 11 2.4 运算模块(单片机控制) 12 第三章 软件设计 14 3.1 功能介绍 14 3.2系统流程图 14 3.3 程序 16 第四章 系统调试 17 4.1软件介绍 17 4.1.1 Keil uVision2仿真软件简介 17 4.1.2 protues简介 17 4.2 软件调试 18 4.2.1 软件析及常见故障 19 4.2.2 仿真结果演示 20 4.3 硬件调试 21 结束语 23 参考文献 24 附录 25 致谢 36 引言 计算工具最早诞生于中国,中国古代最早采用的一种计算工具叫筹策,也被叫做算筹 。这种算筹多用竹子制成,也有用木头,兽骨充当材料的,约二百七十枚一束,放在布 袋里可随身携带。另外直到今天仍在使用的珠算盘,是中国古代计算工具领域中的另一 项发明,明代时的珠算盘已经与现代的珠算盘几乎相同。 17世纪初,西方国家的计算工具有了较大的发展,英国数学家纳皮尔发明的"纳皮尔 算筹",英国牧师奥却德发明了圆柱型对数计算尺,这种计算尺不仅能做加、
一、实验题目:计算器实验 二、实验目的: 1)熟悉.NET的编程方法,掌握项目的创建与使用及安装; 2)熟悉C#编程语言,字符串使用、自定义类、自定义类库等; 3)熟悉Windows应用程序类编程、事件驱动编程; 三、实验内容: 1)参照Windows提供的计算器工具,设计一个与之类似的程序;另外可参考运行效果下载(计算器Demo程序); 2)基本要求:实现“普通运算”功能,支持连续运算,如连续输入“2+3×5”后点击“等号”按钮进行运算其结果为25. 3)附加要求: A,支持“科学运算”功能,即输入表达式时遵循运算符号的优先原则,连续输入“2+3×5”后点击“等号”按钮进行运算其结果为17; B,支持数字键盘(小键盘)输入功能(焦点不在文本框内时也支持键盘输入); 四、实验方法 经过用户的输入得到数学表达式后,可选择以下方法计算结果: 方法1)不定义"计算类",根据用户输入在程序中直接计算出结果。 方法2)在项目中设计一个计算类(CalculateClass),其中包含“普通计算”和“科学计算”功能,即输入数学运算表达式字符串,返回计算结果。直接在项目中调用该类,输出计算结果。 方法3)在解决方案中增加一个类库(ClassLibrary)项目(在bin\debug下生成dll文件),其中包含计算类(CalculateClass),该类中包含两个方法(普通计算和科学计算),可以根据表达式计算结果。然后在计算器项目中“引用”该类库中的类,输出计算结果; 点评:方法1代码重用性差;方法2代码重用性好,在项目内可方便使用;方法3代码重用性较好,能在不同的项目内重用。 五、实验说明 1)认真析总结每个“按钮”点击之后的动作(对应的代码); 默认的控件是Button按钮,其实可以用其他支持Click事件的控件替代也行,比如图片控件PictureBox; 2)代码的共享:如数字按钮可以共享一个事件代码; // 参考代码 private void button2_Click(object sender, EventArgs e) { Button objbutton = (Button)sender; label1.Text = "你按了第" + (sender as Button).Tag.ToString() + "个按钮"; } 3)考虑操作性或实用性,如支持退格键、异常输入处理等; 4)为突出实验重点,可以不考虑数制转换、复合运算、括号运算等功能; 5)支持数字小键盘输入时,留意理解窗口的KeyPreview属性,即是否窗口接收键盘事件。另外实现时会涉及到“焦点隐藏”问题,以及按钮的键盘事件等。 敲键盘时发生的事件当然是键盘事件,关键是“窗体”还是“控件”接收键盘事件。如果窗体的KeyPreview设为true,则敲键盘时发生的事件被窗体接收;否则就是控件接收键盘事件。 所谓“焦点隐藏” 是指界面上没有焦点,例如系统提供的计算器。方法一:界面上的控件不获取焦点或者没有焦点(如标签);方法二:将焦点藏在界面上不可见的控件上。 支持数字键盘输入的情形:当焦点在按钮1上时,按数字键2,其使用效果应相当于点击了按钮2。 6)键盘事件KeyPress和KeyDown中e参数包括键盘码; private void KeyBoardForm_KeyPress(object sender, KeyPressEventArgs e) { //KeyPress 不能识别组合键 label1.Text = "你按的键是:" + e.KeyChar; } 7)“麻雀虽小,五脏俱全”,程序很容易出Bug,请认真调试; 8)要想达到界面有特点,不亚于在功能上下功夫。
目录 引言 1 第一章 设计原理及要求 2 1.1 设计方案的确定 2 1.2 系统的设计方案 2 1.3 系统的设计要求 2 第二章 硬件模块设计 4 2.1 单片机AT89C51 4 2.1.1 AT89C51芯片的特点 5 2.1.2 管脚说明 5 2.1.3 振荡器特性 7 2.1.4 芯片擦除 7 2.2 键盘控制模块 7 2.2.1 矩阵键盘的工作原理 8 2.2.2 键盘电路主要器件介绍 8 2.3 LCD显示模块 10 2.3.1 显示电路 11 2.3.2 LCD1602主要技术参数 11 2.3.3 引脚功能说明 11 2.4 运算模块(单片机控制) 12 第三章 软件设计 14 3.1 功能介绍 14 3.2系统流程图 14 3.3 程序 16 第四章 系统调试 17 4.1软件介绍 17 4.1.1 Keil uVision2仿真软件简介 17 4.1.2 protues简介 17 4.2 软件调试 18 4.2.1 软件析及常见故障 19 4.2.2 仿真结果演示 20 4.3 硬件调试 21 结束语 23 参考文献 24 附录 25 致谢 36 引言 计算工具最早诞生于中国,中国古代最早采用的一种计算工具叫筹策,也被叫做算筹 。这种算筹多用竹子制成,也有用木头,兽骨充当材料的,约二百七十枚一束,放在布 袋里可随身携带。另外直到今天仍在使用的珠算盘,是中国古代计算工具领域中的另一 项发明,明代时的珠算盘已经与现代的珠算盘几乎相同。 17世纪初,西方国家的计算工具有了较大的发展,英国数学家纳皮尔发明的"纳皮尔 算筹",英国牧师奥却德发明了圆柱型对数计算尺,这种计算尺不仅能做加、减、乘、除 、乘方和开方运算,甚至可以计算三角函数、指数函数和对数函数。这些计算工具不仅 带动了计算器的发展,也为现代计算器发展奠定了良好的基础,成为现代社会应用广泛 的计算工具。1642年,年仅19岁的法国伟大科学家帕斯卡引用算盘的原理,发明了第一 部机械式计算器,在他的计算器中有一些互相联锁的齿轮,一个转过十位的齿轮会使另 一个齿轮转过一位,人们可以像拨电话号码盘那样,把数字拨进去,计算结果就会出现 在另一个窗口中,但是它只能做加减运算。1694年,莱布尼兹在德国将其改进成可以进 行乘除的计算。此后,一直到20世纪50年代末才有电子计算器的出现。 第一章 设计原理及要求 1.1 设计方案的确定 本设计是以单片机AT89C51为核心的简易计算器设计,要通过芯片AT89C51实现计算器 程序运行来完成加、减、乘和除的简单计算功能。 本设计运算模块由AT89C51实现,数据输入模块由4*4矩阵键盘电路实现,输出数据模 块由LCD显示电路实现,再外加一个时钟电路和一个复位电路完成整个简易计算器的设计 。 1.2 系统的设计方案 本设计由以下几部组成:AT89C51单片机系统(运算模块)、键盘电路、显示电路 、时钟电路和复位电路构成,计算器系统框图如图1-1所示。 图1-1 计算器系统框图 1.3 系统的设计要求 为了更好地实现系统的功能,硬件电路的设计应该遵循以下原则: 1、优化硬件电路 采用软件设计与硬件设计相结合的方法。尽管采用软件来实现硬件系统的功能时,也 许响应的时间会比单纯使用硬件时长,而且还要占用微处理器(MCU)的时间;但是,用 软件实现硬件的功能可以简化硬件结构,提高电路的可靠性。所以,在设计本系统的时 候,在满足可靠性和实时性的前提下,尽可能地通过软件来实现硬件功能。 2、可靠性及抗干扰设计 根据可靠性设计理论,系统所用芯片数量越少,系统的平均无故障时间越长。而且, 所用芯片数量越少,地址和数据总线在电路板上受干扰的可能性也就越小。因此,系统 的设计思想是在满足功能的情况下争取较少数量的芯片。 3、灵活的功能扩展 功能扩展是否灵活是衡量一个系统优劣的重要指标之一。一次设计往往不能完全考虑 到系统的各个方面,系统需要不断完善以及进行功能升级。进行功能扩展时,应该在原 有设计的基础上,通过修改软件程序和少量硬件完成。对于本系统而言,就是要求在系 统硬件不变的情况下,能够通过修改软件程序,完成功能的升级和扩展。 根据提出的系统设计方案,结合以上三条原则,确定了系统硬件的设计。计算器主要 由以下一些功能模块组成:非编码键盘模块、运算模块(单片机内部)和LCD液晶显示模 块等。 该系统的硬件设计采用了模块化的设计方法。AT89C51单片机、LCD液晶显示屏显示电 路和键盘电路是整个电路的核心,它们能实现系统的功能要求。 简易计算器主要包括:键盘电路、运算电路和输出显示电路。 第二章 硬件模块设计 在本设计中主要用到的硬件:单片机AT89C51、液晶显示屏LCD1602 、4*4矩阵键盘。 单片机AT89C51的硬件资源
一、实验题目:计算器实验 二、实验目的: 1)熟悉.NET的编程方法,掌握项目的创建与使用及安装; 2)熟悉C#编程语言,字符串使用、自定义类、自定义类库等; 3)熟悉Windows应用程序类编程、事件驱动编程; 三、实验内容: 1)参照Windows提供的计算器工具,设计一个与之类似的程序;另外可参考运行效果下载(计算器Demo程序); 2)基本要求:实现“普通运算”功能,支持连续运算,如连续输入“2+3×5”后点击“等号”按钮进行运算其结果为25. 3)附加要求: A,支持“科学运算”功能,即输入表达式时遵循运算符号的优先原则,连续输入“2+3×5”后点击“等号”按钮进行运算其结果为17; B,支持数字键盘(小键盘)输入功能(焦点不在文本框内时也支持键盘输入); 四、实验方法 经过用户的输入得到数学表达式后,可选择以下方法计算结果: 方法1)不定义计算类方法,在程序中直接计算出结果。 方法2)在项目中设计一个计算类(CalculateClass),其中包含“普通计算”和“科学计算”功能,即输入数学运算表达式字符串,返回计算结果。直接在项目中调用该类,输出计算结果。 方法3)在解决方案中增加一个类库(ClassLibrary)项目(在bin\debug下生成dll文件),其中包含计算类(CalculateClass),该类中包含两个方法(普通计算和科学计算),可以根据表达式计算结果。然后在计算器项目中“引用”该类库中的类,输出计算结果; 点评:方法1代码重用性差;方法2代码重用性好,在项目内可方便使用;方法3代码重用性较好,能在不同的项目内重用。 五、实验说明 1)认真析总结每个“按钮”点击之后的动作(对应的代码); 2)代码的共享:如数字按钮可以共享一个事件代码; 3)考虑操作性或实用性,如支持退格键、异常输入处理等; 4)为突出实验重点,可以不考虑数制转换、复合运算、括号运算等功能; 5)支持小键盘输入时,留意理解窗口的KeyPreview属性,即是否窗口接收键盘事件。另外实现时会涉及到“焦点隐藏”问题,以及按钮的键盘事件等。 6)“麻雀虽小,五脏俱全”,程序很容易出Bug,请认真调试; 7)要想达到界面有特点,不亚于在功能上下功夫。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值