预览加载中,请您耐心等待几秒...
1/7
2/7
3/7
4/7
5/7
6/7
7/7

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

简易计算器C语言代码 LastupdatedontheafternoonofJanuary3,2021 简易四则运算计算器 计算机工具地历史而言,中国古代最早采用地一种计算工具叫筹策,又叫做算 筹,这种算筹多用竹子制成,也有用木头,兽骨充当材料的,大约270枚一束,放在 布袋里可随身携带。直到今天仍在使用的住算盘,是中国古代计算工具领域中的另一 项发明明代时的住算盘已经与现代的住算盘几乎相同。 17世纪初,西方国家的计算工具有了较大的发展。英国数学家纳尔发现了“纳皮 尔算筹”;英国牧师奥却德发明了圆柱形对数计算尺,这种计算尺不仅能做加减乘 涂,乘方和开方运算,甚至可以计算三角函数,指数函数和对数函数。这些计算工具 不仅带动了计算的发展,也为现代计算器发展尊定了良好的基础,成为现代社会应用 广泛的计算工具,如手机,操作系统上附带的多功能计算器。 项目设计目的 掌握模块的划分; 掌握结构体定义; 掌握栈的操作; 掌握函数的定义; 掌握栈的基本操作; 掌握VC的基本绘图库; 掌握鼠标的响应操作; 目设计内容 设计一个含有界面的计算器,输入一个包含括号的表达式,使用栈数据类型实现 整数的四则运算操作,开方运算。 项目设计要求 根据分析,系统要求实现以下几点基本功能: 可通过按钮输入数字、运算符; 能通过按钮实现退格、清除功能; 实现加、减、乘、除、开方运算功能; 实现括号运算; 显示运算结果; 良好的交互界面。 项目详细设计 功能模块图 根据系统功能要求,主要含有四大模块,分别是计算器界面设计模块、计算器按 键控制模块、四则混合运算模块、计算器记忆处理模块。 计算器界面设计模块:调用VC图形系统函数和字符函数画出计算器的界面,包 括24个按钮和一个文本输入框。 计算机按键控制模块:计算器通过键盘按键值的判断,执行相应的操作,如接收 数字输入等。 计算器计算处理模块。计算处理模块主要完成可以包括括号的表达式运算,运算 包括加,减,乘,除、开方。计算处理模块在按键控制模块中被调用执行。处理模块 是通过栈来实现的,分别定义了两个顺序栈,一个用来存放操作符栈,一个用来存放 操作数栈。 计算器记忆处理模块。记忆处理模块使计算其具有记忆功能。记忆当前输入的表 达式,给出一个最后的运算结果。可以清楚部分或全部记忆的值。 图简易计算器模块图 数据结构 该系统主要的数据有操作符集,用一维数组存放;存放操作符的优先级关系集,操作 符的优先级关系用一个二维数组来体现;另外定义两个栈,一个用来存放操作符,一 个用来存放操作数。 charops[7]={'+','-','*','/','(',')','#'}; intcmp[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}}; typedefstruct { charelem[Stack_Size]; inttop; }SeqStack; typedefstruct { intelem[Stack_Size]; inttop; }SeqStackOperand; 系统流程图 图系统流程图 主要算法 比较运算符优先级:程序里的涉及到的运算符有7个,分别是‘+’,‘-’,‘*’,‘/’, ‘(’,‘)’,‘#’,它们之间的优先级关系用一个二维数组来存放, intcmp[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代表不可比。 charCompare(charch1,charch2) { inti,m,n; charpri; intpriority; for(i=0;i<7;i++) ; outtextxy(310,170,"-"); outtextxy(370,170,"sqrt"); outtextxy(440,170,"<-"); outtextxy(50,235,"3"); outtextxy(115,235,"2"); outtextxy(180,235,"1"); outtextxy(245,235,"0"); outtextxy(310,235,"*"); outtextxy(375,235,"/"); outtextxy(440