《c 面向对象程序设计简单计算器的设计》
c简单计算器课程设计
c 简单计算器课程设计一、课程目标知识目标:1. 让学生掌握简单计算器的基本操作,包括开机、关机、清除屏幕、输入数字和运算符号。
2. 使学生理解加、减、乘、除四则运算的基本概念,并能够在简单计算器上进行正确的运算操作。
3. 帮助学生识别计算器上各个按键的功能,了解其对应的数学意义。
技能目标:1. 培养学生运用简单计算器解决实际问题的能力,如购物找零、计算面积等。
2. 提高学生进行四则运算的速度和准确性,提高计算效率。
3. 引导学生掌握计算器使用技巧,如连续计算、顺序计算等。
情感态度价值观目标:1. 培养学生对计算器的正确态度,认识到计算器是学习数学的工具,而非替代品。
2. 激发学生学习数学的兴趣,让学生在轻松愉快的氛围中体验数学计算的乐趣。
3. 培养学生的合作意识,使学生在小组讨论和互助学习中提高沟通能力,培养团队精神。
本课程针对小学三年级学生设计,结合学生年龄特点,注重激发兴趣和培养动手操作能力。
课程内容紧密联系教材,将目标分解为具体的学习成果,便于后续教学设计和评估。
通过本课程的学习,学生将能够熟练运用简单计算器,提高数学计算能力,培养良好的学习习惯和团队协作能力。
二、教学内容1. 计算器的基本结构:引导学生认识计算器的外观、各部分名称及其功能。
- 教材章节:第三章第1节《认识计算器》- 内容列举:计算器按键布局、显示屏、开机与关机、清除键等。
2. 四则运算操作:讲解加、减、乘、除四则运算在计算器上的操作方法。
- 教材章节:第三章第2节《计算器的四则运算》- 内容列举:按键输入、运算顺序、连续运算、计算结果读取等。
3. 计算器使用技巧:教授计算器的高级使用技巧,提高计算效率。
- 教材章节:第三章第3节《计算器使用技巧》- 内容列举:百分比计算、乘方运算、记忆功能等。
4. 实践应用:结合实际生活场景,让学生运用计算器解决实际问题。
- 教材章节:第三章第4节《计算器在实际生活中的应用》- 内容列举:购物找零、计算面积、体积、速度等。
C语言程序设计-第四章简单计算器小程序-分支程序设计
P1 逻辑运算符 P2
或
逻辑运算符 P2
课堂练习: 求下面逻辑表达式的值: 2>1 && 4 && 7<3+!0
值为0
等价于((2>1)&&4)&&(7<(3+(!
1 条件运算符和条件表达式 1.2 逻辑运算—逻辑运算的重要规则
a&&b:当a为0时,不管b为何值,结果为0
课堂练习:有下面定义的语句和逻辑表达式: int a=0,b=10,c=0,d=0 a && b && (c=a+10,d=100) 逻辑表达式执行后,a,b,c,d的值各为多少?
任务实现效果演示 例题源代码:switchcalculator.c
相关知识 1. switch语句 2. break语句
1 switch多分支选择结构
❖ 尽管用if…else if结构可以实现多分支,注但意当:分常支量较表多达时式,必程须序是结整构型较、复字杂符。型或枚举类型,不能是 实型表达式,每个case关键字后的常量表达式应互不相同
值为0 等价于i==(k>j),值为1
1 条件运算符和条件表达式 1.2 逻辑运算—逻辑运算符与逻辑表达式
&&(逻辑与)、||(逻辑或)、!(逻辑非)(单目)
逻辑表达式的一般形式:
优先级: 1.由低到高: ||→ && → !; 2.多种运算符一起: = →|| →&& →关系运算符 →算术运算符→ !。
【】 简单计算器小程序:由用户输入运算数和四则运算符(+、-、*、/),输出计算结果。
【】
c语言制作简单的计算器
c语言制作简单的计算器在计算机编程领域中,C语言是一种广泛使用的编程语言之一。
它具有简单易学的特点,并且能够进行复杂的计算和逻辑处理。
今天,我们就来学习一下如何使用C语言来制作一个简单的计算器。
首先,我们需要明确我们计算器的功能和界面设计。
本次制作的计算器将具有基本的四则运算功能,即加法、减法、乘法和除法。
我们将在控制台中实现计算器的操作,并通过简单的用户界面进行交互。
接下来,我们需要创建一个C语言程序的框架。
首先,我们需要包含头文件,以便在程序中使用各种函数和变量。
我们可以使用"#include" 来引入头文件,例如:```c#include <stdio.h>```然后,我们需要定义主函数 `main()`。
在这个函数中,我们将编写计算器的逻辑代码。
让我们开始编写函数吧!首先,我们需要声明一些变量来存储用户输入的数字和运算符。
我们可以使用 `int` 来定义整数变量,并用 `char` 定义字符变量。
例如:```cint num1, num2, result;char operator;```接下来,我们需要提示用户输入要进行的运算,并读取用户输入的数字和运算符。
我们可以使用 `printf` 和 `scanf` 函数来完成这个任务,例如:```cprintf("请输入第一个数字: ");scanf("%d", &num1);printf("请输入运算符(+, -, *, /): ");scanf(" %c", &operator);printf("请输入第二个数字: ");scanf("%d", &num2);```注意,我们在读取运算符之前添加了空格,这是为了消除输入缓冲区中可能残留的换行符等字符。
接下来,我们需要编写代码来进行实际的计算操作。
c面向对象程序设计MFC简单计算器实验报告
c面向对象程序设计M F C简单计算器实验报告Standardization of sany group #QS8QHH-HHGX8Q8-GNHHJ8-HHMHGN#计算机与信息工程学院《程序设计基础》课程设计报告题目名称:60.编写一个能实现简单功能的计算器学生姓名:刘沛东学生学号:专业班级:电子信息工程(1)班指导教师:高攀1 课程设计的题目编写一个能实现简单功能的计算器2 题目要求1. 有一个计算器图形。
2. 能实现加、减、乘、除及乘方的运算。
3. 当输入题目时,屏幕上要在指定位置上显示出相应的题目内容,且相应的数字键要改变颜色例如:输入数字1 时,在计算器图形上的1键变为红色。
4. 屏幕、图形颜色、形状自定3 总体设计总体框架图1 系统框架系统功能说明在VC++中绘制计算器界面,各控件的设置对0~9控件设定相应的ID和其他属性:图2 “1”控件设置对“+、-、*、\”控件设定相应的ID和其他属性:图2 “+”控件设置对其它控件设定相应的ID和其他属性:图3 其它控件设置主要使用到Layout菜单中的Align功能对各个按钮进行对其,使界面更加整洁。
拖出的控件有上面的一个Edit控件用于显示数字,Button控件用于处理鼠标的消息。
4 程序详细设计系统主调模块图5 程序流程图各模块详细设计建立的变量,控件的命名,对应的消息处理函数对应表double poz; 按钮的处理函数void CCalcDlg::OnPt(){point_flag=TRUE; && buffer[i+1]==0)之前那位}m_Dis=strtod(buffer,NULL);整个大的程序的实现分8个功能,每个功能都通过一个相应的函数来实现.在调试时分别进行调试,使得调试更方便些.在编写各个函数只是按着题目要求的去完成,后来经指导老师指导后,发现了很多自己欠缺的地方,又一次将程序整体进行调试.最后把程序完善了许多。
用c语言设计一个多功能计算器
用C语言设计一个多功能计算器实现功能:1)具备整型数据、浮点型数据的算术(加、减、乘、除)运算功能。
依次输入第一个运算数、运算符(+,-,*,/),第二个运算数,然后输出结果。
结果可以作为下一个运算的第一运算数。
按‘C’清屏,按‘X’退出。
例如:输入:2+5输出:72)实现单运算符表达式计算的功能。
输入的操作数可以包含整数或浮点数。
如果遇到错误的表达式,应输出错误提示信息。
输入表达式如下:例如:输入:2+5输出:7目录摘要 (1)第一章引言 (3)1.1 计算器概述 (3)第二章设计任务及要求 (5)2.1 设计任务 (5)2.2 设计要求 (6)第三章计算器硬件设计 (7)3.1 方案说明 (7)3.2 设计单片机主体电路图 (8)第四章软件设计 (9)4.1 模块介绍 (9)4.2 程序流程图 (10)4.3 程序部分 (11)第五章总结 (16)参考文献 (17)摘要:[目录]一、课程设计题目及任务要求二、设计思路三、部分程序介绍四、程序框图五、汇编程序六、参考资料[原文]一、课程设计题目及任务要求请设计十进制加减法计算器。
要求能(不同时)显示3位输入和4位输出。
二、设计思路1、操作显示设备显示设备采用八片七段共阴极LED显示器,共设置16 个键,其中数字键0~9 共十个,接下来依次是加号键、减号键、等于号、清除键。
操作设备是两行八列共16键的简单键盘。
第一行从左至右分别为0、1、2、3、4、5、6、7,第二行分别为8、9、A(+)、B(-)、C(=)、D(清除键)、E (清除键)、F(清除键),“清除键”表示程序初始化,为下次输入准备。
2、程序实现功能(1)十进制加减法计算:输入范围为(1~999),该程序输入两个定点数,每个3位,输出4位;A为加,B为减,C为等于,输出为四位计算结果。
数据输入采用规范化输入,即必须输入3个数才算完成一个运算数的输入,两个运算数之间输入运算符A或者B,输入完成按C显示计算结果;(2)计算机复位功能:DEF均为清零重启,任何时候按下DEF中一个将重新开始;三、部分程序介绍(1)主程序(START)程序开始运行初始化程序,设置输入输出口PA、PB、PC,扫描键盘,输入两个待求数据和运算符,存入寄存器,等待输入等号同时显示第二个数,运行计算程序,并将计算结果分离,输出到显示器;(2)读键子程序(RD_KB)程序分别扫描两行键盘,若有键按下则通过移位的方式计算键码;若无键按下,则将键码缓存设置为10H,判断后进行相应的跳转。
MFC计算器
《C++面向对象程序设计》实验报告学院:信息科学与工程学院专业:学号:姓名:一.题目:利用MFC框架编写Windows附件中所示的简易计算器二.功能描述:1.能够实现最基本的加,减,乘,除四则基本运算。
2.界面有清空,退格按钮,方便用户计算使用。
3.此计算器具有开方,取倒数,求对数的高级运算。
三.概要设计:1.Windows消息处理机制通过对教材的阅读,对Windows程序的消息处理机制有个大致的了解。
Windows的程序都是通过消息来传送数据,并且存在异常处理等不需要用户参与的系统消息,用户消息就是鼠标的单击,双击等。
2.界面的设计如图,简易的计算器界面主要使用菜单中相关控件,并合理的布置各个按钮的位置,使得界面让用户看起来整洁简单。
3.框架描述Windows 简易计算器在资源视图画好界面添加控件的同时,通过属性修改名称为各个按钮和编辑框添加不同的函数四则运算+,-,*,/ 1/x,lgx等函数退格和清空键4.建立的变量和控件的命名,对应的消息处理函数命名表ID CAPTION Message Handler IDC_BUTTON0 0 OnButton0()IDC_BUTTON1 1 OnButton1()IDC_BUTTON2 2 OnButton2()IDC_BUTTON3 3 OnButton3()IDC_BUTTON4 4 OnButton4()IDC_BUTTON5 5 OnButton5()IDC_BUTTON6 6 OnButton6()IDC_BUTTON7 7 OnButton7()IDC_BUTTON8 8 OnButton8()IDC_BUTTON9 9 OnButton9()IDC_BUTTON10 . OnButton11()IDC_BUTTON11 = OnButtonequal() IDC_BUTTON12 + OnButtonadd()IDC_BUTTON13 - OnButtoncut()IDC_BUTTON14 * OnButtonmultiply() IDC_BUTTON15 / OnButtonremove() IDC_BUTTON16 1/x OnButton1x()IDC_BUTTON17 lg OnButtonlg()IDC_BUTTON18 sqrt OnButtonsqrt()IDC_BUTTON19 Backspace OnButtonbackspace() IDC_BUTTON20 C(清空) OnButtonclear()5.下图是基本对话框中所有的类四.详细设计:1.新建工程,选择MFC AppWizard[exe],并命名工程的名称为mycalculator2.选择基本对话框3.通过控件添加各种按钮和编辑框(对话框右边的“Controls”控件箱提供了可用于对话框的各种组建,在此次计算器中,基本上只用到上面四个控件,对话框只能通过控件来实现它们的功能,把控件中的数据保存在对话框类的数据成员中,应用程序才能通过这些数据成员获取控件中的数据)4.考虑用户们的习惯,把编辑框的显示的数字属性由靠左改成靠右(选中编辑框,右击选择属性-样式,排列文本改为向左)5.用同样的方法改变按钮的标题,其他按钮同理6.为美观改变对话框的标题为“计算器”7.右击编辑框添加类向导,添加变量m_result,且type为CString//可通过其改变类型和名称8.实现每个按钮的功能,双击按钮,为按钮添加函数,可以改变函数的名称① 0~9和小数点的函数大致类似void CMycalculatorDlg::OnButton1(){// TODO: Add your control notification handler code herem_result +=_T("1");UpdateData(FALSE);}函数_T()可以对字符串进行操作,UpdateData(FALSE)可以把数据传到文本框里面,小数点与数字同样这样处理。
VC计算器-小闹钟-通讯录设计(含源文件)
面向对象Windows程序设计选题:计算器、小闹钟、通讯录学号:姓名:院(系):信息工程学院专业:信息完成日期:指导老师:老师题目一:利用MFC框架编写简易计算器一.需求分析即要实现简单计算器的功能,包括加、减、乘、除等运算功能,还要实现数据的输入、输出、计算、显示及程序退出等功能。
二.总体设计1.程序的创建.使用软件Visual C++ 6.0.,首先,新建一个MFC 基于对话框的工程。
点击文件-新建,在工程选项卡里选择MFC AppWizard[exe],给工程命名Jisuan。
点击确定。
创建一个基于对话框的应用程序。
2.界面的设计按如图所示向对话框添加控件,且按如图所示一样排版。
4.为控件添加成员变量和消息处理函数为IDC_FIRNUM 增加一个变量,点Add Variable…,我们为它增加一个 float 型的变量,命名为m_Firnum。
给第二个编辑框增加float变量m_Secnum。
第三个编辑框增加float变量m_Result。
按ctrl+w选择第一个选项卡 Message Maps,从IDs 中选择IDC_JIA,即加这个按钮,从 Messages 中选择 BN_CLICKED,即当被单击的时候,然后点 AddFunction…为其添加函数然后弹出对话框,为函数命名,选择默认即可,点击OK。
同样为-,*,/添加一样的响应函数。
结果如图:三、编程说明与实现添加如下代码:void CJisuanDlg::OnJia(){// TODO: Add your control notification handler code hereUpdateData(true);m_Result=m_Firnum+m_Secnum;UpdateData(false);}void CJisuanDlg::OnJian(){// TODO: Add your control notification handler code hereUpdateData(true);m_Result=m_Firnum-m_Secnum;UpdateData(false);}void CJisuanDlg::OnCheng(){// TODO: Add your control notification handler code hereUpdateData(true);m_Result=m_Firnum*m_Secnum;UpdateData(false);}void CJisuanDlg::OnChu(){// TODO: Add your control notification handler code hereUpdateData(true);m_Result=m_Firnum/m_Secnum;UpdateData(false);}这里有一个UpdateData(Bool)函数。
C语言编程-简单的计算器
int i=0;
a[0]='$';
printf("请输入表达式,退出请输入q:\n\n");
scanf("%c",&x);
if(x=='q') break;
while(x!='\n')
{
a[++i]=x;
scanf("%c",&x);
}
a[i+1]='\0';
jieguo=jisuan(a);
}
j=j+1;
x=z;
if(a[j]=='.')
{
l=1;
i=j+1;
j=i+1;
while(a[j]>='0'&&a[j]<='9')
{j++;}
j--;
for(k=i;k<=j;k++)
{
n=pow(0.1,l);
l=l+1;
x=x+n*(a[k]-'0');
}
i=j+1;
}
else i=j;
shu.data[++shu.top].d1=x;
nibo[t1+1]='\0';
t2--;
}
zhan2[++t2]=a[i];
i++;
}
}
else if(a[i]=='*'||a[i]=='/')
C语言实现简单计算器程序
C语⾔实现简单计算器程序这两天在看⼀个C语⾔写的计算器程序,做了不少的功夫,跟着作者⼀步步的进⾏完善,了解了许多细节性的东西,在此⾃⼰做个总结,加深⾃⼰对程序的印象,也算是梳理。
在该计算器程序,能进⾏加减乘除、sin、cos、exp等操作,同时能进⾏数值保存功能。
⽽该计算器使⽤逆波兰表⽰法。
即所有运算符都跟在操作数的后⾯,⽐如下列表达式:(1 - 2) * (4 + 5)采⽤逆波兰表⽰法表⽰为:1 2 - 4 5 + *逆波兰表达法中不需要圆括号,只要知道每个运算符需要⼏个操作数就不会引起歧义。
计算器程序实现很简单,具体原理如下:while(/* 下⼀个运算符或操作数不是⽂件结束指⽰符 */)if(/* 是数 */)/* 将该数压⼊到栈中 */else if (/* 是运算符 */)/* 弹出所需数⽬的操作数 *//* 执⾏运算 *//* 将结果压⼊到栈中 */else if (/* 是换⾏符 */)/* 弹出并打印栈顶的值 */else/* 出错 */在程序设计中,使⽤模块化思想,getop函数来进⾏读⼊,该函数返回⼀个标识,⽤来标识读⼊的是什么类型。
主循环体中根据该标识执⾏相应的动作。
以下是该程序:(我将所有函数和变量放在同⼀⽂件)#include <stdlib.h>#include <stdio.h>#include <string.h>#define MAXOP 100#define NUMBER '0' //标识读⼊的是数字#define NAME 'n' //标识读⼊的是字符串(函数名或⾮法字符串)#define ALPHA 26int getop(char []);void push (double); //压栈double pop(void); //出栈void clear(void); //清空栈void mathfnc(char []); //执⾏相应的数学函数sin、cos、exp等int main(void){int type;int i, var = 0;double op1, op2,v;char s[MAXOP];double variable[ALPHA];for (i = 0; i < ALPHA; i++) //初始化⽤于保存数值的变量数组variable[i] = 0.0;while ((type = getop(s)) != EOF) //读取输⼊{switch (type){case NUMBER:push (atof(s));break;case NAME:mathfnc(s);break;case '+':push (pop() + pop());break;case '*':push (pop() * pop());break;case '-':op2 = pop();push (pop() - op2);break;case '/':op2 = pop();if (op2 != 0.0)push (pop() / op2);elseprintf ("error: zero divisor\n");break;case '%':op2 = pop();if (op2 != 0.0)push (fmod(pop(), op2));elseprintf ("error: zero divisor\n");break;case '?': //打印栈顶元素op2 = pop();printf ("\t%.8g\n", op2);push (op2);break;case '=': //保存数值pop();if (var >= 'A' && var <= 'Z')variable[var - 'A'] = pop();elseprintf ("error: no variable name\n");break;case 'c':clear();break;case 'd': //复制栈顶元素op2 = pop();push(op2);push(op2);break;case 's': //交换栈元素op1 = pop();op2 = pop();push(op1);push(op2);case '\n':v = pop(); //v保存最后的⼀次结果printf ("\t%.8g\n", v);break;default:if (type >= 'A' && type <= 'Z')push(variable[type - 'A']);else if (type == '@') //输⼊的字符@表⽰最近⼀次结果值 push(v);elseprintf ("error: unknown command %s\n", s);break;}var = type;}return 0;}/* ----------------------------------------------------------- */#define MAXVAL 100int sp = 0; //标识栈顶double val[MAXVAL];void push(double f){if (sp < MAXVAL)val[sp++] = f;elseprintf ("error: stack full, can't push %g\n", f);}double pop(void){if (sp > 0)return val[--sp];else{printf ("error: statck empty\n");return 0.0;}}void clear(void){sp = 0;}void mathfnc (char s[]){double op2;if (strcmp (s, "sin") == 0)push(sin(pop()));else if(strcmp (s, "cos") == 0)push(cos(pop()));else if(strcmp (s, "exp") == 0)push(exp(pop()));else if(strcmp (s, "pow") == 0){op2 = pop();push (pow(pop(), op2));}elseprintf ("error: %s not supported\n", s);}/* ----------------------------------------------------------- */#include <ctype.h>int getch(void);void ungetch(int);int getop(char s[]){int i, c;while ((s[0] = c = getch()) == ' ' || c == '\t') //过滤开头的空⽩字符;s[1] = '\0';i = 0;if (islower(c)) //判断是否为⼩写字母,也即读取由⼩写字母组成的字符串 {while (islower(s[++i] = c = getch()));s[i] = '\0';if (c != EOF)ungetch(c);if (strlen (s) > 1)return NAME;elsereturn c;}if (!isdigit(c) && c != '.' && c != '-')return c;if (c == '-') //⽤于判断是负数还是减操作{if (isdigit(c = getch()) || c == '.')s[++i] = c;else{if (c != EOF)ungetch(c);return '-';}}if (isdigit(c)) //收集整数部分while (isdigit(s[++i] = c = getch()));if (c == '.') //收集⼩数部分while (isdigit(s[++i] = c = getch()));s[i] = '\0';if (c != EOF)ungetch(c);return NUMBER;}/* ----------------------------------------------------------- *//** 引⽤以下两个函数是因为:程序不能确定它已经读⼊的输⼊是否⾜够 ** 除⾮超前多读⼊⼀些输⼊,在本程序中,读⼊⼀些字符合成⼀个数字 ** 所以在看到第⼀个⾮数字字符之前,已经读⼊的数的完整性是不能确定的* 由于程序要超前读⼊⼀个字符,这样就导致最后⼜⼀个字符不属于当前所要读⼊的数*/#define BUFSIZE 100char buf[BUFSIZE];int bufp = 0;int getch(void){return (bufp > 0) ? buf[--bufp] : getchar();}void ungetch (int c){if (bufp >= BUFSIZE)printf ("ungetch: too many characters\n");elsebuf[bufp++] = c;}该程序虽然简单,但是还是存在⼀些⼩⼩的问题,⽐如没有数据时进⾏pop的话,会打印栈中⽆数据同时返回数值0.0,在循环体中许多执⾏操作会将该数值保存到栈中,之后打印该值,⽤户体验度⽐较差。
C语言简单计算器的编写课程设计
2013-2014学年第二学期《高级语言程序设计》课程设计报告题目:简单计算器专业:数字媒体技术班级:13级1班姓名:邢洪波指导教师:王辉成绩:计算机与信息工程系二0一四年二月二十日1设计内容及要求1.1 利用本学期所学的《C语言程序设计》课程,运用相关知识,查阅相关资料,编写C语言程序,设计一个简单计算器,要求编写的简单计算器能够模拟windows系统的计算器,用户能够用键盘输入相关数据,能够进行简单的加、减、乘、除运算,并且在程序运行过程中能够正常的退出程序。
在计算器程序运行中,输入数据时如果遇到输入错误的情况,能够能过键盘上的退格键进行删除,并且重新输入正确的数据。
在数据输入完成后,如果需要放弃本次计算操作,可以利用程序中设置好的按键进行清零,并为下一次运算作准备。
1.2 运用相关知识,查阅相关资料,编写一个简单的计算器,能够实现简单的基本的加减乘除运算,在计算器工作时用户能利用键盘或鼠标进行相应操作。
程序基本功能要求实现完整,并有简单的验证。
程序还须有符合标准的程序设计报告。
2概要设计2.1系统流程图2.1 系统流程图2.2主要功能表2.2 主要功能表3设计过程或程序代码#include<stdio.h>#include<math.h>#include<malloc.h> /*malloc的头文件代表在内存中开辟存储空间*/double jisuan(char a[]){int i=1,j,k,m,cnt=0,t1=0,t2=0,t3=0;/*定义整型变量i,j,k,m,n,cnt,t1,t2,t3*/char nibo[50],zhan2[50];/*定义字符型数组*/double x,n,l,z=0,zhan3[50];/*定义双精度变量x,n,l,z,zhan3[50]*/typedef struct /*表示可以用con定义结构体变量*/{double d1;int d2;}dd;typedef struct{dd data[50];int top;}zhan1;zhan1 *shu;/*定义指针变量*/shu=(zhan1 *)malloc(sizeof(zhan1));shu->top=0;while(a[i]!='\0') /*外循环是用while语句*/{if(a[i]>='0'&&a[i]<='9') /*内循环使用if-else语句*/{z=0;j=i+1;while(a[j]>='0'&&a[j]<='9') /*内循环使用各种循环语句的嵌套*/{j++;}j--;for(k=i;k<=j;k++){z=z*10+a[k]-'0';}j=j+1;x=z;if(a[j]=='.'){l=1;i=j+1;j=i+1;while(a[j]>='0'&&a[j]<='9') /*内循环使用各种循环语句的嵌套*/{j++;}j--;for(k=i;k<=j;k++){n=pow(0.1,l);l=l+1;x=x+n*(a[k]-'0');}i=j+1;}else i=j;shu->data[++shu->top].d1=x;shu->data[shu->top].d2=++cnt;nibo[++t1]='0'+shu->data[shu->top].d2;nibo[t1+1]='\0';}else if(a[i]=='('){zhan2[++t2]=a[i];i++;}else if(a[i]==')'){j=t2;while(zhan2[j]!='('){nibo[++t1]=zhan2[j];nibo[t1+1]='\0';j--;}t2=j-1;i++;}else if(a[i]=='+') /*对加法的定义*/{while(t2>0&&zhan2[t2]!='(') /*定义当加号和括号同时出现时*/{nibo[++t1]=zhan2[t2];/*将zhan2[t2]赋给nibo[++t2]*/nibo[t1+1]='\0';t2--;}zhan2[++t2]=a[i];i++;}else if(a[i]=='-') /*对减法的定义*/{if(a[i-1]=='$'){a[0]='0';i=0;}else if(a[i-1]=='('){a[i-1]='0';a[i-2]='(';i=i-2;t2--;}else{while(t2>0&&zhan2[t2]!='(') /*对括号的定义*/{nibo[++t1]=zhan2[t2];nibo[t1+1]='\0';t2--;}zhan2[++t2]=a[i];i++;}}else if(a[i]=='*'||a[i]=='/') /*对乘法和除法的定义*/{while(zhan2[t2]=='*'||zhan2[t2]=='/'||zhan2[t2]=='^'||zhan2[ t2]=='#') /*逻辑运算*/{nibo[++t1]=zhan2[t2];nibo[t1+1]='\0';t2--;}zhan2[++t2]=a[i];i++;}else if(a[i]=='^'||a[i]=='#') /*逻辑运算中的或运算*/{while(zhan2[t2]=='^'||zhan2[t2]=='#'){nibo[++t1]=zhan2[t2];nibo[t1+1]='\0';t2--;}zhan2[++t2]=a[i];i++;}}while(t2>0){nibo[++t1]=zhan2[t2]; /*将的zhan2[t2]值赋给nibo[++t1]*/nibo[t1+1]='\0'; /*碰到'\0'结束部分程序的运算*/t2--;}j=1;t3=0;while(j<=t1){if(nibo[j]>='0'&&nibo[j]!='^'&&nibo[j]!='#'){for(i=1;i<=shu->top;i++){if((int)(nibo[j]-'0')==shu->data[i].d2){m=i;break;}}zhan3[++t3]=shu->data[m].d1;}else if(nibo[j]=='+') /*对加法的定义*/{zhan3[t3-1]=zhan3[t3-1]+zhan3[t3];t3--;}else if(nibo[j]=='-') /*对减法的定义*/{zhan3[t3-1]=zhan3[t3-1]-zhan3[t3];t3--;}else if(nibo[j]=='*')/*对乘法的定义*/{zhan3[t3-1]=zhan3[t3-1]*zhan3[t3];t3--;}else if(nibo[j]=='/') /*对除法的定义*/{zhan3[t3-1]=zhan3[t3-1]/zhan3[t3];t3--;}else if(nibo[j]=='^') /*对乘方的定义*/{zhan3[t3-1]=pow(zhan3[t3-1],zhan3[t3]);t3--;}else if(nibo[j]=='#') /*对开方的定义*/{zhan3[t3]=sqrt(zhan3[t3]);}j++;}return zhan3[t3];/*返回值*/}void main(){for(;;){char x,a[50];double jieguo;int i=0;a[0]='$';printf("#表示开方,^表示乘方(支持负数)\n");/*对乘方和开方的定义*/printf("请输入表达式无需输入 = 号直接回车可输出答案退出请输入q \n\n");scanf("%c",&x);if(x=='q') break;while(x!='\n') /*碰到'\0'结束部分程序的运算*/{a[++i]=x;scanf("%c",&x);}a[i+1]='\0';jieguo=jisuan(a);printf("\n");printf("结果为:%lf",jieguo);printf("\n\n\n");printf("退出请输入q 继续请直接输入\n\n");}}4设计结果与分析系统测试结果如下:根据电脑所给的提示出现语法错误,缺少变量的定义大多的语法错误在通过书本参考下能够修改。
用c语言编写简易计算器
在c51中用c语言编写简易计算器#include<reg52.h>#define BYTE unsigned charint jh;int a;int b;int c; /*c是符号*//*按键的值*/sbit P11=P1^3;sbit P12=P1^2;sbit P13=P1^1;sbit P14=P1^0;BYTE disply[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};void delay(int ms) //延时函数{while(ms--){ int h;for( h=0;h<=250;h++){;}}}void get_jianzhi() //获取键盘值的函数{BYTE disi;BYTE gaosi;gaosi=P2;P2=0x0f;delay(10 );disi=P2;gaosi=gaosi+disi;switch(gaosi){case 0xee:{jh=0;break;}case 0xde:{jh=1;break;}case 0xbe:{jh=2;break;}case 0x7e:{jh=3;break;}case 0xed:{jh=4;break;}case 0xdd:{jh=5;break;}case 0xbd:{jh=6;break;}case 0x7d:{jh=7;break;}case 0xeb:{jh=8;break;}case 0xdb:{jh=9;break;}case 0xbb:{jh=10;break;}case 0x7b:{jh=11;break;}case 0xe7:{jh=12;break;}case 0xd7:{jh=13;break;}case 0xb7:{jh=14;break;}case 0x77:{jh=15;break;}}do{P2=0xf0;}while(P2!=0xf0);}void show() /*显示函数*/{BYTE m; /*千位*/BYTE h; /*百位*/BYTE j; /*十位*/BYTE i; /*个位*/P3=0xff;if(c==14){b=0;}else{ }while(P2==0xf0) /*有键按下则跳出循环函数*/{j=0;i=0;h=0;m=0;if(b!=0) /*b不为0则显示b并判断它有几位数*/{if(b>99) {h=b/100;j=(b-h*100)/10;i=b%10;}else{if(b>9){j=b/10;i=b%10;}else{i=b;}}}else{if(a>999){ m=a/1000;h=(a-m*1000)/100;j=(a-m*1000-h*100)/10;i=a%10;}else{if(a>99){h=a/100;j=(a-h*100)/10;i=a%10;}else{if(a>9){j=a/10;i=a%10;}else{i=a;}}}}if(m!=0){ P11=0; P0=disply[i]; delay(5);P0=0x00;P11=1;P12=0;P0=disply[j];delay(5);P0=0x00;P12=1;P13=0;P0=disply[h];delay(5);P0=0x00;P13=1;P14=0;P0=disply[m]; delay(5);P14=1;P0=0x00;}else { if(h!=0){P11=0; P0=disply[i]; delay(5);P0=0x00;P11=1;P12=0;P0=disply[j]; /*判断要显示的数字是几位数*/delay(5);P0=0x00;P12=1;P13=0;P0=disply[h]; delay(5);P0=0x00;P13=1;}else{if(j!=0){P11=0;P0=disply[i];delay(5);P0=0x00;P11=1;P12=0;P0=disply[j]; delay(5);P0=0x00;P12=1;}else{P11=0;P0= P0=disply[i];}}}}}void main(){BYTE k=0; /*用来判断是给a还是b赋值*/P2=0xf0;a=0; /*第一次按键值的初始化*/b=0; /*第二次按键值的初始化*/bat:show();delay(10 );get_jianzhi() ;P2=0xf0;if(jh==15) /*按了清除键的话,全部清零*/ {a=0;b=0;c=0;}else{if(jh>=0&&jh<=9) /*按了数字键*/{if(k==0) /*判断是给a还是b赋值*/{a=a*10+jh;}else{b=b*10+jh;}goto bat;}else{if(a==0&&b==0) /*在开始时只按功能键的话,返回*/{goto bat;}else{k=1;if(b==0){c=jh;}else{switch(c) /*运算法则*/{case 10: { a=a+b;break;}case 11: {a=a-b;break;}case 12: {a=a*b;break;}case 13: {a=a/b;break;}case 15:{ break; } /*按'='的话,不运算*/}c=jh;}goto bat;}}goto bat;}}。
计算器源代码文档
南京信息工程大学C++面向对象程序设计课程作业报告设计课题:计算器的设计专业班级:自动化2班学生姓名:学生学号:指导教师:成绩:二○一一年六月二十日计算器的设计一、设计目的学会用MFC设计一个简易计算器,能够求实数的四则运算以及求倒数和平方根,可自己增加功能。
二、需求分析系统目标:设计的计算器至少能够进行简单的四则运算和求倒数求反以及开方运算。
主体功能:实现简单的四则运算和求倒数求反以及开方运算。
开发环境:操作系统:windows XP;编程环境:microsoft visual C++ 6.0 。
三、总体设计思路系统流程图:鼠标单机左键,响应相应的函数选择第一第二个操作数选择所需的运算显示结果图1(流程图)基本功能划分:1.加法运算2.减法运算3.乘法运算4.除法运算5.求倒数6.求平方根7.求余数8.取反9.Backspace 功能 10.清零功能 11.操作帮助四、详细设计流程图:图2(流程图)创建工程(创建一个对话框应用程序)设计对话框界面设置各控件属性为编辑框连接成员变量为类添加数据成员,初始化构造函数。
为所有按钮添加事件对类添加成员函数(更新编辑框)并进行实现实现对各按钮事件的实现(1)创建工程启动Microsoft Visual利用AppWizard向导,创建一个工程“Calculator”。
选择基本表,Click完成。
(2)设计对话框界面①看到如下界面,Delete删除页面上全部原配控件。
②利用MFC自带的控件选项编辑计算器界面③设计的界面如下当然作为“所见即所得”的MFC控件设计,干净整齐的界面是基本要求,界面是否整洁明了甚至会影响用户的心情。
各控件的属性设置见下表:表1:各个控件控件类型控件的ID 控件的CaptionButton Button Button Button Button Button Button Button Button Button Button Button Button Button Button Button Button IDC_Num0IDC_Num1……IDC_Num9IDC_DotIDC_SignIDC_SubIDC_MulIDC_DivIDC_ClearIDC_SqrtIDC_ReciIDC_EqualIDC_ModIDC_BackspaceIDC_ClearIDC_Help1……9.+/-+-*/sqrt1/x=%BackspaceClearHelp(3)为编辑框“IDC_DISPLAY”连接成员变量为编辑框“IDC_DISPLAY”连接一个CString类型的成员变量m_display,用来显示操作数和运算结果。
简易计算器的设计及实现
简易计算器的设计及实现随着社会经济的发展,计算器在日常生活中扮演着越来越重要的角色,成为人们学习和工作不可或缺的工具,计算器的设计无论在何时都有着很大的实际意义。
文章在分析简易计算器的主要功能和设计思路的基础上,使用C#语言对计算器进行了具体的程序开发与实现。
标签:C#;计算器;程序设计引言计算器作为必备的办公工具,渗透在人们日常生活的每个角落,特别是随着社会经济的发展,人们需要处理的数据越来越多、越来越繁杂,计算器带来的便捷也越来越明显。
虽然如今网络和市面上的计算器已非常之多,但功能过于简单的无法满足个人需求,功能过多的价格较贵且很多功能根本用不到,所以设计一款简单却实用的计算器具有很大的实际意义。
而C#是一种功能非常强大的编程语言,其易于掌握、支持跨平台、面向对象的优点使得它非常适合用来开发一些常用的界面工具,故本文介绍了简易计算器的主要功能和设计思路,并在此基础上使用C#语言进行了具体的程序开发与实现。
1 C#语言和开发工具1.1 C#简介C#是一种面向对象的程序设计语言,是专门用于.NET的编程语言,用C#编写的代码总是在.NET Framework中运行(.NET Framework简称.NET,是微软为开发应用程序创建的平台)。
使用C#可以编写传统的Windows桌面应用程序、Windows服务程序、Web应用程序、Web服务程序等。
1.2 开发工具Visual StudioVisual Studio是一套完整的开发工具集,可以用来创建Windows平台下的Windows应用程序和网络程序,也可以用来创建网络服务、智能设备应用程序和Office插件等。
Visual Studio有多种版本,本次设计使用的版本是Visual Studio 2013。
2 简易计算器的基本功能精确、便捷、高效是计算器的主要特点,考虑到生活中人们常用的数据格式和运算需求,简易计算器需要具备以下几个功能:(1)简洁直观的可操作界面;(2)基本的四则运算和清零功能;(3)支持正负数运算和小数操作;(4)支持乘方与开方运算。
c#实验报告_简易计算器
重庆邮电大学移通学院C#课程设计一、实验目的:构造一个类似Windows自带的计算器一样的简易计算器,能够连续进行加、减、乘、除四则整数运算,并能随时清除计算结果进行下一次计算。
二、具体实验步骤:1、添加编辑框对应的变量m_Display2、添加运算符类型变量char CompuType; //用于存储运算符类型CString FirstInput; //用于保存运算符前面的输入值三、实验内容设计的基本要求:能正确输入数据,能实现加,减,乘,除等算术运算,能实现简单的三角运算,运行结果能正确显示,可以清除数据等。
1、要点分析:这是一个简单的对话窗体设计,涉及button,editbox,static text,radio button,group box等控件,主要影响事件为BN_CLICKED2、程序源代码:using System;using System.Collections.Generic;using ponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;namespace Study{public partial class Form1 : Form{public Form1(){InitializeComponent();}private int opMain = 0; // 运算类型,其中1(加法) 2(减法) 3(乘法) 4(除法)private double mainNum1 = 0; // 存储第一个数private double mainNum2 = 0; // 存储第二个数private bool isSecond = false; // 用来判断输入的是第一个还是第二个数private bool isDone = false; // 用来判断是否按了等于按钮private bool isDecimal = false; // 用来判断是否有小数private bool isNokeydown = false;// 用来判断是否没输入第二个数而按了"="号键private bool isKeyupclear = true;//用来判断是否按了clear键,程序开始前默认按了;public void setText(string textest) //设置文本框的值{if (textest.Equals("clear")){textBox1.Text = "0.";isSecond = false;isDone = false;isDecimal = false;isKeyupclear = true;}else{if (isSecond){textBox1.Text = textest;isSecond = false;isDecimal = false;}else{if (isDone){textBox1.Text = textest;isDone = false;}else{if (isKeyupclear) //对是否按下clear键的判断{textBox1.Text = textest;isKeyupclear = false;}elsetextBox1.Text += textest;}}}btnEqual.Select(); //设置"="号的焦点}public void Calc(double num1, double num2, int op){double answer = 0;switch (op) //判断所进行的运算{case 1:answer = num1 + num2;break;case 2:answer = num1 - num2;break;case 3:answer = num1 * num2;break;case 4:answer = num1 / num2;break;case 5:answer = num1 % num2;break;}setText(answer.ToString()); //显示结果}//执行运算private void doEquals(){if (isNokeydown) //判断已经输入第二个数后按了"="号键{mainNum2 = double.Parse(textBox1.Text);setText("clear");Calc(mainNum1, mainNum2, opMain);isDone = true;isNokeydown = false;}}//切换正负private void changeSign(){double storNum;if (textBox1.Text.Length > 0){storNum = double.Parse(textBox1.Text); storNum *= -1;textBox1.Text = storNum.ToString();}btnEqual.Select(); //设置"="号的焦点}//设置运算类型private void setOperator(int operation){if (textBox1.Text.Length > 0){opMain = operation;mainNum1 = double.Parse(textBox1.Text); isSecond = true;isDone = false;isNokeydown = true;btnEqual.Select(); //设置"="号的焦点}}//设置小数点private void setDecimal(){if (!isDecimal){setText(".");isDecimal = true;}btnEqual.Select(); //设置"="号的焦点}//开平方private void doSquart(){double storNum;storNum = double.Parse(textBox1.Text);if (storNum > 0){storNum = Math.Sqrt(storNum);textBox1.Text = storNum.ToString();}elsetextBox1.Text = "负数不能开平方。
C面向对象程序设计标准教案(2024)
2024/1/27
34
输入输出流及文件操作
2024/1/27
std:string le, line)) { std:cout << line << std:endl;
35
输入输出流及文件操作
} inputFile.close();
2024/1/27
C面向对象程序设计标准教 案
2024/1/27
1
contents
目录
2024/1/27
• 课程介绍与目标 • C语言基础 • 面向对象程序设计原理 • C标准库及常用算法 • 实践项目:简单计算器设计 • 课程总结与展望
2
01
课程介绍与目标
2024/1/27
3
课程背景与意义
2024/1/27
C作为一种高效且通用的编程 语言,广泛应用于系统开发、 游戏开发、嵌入式系统等领域
42
项目需求分析与设计思路
设计简洁直观的界面,提供良好的用户 体验。
实现基本的四则运算功能,并考虑运算优先 级。
提供历史记录功能,方便用户查看 之前的运算结果。
2024/1/27
43
界面设计实现过程展示
输入框
用于用户输入数字和运算符。
显示区
显示运算结果和历史记录。
2024/1/27
44
界面设计实现过程展示
}
```
30
输入输出流及文件操作
1
输入输出流是C标准库中提供的一种用于处理数 据输入输出的机制。
2
C标准库提供了多种输入输出流类,如cin、cout 、fstream等,用于处理控制台输入输出和文件 操作。
3
文件操作包括打开文件、读写文件、关闭文件等 步骤,可以使用fstream类进行文件操作。
C#编写简易计算器(附源代码)超详细
超详细因为计算器设计的控件太多,不便使用控制台应用程序完成,所以这里使用Windows窗体应用程序,并命名为Calc,如下图所示:向窗体中拖入需要的控件,如下图所示:(完成效果图)结果显示区(作者博客左边的文本框)是TextBox控件,并修改其name为txtShow,按键0~9 为Button 控件,并将其name分别修改为btn_O、btn_1、btn_2、btn_3、btn_4、btn_5、btn_6、btn_7、btn_8、btn_9;按键【负数】的name值修改为btn_sign,按键【.】的name修改为btn_dot,按键【+ - * / 】的name 值分别修改为btn_add、btn_sub、btn_mul、btn_div,按键【=】的name值修改为btn_equ,按键【倒数】的name值修改为btn_rev,按键【平方】的name值修改为btn_sqr,按键【开方】的name值修改为btn_sqrt。
右边的计算器图片空间是PictureBox ,作者博客控件是LinkLabel ,可以不添加,以上所有控件均可按照需求添加,只保留自己需要的按钮控件和textbox控件即可。
三、代码部分(含解释),采用switch多分支语句编写using System;using System.Drawing;using System.Collections;using ponentModel;usingusing System.Data;namespace Calc{/// <summary>///温柔一刀C#简易计算器的实现/// </summary>public class CalcFormForm{private Button btnprivate Button btnprivate Button btnprivate Button btnprivate Button btnprivate Button btn_5;private Button btn_6;private Button btn_7;private Button btn_8;private Button btn_9;private Button btn_add;private Button btn_sub;private Button btn_mul;private Button btn_div;private Button btn_sqrt;private Button btn_sign;private Button btn_equ;private Button btn_dot;private Button btn_rev;private TextBox txtShow;private Button btn_sqr;private PictureBox pictureBox1;private LinkLabel linkLabel1;/// <summary>/// 必需的设计器变量。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
面向对象程序设计----简单计算器的设计一、问题描述简单计算器的基本功能如下:1.四则运算,例如加减乘除等;2.除了整数的运算也可实现小数的各类运算;3.判断非法操作,例如判定1/0为非法操作;4.其他特性;这个简易计算器只实现以上所述功能,即实现简单计算。
二、设计思路计算器起始运行在归零状态,此时只接受数字输入,当按下一个数字按钮时,计算器只显示用户输入第一个操作数,用户在该状态下可以继续输入数字。
1.当第一个数字输入完成后,可以接受第二个操作数。
2.在数字输入结束进行运算后,按下=按钮可以根据前面按下的操作符计算结果显示,表示计算完成。
3.在上述计算过程中都可以接受双击等号回到清零状态。
三、功能函数设计:1.数字按钮这个是通过最基本的OnButton()将0~9十个数字按钮的单击消息处理函数用类向导全部关联到此,适文本框应该只是显示当前单击的数字;2.小数点按钮函数OnDecimal这个函数主要是实现小数点在计算器的相关功能3.列表在算法的函数OnSelchangeOperatorList()这一类按钮包括“+”“-”“*”“/”,它们的单击消息在同一个处理函数中进行处理,以同样的方法把这四个按钮的单击操作关联到此函数中,使四则运算法则在列表中通过选择去实现。
4.“=”符号函数OnEnquall()实现计算器中等号的功能,双击时也可使编辑框的数字归零。
四、编码实现:int calculator_type_i;double count=10,value=0;double Input_data_int=0,Input_data_dec=0;double Inputdata1=0,Inputdata2=0;char datatostr_buffer[10];bool decimal=FALSE;以上代码是添加的全局变量,为正确获取键盘输入供所有按钮函数使用。
// TODO: Add extra initialization herem_OperatorBox.AddString("-");m_OperatorBox.AddString("*");m_OperatorBox.AddString("/");m_OperatorBox.AddString("+");以上代码是初始化列表框,并使其在程序运行时具有“加”“减”“乘”“除”可选择功能。
void CMyCalculatorDlg::On1Button(){if(decimal){Input_data_dec=Input_data_dec+1/count;count=10*count;}else Input_data_int=10*Input_data_int+1;value=Input_data_int+Input_data_dec;_gcvt(value,10,datatostr_buffer);m_ShowResultEdit=(LPCTSTR)datatostr_buffer;// TODO: Add your control notification handler code hereUpdateData(false);}void CMyCalculatorDlg::On2Button(){if(decimal){Input_data_dec=Input_data_dec+2/count;count=10*count;}else Input_data_int=10*Input_data_int+2;value=Input_data_int+Input_data_dec;_gcvt(value,10,datatostr_buffer);m_ShowResultEdit=(LPCTSTR)datatostr_buffer; // TODO: Add your control notification handler code hereUpdateData(false);}void CMyCalculatorDlg::On3Button(){if(decimal){Input_data_dec=Input_data_dec+3/count;count=10*count;}else Input_data_int=10*Input_data_int+3;value=Input_data_int+Input_data_dec;_gcvt(value,10,datatostr_buffer);m_ShowResultEdit=(LPCTSTR)datatostr_buffer;// TODO: Add your control notification handler code here UpdateData(false);}void CMyCalculatorDlg::On4Button(){if(decimal){Input_data_dec=Input_data_dec+4/count;count=10*count;}else Input_data_int=10*Input_data_int+4;value=Input_data_int+Input_data_dec;_gcvt(value,10,datatostr_buffer);m_ShowResultEdit=(LPCTSTR)datatostr_buffer;// TODO: Add your control notification handler code here UpdateData(false);}void CMyCalculatorDlg::On5Button(){if(decimal){Input_data_dec=Input_data_dec+5/count;count=10*count;}else Input_data_int=10*Input_data_int+5;value=Input_data_int+Input_data_dec;_gcvt(value,10,datatostr_buffer);m_ShowResultEdit=(LPCTSTR)datatostr_buffer;// TODO: Add your control notification handler code here UpdateData(false);}void CMyCalculatorDlg::On6Button(){if(decimal){Input_data_dec=Input_data_dec+6/count;count=10*count;}else Input_data_int=10*Input_data_int+6;value=Input_data_int+Input_data_dec;_gcvt(value,10,datatostr_buffer);m_ShowResultEdit=(LPCTSTR)datatostr_buffer;// TODO: Add your control notification handler code hereUpdateData(false);}void CMyCalculatorDlg::On7Button(){if(decimal){Input_data_dec=Input_data_dec+7/count;count=10*count;}else Input_data_int=10*Input_data_int+7;value=Input_data_int+Input_data_dec;_gcvt(value,10,datatostr_buffer);m_ShowResultEdit=(LPCTSTR)datatostr_buffer; // TODO: Add your control notification handler code here UpdateData(false);}void CMyCalculatorDlg::On8Button(){if(decimal){Input_data_dec=Input_data_dec+8/count;count=10*count;}else Input_data_int=10*Input_data_int+8;value=Input_data_int+Input_data_dec;_gcvt(value,10,datatostr_buffer);m_ShowResultEdit=(LPCTSTR)datatostr_buffer;// TODO: Add your control notification handler code hereUpdateData(false);}void CMyCalculatorDlg::On9Button(){if(decimal){Input_data_dec=Input_data_dec+9/count;count=10*count;}else Input_data_int=10*Input_data_int+9;value=Input_data_int+Input_data_dec;_gcvt(value,10,datatostr_buffer);m_ShowResultEdit=(LPCTSTR)datatostr_buffer;// TODO: Add your control notification handler code hereUpdateData(false);}void CMyCalculatorDlg::On0Button(){if(decimal){Input_data_dec=Input_data_dec+0/count;count=10*count;}else Input_data_int=10*Input_data_int+0;value=Input_data_int+Input_data_dec;_gcvt(value,10,datatostr_buffer);m_ShowResultEdit=(LPCTSTR)datatostr_buffer;// TODO: Add your control notification handler code here UpdateData(false);}void CMyCalculatorDlg::OnDecimalButton(){decimal=TRUE;// TODO: Add your control notification handler code here }void CMyCalculatorDlg::OnEqualButton(){Inputdata2=Input_data_int+Input_data_dec;decimal=FALSE;Input_data_int=0;Input_data_dec=0;count=10;switch(calculator_type_i){case 0:value=Inputdata1-Inputdata2;break;case 1:value=Inputdata1*Inputdata2;break;case 2:if(Inputdata2==0){MessageBox("除数不能为0!");break;}else{ value=Inputdata1/Inputdata2;break;}case 3:value=Inputdata1+Inputdata2;break;}_gcvt(value,10,datatostr_buffer);m_ShowResultEdit=(LPCTSTR)datatostr_buffer;UpdateData(false);}void CMyCalculatorDlg::OnChangeShowResultEdit(){// TODO: If this is a RICHEDIT control, the control will not// send this notification unless you override the CDialog::OnInitDialog() // function and call CRichEditCtrl().SetEventMask()// with the ENM_CHANGE flag ORed into the mask.// TODO: Add your control notification handler code here}void CMyCalculatorDlg::OnErrspaceShowResultEdit(){// TODO: Add your control notification handler code here}void CMyCalculatorDlg::OnSelchangeOperatorList(){Inputdata1=Input_data_int+Input_data_dec;decimal=FALSE;Input_data_int=0;Input_data_dec=0;count=10;calculator_type_i=m_OperatorBox.GetCurSel();// TODO: Add your control notification handler code here}五、运行测试截图如下:1、计算器初始状态如下:2、下面计算45+35,输入45,显示如下:3、输入“-”,然后接着输入“35”,显示如下:4、输入“=”,显示如下:六、课程设计心得做个这个课程设计,让我学习到了一些Visual C++6.0的基本使用步骤,以及对如何运用MFC 去进行应用程序的设计有一个初步的了解,此外让我从实践中掌握到了C++中类和相关函数,全局变量的应用。