简易计算器C语言代码

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

简易四则运算计算器

计算机工具地历史而言,中国古代最早采用地一种计算工具叫筹策,又叫做算筹,这种算筹多用竹子制成,也有用木头,兽骨充当材料的,大约270枚一束,放在布袋里可随身携带。直到今天仍在使用的住算盘,是中国古代计算工具领域中的另一项发明明代时的住算盘已经与现代的住算盘几乎相同。

17世纪初,西方国家的计算工具有了较大的发展。英国数学家纳尔发现了“纳皮尔算筹”;英国牧师奥却德发明了圆柱形对数计算尺,这种计算尺不仅能做加减乘涂,乘方和开方运算,甚至可以计算三角函数,指数函数和对数函数。这些计算工具不仅带动了计算的发展,也为现代计算器发展尊定了良好的基础,成为现代社会应用广泛的计算工具,如手机,操作系统上附带的多功能计算器。

项目设计目的

掌握模块的划分;

掌握结构体定义;

掌握栈的操作;

掌握函数的定义;

掌握栈的基本操作;

掌握VC的基本绘图库;

掌握鼠标的响应操作;

目设计内容

设计一个含有界面的计算器,输入一个包含括号的表达式,使用栈数据类型实现整数的四则运算操作,开方运算。

项目设计要求

根据分析,系统要求实现以下几点基本功能:

可通过按钮输入数字、运算符;

能通过按钮实现退格、清除功能;

实现加、减、乘、除、开方运算功能;

实现括号运算;

显示运算结果;

良好的交互界面。

项目详细设计

功能模块图

根据系统功能要求,主要含有四大模块,分别是计算器界面设计模块、计算器按键控制模块、四则混合运算模块、计算器记忆处理模块。

计算器界面设计模块:调用VC图形系统函数和字符函数画出计算器的界面,包括24个按钮和一个文本输入框。

计算机按键控制模块:计算器通过键盘按键值的判断,执行相应的操作,如接收数字输入等。

计算器计算处理模块。计算处理模块主要完成可以包括括号的表达式运算,运算包括加,减,乘,除、开方。计算处理模块在按键控制模块中被调用执行。处理模块是通过栈来实现的,分别定义了两个顺序栈,一个用来存放操作符栈,一个用来存放操作数栈。

计算器记忆处理模块。记忆处理模块使计算其具有记忆功能。记忆当前输入的表达式,给出一个最后的运算结果。可以清楚部分或全部记忆的值。

图简易计算器模块图

数据结构

该系统主要的数据有操作符集,用一维数组存放;存放操作符的优先级关系集,操作符的优先级关系用一个二维数组来体现;另外定义两个栈,一个用来存放操作符,一个用来存放操作数。

char ops[7]={'+','-','*','/','(',')','#'};

int cmp[7][7]={

{2,2,1,1,1,2,2},

{2,2,1,1,1,2,2},

{2,2,2,2,1,2,2},

{2,2,2,2,1,2,2},

{1,1,1,1,1,3,0},

{2,2,2,2,0,2,2},

{1,1,1,1,1,0,3}};

typedef struct

{

char elem[Stack_Size];

int top;

}SeqStack;

typedef struct

{

int elem[Stack_Size];

int top;

}SeqStackOperand;

系统流程图

图系统流程图

主要算法

比较运算符优先级:程序里的涉及到的运算符有7个,分别是‘+’,‘-’,‘*’,‘/’,

‘(’,‘)’,‘#’,它们之间的优先级关系用一个二维数组来存放,

int cmp[7][7]={

{2,2,1,1,1,2,2},

{2,2,1,1,1,2,2},

{2,2,2,2,1,2,2},

{2,2,2,2,1,2,2},

{1,1,1,1,1,3,0},

{2,2,2,2,0,2,2},

{1,1,1,1,1,0,3}};

其中3代表‘=’,2代表‘>’,1代表‘<’,0代表不可比。

1.按键响应操作

当用户通过鼠标左键按下‘0’,‘1’,‘2’,‘3’,‘4’,‘5’,‘6’,‘7’,‘8’,‘9’,‘.’,‘+’,‘—’,‘*’,‘/’,‘(’,‘)’,‘=’,这些键时,字符按点击顺序在输出文本框输出;当用户点击‘<—’,表示退一格操作;当用户点击‘=’,在文本块输出表达式结果;当用户按下‘C’时,文本框清空。

2.

小结

知识点:

VC绘图库

鼠标按键响应操作

结构体

定义顺序栈

顺序栈的基本操作:初始化栈、判断栈是否为空、取栈顶元素、入栈、出栈功能扩充

实现取对数、正弦、余弦等一些函数功能。

相关文档
最新文档