简易计算器c语言代码.docx
- 文档编号:1606991
- 上传时间:2022-10-23
- 格式:DOCX
- 页数:16
- 大小:73.61KB
简易计算器c语言代码.docx
《简易计算器c语言代码.docx》由会员分享,可在线阅读,更多相关《简易计算器c语言代码.docx(16页珍藏版)》请在冰豆网上搜索。
简易计算器c语言代码
简易四则运算计算器
计算机工具地历史而言,中国古代最早采用地一种讣算工具叫筹策,乂叫做算筹,这种算筹多用竹子制成,也有用木头,兽骨充当材料的,大约270枚一束,放在布袋里可随身携带。
直到今天仍在使用的住算盘,是中国古代计算工具领域中的另一项发明明代时的住算盘已经与现代的住算盘儿乎相同。
17世纪初,西方国家的计算工具有了较大的发展。
英国数学家纳尔发现了“纳皮尔算筹”;英国牧师奥却德发明了圆柱形对数讣算尺,这种讣算尺不仅能做加减乘涂,乘方和开方运算,甚至可以讣算三角函数,指数函数和对数函数。
这些计算工具不仅带动了计算的发展,也为现代计算器发展尊定了良好的基础,成为现代社会应用广泛的计算工具,如手机,操作系统上附带的多功能计算器。
项目设计目的
掌握模块的划分;
掌握结构体定义;
掌握栈的操作;
掌握函数的定义;
掌握栈的基本操作;
掌握VC的基本绘图库;
掌握鼠标的响应操作;
目设计内容
设计一个含有界面的计算器,输入一个包含括号的表达式,使用栈数据类型实现整数的四则运算操作,开方运算。
项目设计要求
根据分析,系统要求实现以下儿点基本功能:
可通过按钮输入数字、运算符;
能通过按钮实现退格、清除功能;
实现加、减、乘、除、开方运算功能;
实现括号运算;
显示运算结果:
良好的交互界面。
项目详细设计
功能模块图
根据系统功能要求,主要含有四大模块,分别是计算器界面设计模块、计算器按键控制模块、四则混合运算模块、计算器记忆处理模块。
计算器界面设讣模块:
调用VC图形系统函数和字符函数画出计算器的界面,包括24个按钮和一个文本输入框。
计算机按键控制模块:
计算器通过键盘按键值的判断,执行相应的操作,如接收数字输入等。
计算器讣算处理模块。
计算处理模块主要完成可以包括括号的表达式运算,运算包括加,减,乘,除、开方。
讣算处理模块在按键控制模块中被调用执行。
处理模块是通过栈来实现的,分别定义了两个顺序栈,一个用来存放操作符栈,一个用来存放操作数栈。
计算器记忆处理模块。
记忆处理模块使讣算其具有记忆功能。
记忆当前输入的表达式,给出一个最后的运算结果。
可以清楚部分或全部记忆的值。
侮个人平等地捉升门我!
图简易计算器模块图
数据结构
该系统主要的数据有操作符集,用一维数组存放;存放操作符的优先级关系集,操作符的优先级关系用一个二维数组来体现;另外定义两个栈,一个用来存放操作符,一个用来存放操作数。
charops[7]={7*:
C,•)•;#•);
intcmp[7][7]={
{2,2,1,1,122},
{221,1,1,2,2},
{2,2,221,2,2},
{2,2,221,2,2},
{1,1,1,1,1,3,0},
{2,2,220,2,2},
{1,1,1,1,103}};
typedefstruct
{
charelem[Stack_Size];
inttop;
(SeqStack;
typedefstnjct
{
intelem[Stack_Size];
inttop;
)SeqStackOperand;
系统流程图
图系统流程图
主要算法
比较运算符优先级:
程序里的涉及到的运算符有7个,分别是它们之间的优先级关系用一个二维数组来存放,
intcmp[7][7]={
{2,2,1,1,122},
{221,1,1,2,2},
{2,2,221,2,2},
{2,2,221,2,2},
{1,1,1,1,1,3,0},
{2,2,220,2,2},
{1,1,1,1,103}};
其中3代表'=2代表1代表农‘,0代表不可比。
charCompare(charch1,charch2){
inti,m,n;
charpri;
intpriority;
for(i=0;iv7;i++)〃找到相比较的两个运算符在比较矩阵里的相对位置
if(chl==ops[i])m=i;
if(ch2==ops[i])n=i;
priority=cmp[m][n];switch(priority){
case1:
pri二V;break;
case2:
pri=A;break;
case3:
pri='=';break;
case0:
pri=$\
printf("表达式错误!
\nu);
break;
returnpri;
1.计算器界面设计
利用VC绘图库函数设计一个相对友好的操作界面。
关于VC绘图库的介绍在本书第二章。
界面图像如下:
图:
计算器界面
画计算机界面。
initgraph(5OO,3OO);//这里和TC略有区别bar(15,15,480,70);
setcolor(WHITE);
rectangle(10,10,490.290);
setcolor(WHITE);
for(j=0;j<2;j卄)for(i=0;i<7;i++)
{if(i<3)circle(55+65*i,l10+65*j,20);
elserectangle(55+65*i-20J10+65*j-20,55+65*i+20,l10+65*j+20);)for(i=0;i<7;i++)
{
if(i<4)circle(55+65*iJ10+65*j,20);
elserectangle(55+65*i-20,l10+65*j-20,55+65*i+20,l10+65*j+20);}outtextxy(50J05,H7H);
outtextxy(l15J05/8n);
outtextxy(180,105,9');
outtextxy(240J05,HCn);
outtextxy(310」05J'+M);
outtextxy(375J05,H(n);
outtextxy(440J05,H)n);
outtextxy(50J70,"4H);
outtextxy(l15J70,n5H);
outtextxy(l80J70,H6M);outtextxy(240J70,".H);
outtextxy(310,170/-M);
outtextxy(370,170,MsqrtH);
outtextxy(440J70J*<-M);
outtextxy(50,235,"3M);
outtextxy(l15,235/,2n);outtextxy(180,235,”1");outtextxy(245,235,H0H);outtextxy(310,235/'*n);outtextxy(375,235//H);outtextxy(440,235J=M);
2.按键响应操作
当用户通过鼠标左键按下©,T,“60,
9,T,“儿(「儿7,这些键时,字符按点击顺
序在输岀文本框输岀;当用户点击表示退一格操作;当用户点击4=\在文本块输出表达式结果;当用户按下'C'时,文本框清空。
MOUSEMSGm;
m=GetMouseMsgO;//记录鼠标操作
i=0;-
while(tnje)
{
m=GetMouseMsgO;//记录鼠标操作if(m.uMsg==WM_LBUTTONDOWN){setcolor(BLACK);
if(m.x>35&&m.x<=75&&m.y>90&&m.y<130)
{strcat(string/,7,');outtextxy(25,40,string);}
if(m.x>100&&m.x<=140&&m.y>90&&m.yv130)
{strcat(string/,8,');outtextxy(25,40,string);}
if(m.x>165&&m.x<=205&&m.y>90&&m.yv130)
{strcat(string/9H);outtextxy(25,40,string);}
if(m.x>225&&m.x<=265&&m.y>90&&m.yv130)
{setcolor(WHITE);bar(15,15,480,70);strcpy(string/M,);}//C
if(m.x>290&&m.x<=330&&m.y>90&&m.yv130)
{strcat(string/,+,,);outtextxy(25,40,string);}
if(m.x>355&&m.x<=395&&m.y>90&&m.yv130)
{strcat(string/,(H);outtextxy(25,40,string);}
if(m.x>420&&m.x<=460&&m.y>90&&m.y<130)
{strcat(string/,)H);outtextxy(25540,string);}
if(m.x>35&&m.x<=75&&m.y>155&&m.yv195)
{strcat(string/,4n);outtextxy(25.40,string);}
if(m.x>100&&m.xv二140&&m.y>155&&m.yv195)
{strcat(string/5H);outtextxy(25,40,string);)
if(m.x>165&&m.x<=205&&m.y>155&&m.yv195)
{strcat(string/,6n);outtextxy(25.40,string);)
if(m.x>225&&m.x<=265&&m.y>155&&m.yv195)
{strcat(string/,.,');outtextxy(25,40,string);}
if(m.x>290&&m.x<=330&&m.y>155&&m.yv195)
{strcat(string/,-H);setcolor(BLACK);outtextxy(25,40,string);}
if(m.x>355&&m.x<=395&&m.y>155&&m.yv195)//lg
{
n=strlen(string);
switch(n)//不超过5位
{
case5:
i=string[0]*10000+string[1]*1000+string[2]*100+string[3]*10+string[4];break;
case4:
i=string[0]*1000+string[1]*100+string[2]*10+string[3];break;
case3:
i二string]0]*100+string[1]*10+string[2];break;
case2:
i=string[0]*10+string[l];break;
casel:
i=string[l];break;
)
itoa(sqrt(i),stringJ0);
setcolor(WHITE);bar(15,15,480,70);setcolor(BLACK);outtextxy(25,40,string);
}
if(m.x>420&&m.x<=460&&m.y>155&&m.yv195)
{n=strlen(string);printf(Mn=%d.'\n);string[n-l]='\O,;bar(15,15,480,70);setcolor(BLACK);outtextxy(25,40,string);}//<-
if(m.x>35&&m.x<=75&&m.y>215&&m.y<25
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 简易 计算器 语言 代码