VC6_C++计算器与进制转换工具设计步骤加代码
C#编写简易计算器(附源代码)超详细

超详细一、因为计算器设计的控件太多,不便使用控制台应用程序完成,所以这里使用Windows窗体应用程序,并命名为Calc,如下图所示:二、向窗体中拖入需要的控件,如下图所示:(完成效果图)结果显示区(作者博客左边的文本框)是TextBox控件,并修改其name为txtShow ,按键0~9为Button控件,并将其name分别修改为btn_0、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;using System.Windows.Forms;using System.Data;namespace Calc{///<summary>/// QQ:479340056 温柔一刀C#简易计算器的实现///</summary>public class CalcForm : System.Windows.Forms.Form{private System.Windows.Forms.Button btn_0;private System.Windows.Forms.Button btn_1;private System.Windows.Forms.Button btn_2;private System.Windows.Forms.Button btn_3;private System.Windows.Forms.Button btn_4;private System.Windows.Forms.Button btn_5;private System.Windows.Forms.Button btn_6;private System.Windows.Forms.Button btn_7;private System.Windows.Forms.Button btn_8;private System.Windows.Forms.Button btn_9;private System.Windows.Forms.Button btn_add;private System.Windows.Forms.Button btn_sub;private System.Windows.Forms.Button btn_mul;private System.Windows.Forms.Button btn_div;private System.Windows.Forms.Button btn_sqrt;private System.Windows.Forms.Button btn_sign;private System.Windows.Forms.Button btn_equ;private System.Windows.Forms.Button btn_dot;private System.Windows.Forms.Button btn_rev;private System.Windows.Forms.TextBox txtShow;private System.Windows.Forms.Button btn_sqr;private PictureBox pictureBox1;private LinkLabel linkLabel1;///<summary>///必需的设计器变量。
简易计算器C语言代码

简易四则运算计算器计算机工具地历史而言,中国古代最早采用地一种计算工具叫筹策,又叫做算筹,这种算筹多用竹子制成,也有用木头,兽骨充当材料的,大约270枚一束,放在布袋里可随身携带。
直到今天仍在使用的住算盘,是中国古代计算工具领域中的另一项发明明代时的住算盘已经与现代的住算盘几乎相同。
17世纪初,西方国家的计算工具有了较大的发展。
英国数学家纳尔发现了“纳皮尔算筹”;英国牧师奥却德发明了圆柱形对数计算尺,这种计算尺不仅能做加减乘涂,乘方和开方运算,甚至可以计算三角函数,指数函数和对数函数。
这些计算工具不仅带动了计算的发展,也为现代计算器发展尊定了良好的基础,成为现代社会应用广泛的计算工具,如手机,操作系统上附带的多功能计算器。
项目设计目的掌握模块的划分;掌握结构体定义;掌握栈的操作;掌握函数的定义;掌握栈的基本操作;掌握VC的基本绘图库;掌握鼠标的响应操作;目设计内容设计一个含有界面的计算器,输入一个包含括号的表达式,使用栈数据类型实现整数的四则运算操作,开方运算。
项目设计要求根据分析,系统要求实现以下几点基本功能:可通过按钮输入数字、运算符;能通过按钮实现退格、清除功能;实现加、减、乘、除、开方运算功能;实现括号运算;显示运算结果;良好的交互界面。
项目详细设计功能模块图根据系统功能要求,主要含有四大模块,分别是计算器界面设计模块、计算器按键控制模块、四则混合运算模块、计算器记忆处理模块。
计算器界面设计模块:调用VC图形系统函数和字符函数画出计算器的界面,包括24个按钮和一个文本输入框。
计算机按键控制模块:计算器通过键盘按键值的判断,执行相应的操作,如接收数字输入等。
计算器计算处理模块。
计算处理模块主要完成可以包括括号的表达式运算,运算包括加,减,乘,除、开方。
计算处理模块在按键控制模块中被调用执行。
处理模块是通过栈来实现的,分别定义了两个顺序栈,一个用来存放操作符栈,一个用来存放操作数栈。
计算器记忆处理模块。
数据结构—进制转换完整C语言代码

#define TRUE 1
#define FALSE 0
#define OK 0
#define ERROR -1
typedef struct SNode{
int data;
struct SNode *next;
}SNode;
typedef struct{
int length;
SNode *top;
S->top=p;S->length++;
return OK;
}
int Pop(STACK *S,int *e){
SNode *p;
if(S->top==NULL) return ERROR;
p=S->top;*e=p->data;
S->top=p->next;S->length--;
return OK;
else printf("%d",*e);
}
}
/*本程序使用栈的顺序表示法,本人自己编写并已在turbo c中调试,100%可正确运行,若移植到VC6.0环境中,只需修改部分即可*/
/*THE END*/
/*以下为链栈实现方式*/
#include <stdio.h>
#include <stdlib.h>
{
Push(&S,m%n);
m=m/n;
}
printf("the arranged NO. is:");
while(!Empty(S))
{
Pop(&S,e);
if(*e>9) printf("%c",*e+'A'-10);
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);```注意,我们在读取运算符之前添加了空格,这是为了消除输入缓冲区中可能残留的换行符等字符。
接下来,我们需要编写代码来进行实际的计算操作。
进制转换器小程序的程序设计及代码示例

进制转换器小程序的程序设计及代码示例一、介绍进制转换器是一种常见的工具程序,它可以将不同进制的数字相互转换,例如将二进制转换为十进制,十进制转换为八进制等。
本文将会介绍进制转换器小程序的程序设计思路以及代码示例。
二、程序设计思路1. 用户界面设计:进制转换器小程序的用户界面应该简洁明了。
可以通过输入框让用户输入待转换的数字,再通过下拉列表或选项按钮让用户选择待转换的进制类型。
最后,通过一个文本框或文本标签来显示转换结果。
2. 进制转换算法:根据用户选择的进制类型,将输入的数字应用对应的转换算法进行转换。
常见的进制转换算法包括二进制转十进制、十进制转二进制、十进制转八进制、十进制转十六进制等。
3. 错误处理:在用户输入数字时,需要进行有效性检查,确保用户输入的内容符合要求。
若输入不合法,应给出相应的错误提示信息。
三、代码示例下面是一个简单的进制转换器小程序的代码示例,使用Python语言编写:```pythonfrom tkinter import *def convert():input_num = input_entry.get()input_base = base_var.get()try:if input_base == "二进制":output_num = str(int(input_num, 2))elif input_base == "八进制":output_num = str(int(input_num, 8))elif input_base == "十进制":output_num = str(int(input_num, 10))elif input_base == "十六进制":output_num = str(int(input_num, 16))output_label.configure(text="转换结果:" + output_num)except ValueError:output_label.configure(text="输入无效!请检查输入内容。
VC++计算器与进制转换工具设计

VC++计算器与进制转换工具设计长春理工大学电子信息工程学院1004112班33号李鹤男VC++计算器与进制转换工具设计一、总体设计1、功能说明VC++计算器与进制转换工具设计的设计按软件工程的方法进行,系统具有良好的界面;必要的交互信息;简约美观的效果。
即时准确地获得需要的计算的结果,充分降低了数字计算的难度和节约了时间,对人们的生活有一定的帮助。
(1)包含的功能有:加、减、乘、除运算,开方、平方,三角函数等功能。
(2)给对话框添加菜单。
(3)计算功能基本上是用系统内部函数。
(4)程序可以能自动判断输入数据的正确性,不出现多于一个小数点、以0开头等不正常现象。
(5)“A C”按钮可以清除所有已输入的数据从头计算。
二、软件设计1、计算器工程创建(1)打开Microsoft Visual C++ 6.0,在文件中点击新建,在弹出框内选择MFC AppWizard[exe]工程,输入工程名02exam62及其所在位置点击确定,如图1所示。
图1新建MFC AppWizard工程(2)将弹出MFC AppWizard-step 1对话框,选择基本对话框点击完成,如图2所示。
图2基本对话框(3)这样,MFC AppWizard就建立了一个基于对话窗口的程序框架,如图3所示。
图3基本对话窗口2、计算器开发步骤(1)创建控件在资源视图ResourceView中,选择Dialog中ID为IDD_MY_DIALOG的对话框,删除对话框上已有的控件。
然后利用控件工具箱,按照图4所示在该对话框上添加控件图4Edit属性对话框(2)各个控件的属性设置如表图5Push Button属性(3)计算器界面布局完成之后,双击各个按钮,添加消息响应函数,如按钮1的消息函数添加如图6所示双击按钮1即可图6添加消息函数(4)修改编辑框Edit的ID为:IDC_EDIT_INPUT。
按下“Ctrl+W”弹出ClassWizard对话框,在该对话框属性页MemberVariables上,选择IDC_EDIT_INPUT控件,利用Add Variables 增加两个变量如图7所示图7添加变量(5)在CMyDlg的头文件中定义变量,代码如下public:enum CACU_TYPE {ADD=0,SUB,MUL,DIV,NOTYPE};CACU_TYPE m_curType;bool m_bNextNumber; //判断是否是参与运算的第二个数float m_PreData; //保存参与运算的第一个数(6)在ClassView中,利用鼠标选中“CMyDlg”,按下鼠标右键弹出如图8所示对话框,点击Add Member Function 增加成员函数,函数具体声明如图9所示图8选择增加成员函数图9添加函数(7)为刚增加的SetInfo函数添加函数定义,代码如下void CMyDlg::SetInfo(char c){if(m_bNextNumber)m_editCurData.SetWindowText("");m_bNextNumber = false;CString str;m_editCurData.GetWindowText(str); //得到的是字符串类型if(str=="0") //单独只有一个零时,要先把零去掉str="";str+=c;m_editCurData.SetWindowText(str);}(8)为函数OnButton1()~OnButton9()依次添加代码,如下所示(数字1-9)void CMyDlg::OnButton1(){SetInfo('1');}······void CMyDlg::OnButton9(){SetInfo('9');}(9)为函数OnButton10()添加代码如下void CMyDlg::OnButton10(){if(m_bNextNumber)m_editCurData.SetWindowText("");m_bNextNumber = false;CString str;m_editCurData.GetWindowText(str);if(str!="0") //不是单个零的时候,即前面有数字,则在后面加零;否则是单个零时,就不变化,保持单个零str+='0';m_editCurData.SetWindowText(str);}(10)为函数OnButtonDot添加代码如下(小数点)void CMyDlg::OnButtonDot(){CString str;m_editCurData.GetWindowText(str);if(str.Find('.')==-1) //输入数中,没有找到小数点,可以加入一个小数点,如果有小数点,就不能再加了str+='.';m_editCurData.SetWindowText(str);}(11)为函数OnButtonAc()添加代码如下(清零)void CMyDlg::OnButtonAc(){m_CurData=0;m_PreData=0;m_curType = NOTYPE;UpdateData(FALSE);}(12)为函数OnButtonAdd( )添加代码如下(加)void CMyDlg::OnButtonAdd(){UpdateData(TRUE);//取回控件上的变量m_PreData = m_curData;m_bNextNumber = TRUE;m_curType = ADD;}(13)为函数OnButtonSub( )添加代码如下(减)void CMy02exam62Dlg::OnButtonSub(){// TODO: Add your control notification handler code hereUpdateData(TRUE);//取回控件上的变量m_PreData = m_CurData;m_bNextNumber = TRUE;m_curType = SUB;}(14)为函数OnButtonMul( )添加代码如下(乘)void CMy02exam62Dlg::OnButtonMul(){// TODO: Add your control notification handler code here UpdateData(TRUE);//取回控件上的变量m_PreData = m_CurData;m_bNextNumber = TRUE;m_curType = MUL;}(15)为函数OnButtonDiv( )添加代码如下(除)void CMy02exam62Dlg::OnButtonDiv(){// TODO: Add your control notification handler code here UpdateData(TRUE);//取回控件上的变量m_PreData = m_CurData;m_bNextNumber = TRUE;m_curType = DIV;}(16)为函数OnButtonSin( )添加代码如下(正弦)void CMy02exam62Dlg::OnButtonSin(){// TODO: Add your control notification handler code here UpdateData(TRUE);//取回控件上的变量m_PreData = m_CurData;m_bNextNumber = TRUE;m_curType = SIN;}(17)为函数OnButtonCos( )添加代码如下(余弦)void CMy02exam62Dlg::OnButtonCos(){// TODO: Add your control notification handler code here UpdateData(TRUE);//取回控件上的变量m_PreData = m_CurData;m_bNextNumber = TRUE;m_curType = COS;}(18)为函数OnButtonTan( )添加代码如下(正切)void CMy02exam62Dlg::OnButtonXy(){// TODO: Add your control notification handler code here UpdateData(TRUE);//取回控件上的变量m_PreData = m_CurData;m_bNextNumber = TRUE;m_curType = TAN;}(19)为函数OnButtonKf( )添加代码如下(开方)void CMy02exam62Dlg::OnButtonKf(){// TODO: Add your control notification handler code here UpdateData(TRUE);//取回控件上的变量m_PreData = m_CurData;m_bNextNumber = TRUE;m_curType = KF;}(20)为函数OnButtonPF( )添加代码如下(平方)void CMy02exam62Dlg::OnButtonPf(){// TODO: Add your control notification handler code here UpdateData(TRUE);//取回控件上的变量m_PreData = m_CurData;m_bNextNumber = TRUE;m_curType = PF;}(21)为函数OnButtonBack( )添加代码如下(退格)void CMy02exam62Dlg::OnButtonBack(){// TODO: Add your control notification handler code here if(m_bNextNumber)m_editCurData.SetWindowText("");m_bNextNumber = false;CString str;m_editCurData.GetWindowText(str);str = str.Left(str.GetLength() - 1);if(str == "")str ='0';m_editCurData.SetWindowText(str);}(22)为函数OnButtonEqual ( )添加代码如下(等于)void CMy02exam62Dlg::OnButtonQueal(){// TODO: Add your control notification handler code here UpdateData(TRUE);// 取回参与运算的第二个变量switch(m_curType){case ADD:m_CurData = m_PreData + m_CurData;break;case SUB:m_CurData = m_PreData - m_CurData;break;case MUL:m_CurData = m_PreData * m_CurData;break;case DIV:m_CurData = m_PreData / m_CurData;break;case KF:m_CurData = m_CurData * m_CurData;break;case PF:m_CurData = sqrt(m_CurData);break;case SIN:m_CurData = m_CurData * 3.1415926/180;m_CurData = sin(m_CurData);break;case COS:m_CurData = m_CurData * 3.1415926/180;m_CurData = cos(m_CurData);break;case TAN:m_CurData = m_CurData * 3.1415926/180;m_CurData = tan(m_CurData);break;};UpdateData(FALSE);(23)编译运行程序,实现加法,减法、乘法及除法,正弦,余弦,正切,开方,平方,退格,清零功能,完成简易计算器3、进制转换工具设计步骤(1)打开Microsoft Visual C++ 6.0,在文件中点击新建,在弹出框内选择Win32 Console Application 工程,输入工程名02exam62及其所在位置点击确定,如图10所示图10选择工程(2)将弹出Win32 Console Application 1对话框,选择Hello Word点击完成,如图11所示。
c语言进制的转换

c语言进制的转换C语言进制的转换一、引言在计算机科学领域中,进制是一个非常重要的概念。
而在C语言中,进制的转换是一项常见的操作。
本文将深入探讨C语言中的进制转换,包括二进制、八进制和十六进制之间的转换,并讨论其应用场景和实际用途。
二、二进制转换二进制是计算机中最基本的进制,由0和1两个数字组成。
在C语言中,使用前缀"0b"来表示二进制数。
例如,二进制数"1010"可以用C语言表示为0b1010。
要将二进制数转换为十进制数,只需按权展开法计算即可。
例如,二进制数"1010"转换为十进制数的计算过程为:(1 * 2^3) + (0 * 2^2) + (1 * 2^1) + (0 * 2^0) = 8 + 0 + 2 + 0 = 10三、八进制转换八进制是基于8个数字(0-7)的进制。
在C语言中,使用前缀"0"来表示八进制数。
例如,八进制数"12"可以用C语言表示为012。
要将八进制数转换为十进制数,同样使用权展开法进行计算。
例如,八进制数"12"转换为十进制数的计算过程为:(1 * 8^1) + (2 * 8^0) = 8 + 2 = 10四、十六进制转换十六进制是基于16个数字(0-9, A-F)的进制。
在C语言中,使用前缀"0x"来表示十六进制数。
例如,十六进制数"1A"可以用C语言表示为0x1A。
要将十六进制数转换为十进制数,同样使用权展开法进行计算。
其中,A对应10,B对应11,以此类推。
例如,十六进制数"1A"转换为十进制数的计算过程为:(1 * 16^1) + (10 * 16^0) = 16 + 10 = 26五、进制转换的应用场景进制转换在计算机科学中具有广泛的应用场景。
其中,二进制转换为十进制常见于计算机内部数据的表示和处理过程中。
c语言进制转换算法代码

c语言进制转换算法代码c语言的进制转换是研究计算机原理时非常重要的知识,它能够帮助我们更有效更准确的记录信息和处理计算问题。
下面我们就来介绍c语言中进制转换的基本算法代码:一、进制转换的基本步骤1. 确定源进制和目标进制,比如从十进制转换为八进制、十六进制;2. 将源进制数据转换为相应的目标进制数据,比如8进制转换为10进制;3. 将转换后的目标进制数据输出到屏幕或者其他输出设备中。
二、c语言进制转换算法代码1. 八进制转换为十进制:long octalToDecimal(long n){long dec_value = 0; // 十进制数int i = 0;while(n != 0){dec_value += (n%10) * pow(8,i);n = n/10;i++;}return dec_value;}2. 十进制转换为八进制:long DecimalToOctal(long n) {int i=1;long octal_value=0;while (n!=0){octal_value+=(n%8)*i;n/=8;i*=10;}return octal_value;}3. 八进制转换为十六进制:long octalToHexadecimal(long n) {long dec_value = 0; // 十进制数int base = 1;while (n != 0){long temp = n % 10;dec_value += temp * base;n = n / 10;base = base * 8;}// 将十进制数转换为十六进制long rem;long hex_value = 0; // 十六进制数long i = 1;while (dec_value != 0){rem = dec_value % 16;hex_value = hex_value+ rem*i;dec_value = dec_value / 16;i = i * 10;}return hex_value;}4. 十进制转换为十六进制:long DecToHex(long n){long rem,hex=0, i=1;while(n!=0){rem = n % 16;hex = hex + rem * i;n /= 16;i *= 10;}return hex;}总结:以上就是c语言中进制转换的基本算法代码,深入理解这些程序的运行原理,能够帮助我们更深入了解编程的基本原理,也为我们后续c编程奠定更良好的基础。
c++ 常见进制转换代码

c++ 常见进制转换代码《C常见进制转换代码》进制转换是计算机科学中常见的问题之一,不同进制之间进行转换可以使用不同的算法和代码实现。
在C语言中,我们可以使用一些基本的运算符和函数来实现常见进制之间的转换。
一、二进制转十进制二进制转十进制是进制转换中最基本的一种,可以使用除法和取余数的方法来实现。
以下是一个简单的C代码实现:```c#include<stdio.h>intbinaryToDecimal(charbinary[]){intdecimal=0,i=0;while(binary[i]!='\0'){if(binary[i]=='1'){decimal+=(int)pow(2,i);}i++;}returndecimal;}```这个函数接受一个二进制字符串作为参数,返回对应的十进制数值。
首先,我们使用一个循环遍历二进制字符串中的每个字符,如果该字符是'1',则将当前的十进制值加上2的幂次方(即2的i次方)。
最后返回得到的十进制数值。
二、十进制转二进制十进制转二进制可以使用除法和取余数的方法来实现。
以下是一个简单的C代码实现:```c#include<stdio.h>voiddecimalToBinary(intdecimal){intremainder=decimal%2;while(decimal!=0){decimal/=2;printf("%d",remainder);remainder=decimal%2;}}```这个函数接受一个十进制整数作为参数,并输出对应的二进制字符串。
我们使用一个循环不断将十进制整数除以2,每次得到余数,并输出。
最后得到的结果就是对应的二进制字符串。
三、其他进制转十进制除了二进制和十进制之间的转换,其他进制之间也可以进行转换。
比如八进制和十进制之间的转换可以使用类似于二进制转十进制的算法,只不过需要使用八进制的幂次方。
c++进制转化代码

c++进制转化代码下面是一个示例的 C++ 代码,用于进行不同进制之间的转换:```cpp#include <iostream>using namespace std;// 十进制转二进制string decimalToBinary(int decimal) {string binary = "";while (decimal > 0) {binary += to_string(decimal % 2);decimal /= 2;}return reverse(binary);}// 十进制转八进制string decimalToOctal(int decimal) {string octal = "";while (decimal > 0) {octal += to_string(decimal % 8);decimal /= 8;}return reverse(octal);}// 十进制转十六进制string decimalToHexadecimal(int decimal) {string hexadecimal = "";while (decimal > 0) {if (decimal % 16 < 10) {hexadecimal += to_string(decimal % 16);} else {hexadecimal += char('A' + decimal % 16 - 10);}decimal /= 16;}return reverse(hexadecimal);}// 二进制转十进制int binaryToDecimal(string binary) {int decimal = 0;for (int i = 0; i < binary.size(); i++) {decimal += (binary[i] - '0') * pow(2, binary.size() - 1 - i);}return decimal;}// 八进制转十进制int octalToDecimal(string octal) {int decimal = 0;for (int i = 0; i < octal.size(); i++) {decimal += (octal[i] - '0') * pow(8, octal.size() - 1 - i);}return decimal;}// 十六进制转十进制int hexadecimalToDecimal(string hexadecimal) {int decimal = 0;for (int i = 0; i < hexadecimal.size(); i++) {if (hexadecimal[i] >= '0' && hexadecimal[i] <= '9') {decimal += (hexadecimal[i] - '0') * pow(16, hexadecimal.size() -1 - i);} else if (hexadecimal[i] >= 'A' && hexadecimal[i] <= 'F') {decimal += (hexadecimal[i] - 'A' + 10) * pow(16, hexadecimal.size() - 1 - i);}}return decimal;}// 主函数int main() {int decimalNumber;cout << "请输入一个十进制数: ";cin >> decimalNumber;cout << "十进制数" << decimalNumber << " 转换为二进制为: " << decimalToBinary(decimalNumber) << endl;cout << "十进制数" << decimalNumber << " 转换为八进制为: " << decimalToOctal(decimalNumber) << endl;cout << "十进制数" << decimalNumber << " 转换为十六进制为: " << decimalToHexadecimal(decimalNumber) << endl;string binaryNumber, octalNumber, hexadecimalNumber;cout << "请输入一个二进制数: ";cin >> binaryNumber;cout << "二进制数" << binaryNumber << " 转换为十进制为: " << binaryToDecimal(binaryNumber) << endl;cout << "请输入一个八进制数: ";cin >> octalNumber;cout << "八进制数" << octalNumber << " 转换为十进制为: " << octalToDecimal(octalNumber) << endl;cout << "请输入一个十六进制数: ";cin >> hexadecimalNumber;cout << "十六进制数 " << hexadecimalNumber << " 转换为十进制为: " << hexadecimalToDecimal(hexadecimalNumber) << endl;return 0;}```在上述代码中,我们定义了三个函数 `decimalToBinary`、`decimalToOctal` 和`decimalToHexadecimal`,用于将十进制数转换为二进制、八进制和十六进制数。
VC6.0制作简易计算器MFC[整理]
![VC6.0制作简易计算器MFC[整理]](https://img.taocdn.com/s3/m/7cf2c93fbc64783e0912a21614791711cc797937.png)
1、单击File(文件)菜单,选中New(新建),创建新工程。
2、选择工程栏中MFC AppWizard[exe]应用程序,并命名工程名称为calculator.(如图)3、选择MFC应用程序为“基于对话框”类型,其他选项默认。
单击完成(如图)4、修改界面。
经过前3步骤,VC6.0生成的工作界面如图所示。
先将对话框中的“TODO:在这里设置对话控制”静态文字控件和“确定”按钮控件删除,再使用工具箱将界面拖动控件修改为如图所示的界面。
该图所示是使用工具箱的控件拖放制作的计算器初始界面。
由于这些控件都有默认的名字,所以我们要对控件进行改名,右击Button1按钮,选中Properties(属性)选项以修改控件的属性,如图所示。
在弹出的对话框中,将Button1按钮的Caption(标题)属性修改为“+”,此时初始界面同时变成相应的“+”如下图所示。
修改后的界面如图所示,控件的Caption属性就是控件显示出来的值。
按照前文所讲述的方式,将界面上的按钮控件和静态文本控件的Caption属性都做相应的修改,修改后的界面如图所示。
5、为Edit(编辑)控件添加类的成员变量。
首先,右击Edit控件,选择ClassWizard(建立类向导)选项,如下图所示。
在弹出的对话框中,选择上方MemberVariables选项卡,选中DIC_EDIT1,然后单击单击右侧的Add Variable按钮,如图所示。
单击Add Variable按钮后会跳出,如图所示的对话框,该对话框是设置成员变量的命名和数据类型,在此可以命名为m_data1.注意:控件的ID只是标记一个控件,程序中不能直接控制ID,只能通过修改变量来改变控件的状态。
00相应的,再将另外两个Edit控件命名,本项目就将这3个Edit控件命名为:●IDC_EDIT1:m_data1,类型为double.●IDC_EDIT2:m_data2,类型为double.●IDC_EDIT3:m_result,类型为double.6、添加按钮控件的消息处理函数。
VC++制作一个入门的计算器软件

VC++整理入门计算器本文档是运用VC++6.0整理一个入门计算器的过程。
由于时间和知识技能原因,只能简单的做一个入门级的计算器(只实现加减乘除功能),以后的内容再追加。
一、建立工程启动VC++6.0,然后“文件”新建一个工程,选择“MFC AppWizard(exe)”选项,输入工程名,确定。
(如下图)弹出“MFC应用程序向导-步骤1”选择“基本对话框”,语言选“中文”,点击完成。
在弹出的控件界面,把按钮先删除。
二、设计计算器界面根据自己的喜好设计计算器的界面,(下图是我设计的简易的界面)。
用控件里面的布局计算器的界面,修改按钮显示,先右击要修改的按钮,选择“属性”,修改对应的“标题”。
按钮设计好之后,设置对应的类,加减乘除四个运算符分别如下设置,右击选“建立类向导”,在“Message Maps”选项内,选对应的“IDC_BUTTON1”,设置Messages:BN_CLICKED,然后“Add Function”,一次选择其他三个按钮,按确定。
(如下图)编辑框如下类,同样是右击编辑框,右击选“建立类向导”,选择第二个选项,选择IDC_EDIT1,然后选Add Variable...,在弹出的对话框中名字中输入m_num1,类型选数字Double,对应设置剩下的编辑框,然后确定。
下一步是输入代码。
三、代码的输入双击“+”按钮,然后点击确定,在对应的代码语句中输入下面的语句:void CMyDlg::OnButton1(){UpdateData(1);m_num3=m_num1+m_num2;UpdateData(0);}双击“-”按钮,然后点击确定,在对应的代码语句中输入下面的语句:void CMyDlg::OnButton2(){UpdateData(1);m_num3=m_num1-m_num2;UpdateData(0);}双击“X”按钮,然后点击确定,在对应的代码语句中输入下面的语句:void CMyDlg::OnButton3(){UpdateData(1);m_num3=m_num1*m_num2;UpdateData(0);}双击“/”按钮,然后点击确定,在对应的代码语句中输入下面的语句:void CMyDlg::OnButton4(){UpdateData(1);if(m_num2==0)MessageBox("除数不能为0,请重新输入除数!");elsem_num3=m_num1/m_num2;UpdateData(0);}四:测试到此软件设置完成,运行看看。
计算器c语言代码

计算器c语言代码计算器C语言代码计算器是一种常见的工具,用于进行数值计算和数学运算。
计算器通常具有基本的四则运算功能,可以执行加法、减法、乘法和除法运算,同时还可以进行其他高级计算,比如开方、求幂、取余等。
在本文中,我们将介绍如何使用C语言编写一个简单的计算器。
我们需要定义计算器的基本功能。
我们可以使用函数来实现不同的计算操作。
下面是一个示例代码,实现了加法、减法、乘法和除法四种功能:```c#include <stdio.h>// 加法函数double add(double a, double b) {return a + b;}// 减法函数double subtract(double a, double b) {return a - b;}// 乘法函数double multiply(double a, double b) { return a * b;}// 除法函数double divide(double a, double b) { if (b == 0) {printf("除数不能为零!\n"); return 0;}return a / b;}int main() {double num1, num2;char operator;printf("请输入两个操作数:");scanf("%lf %lf", &num1, &num2); printf("请输入操作符:");scanf(" %c", &operator);switch (operator) {case '+':printf("结果:%lf\n", add(num1, num2));break;case '-':printf("结果:%lf\n", subtract(num1, num2));break;case '*':printf("结果:%lf\n", multiply(num1, num2));break;case '/':printf("结果:%lf\n", divide(num1, num2));break;default:printf("无效的操作符!\n");break;}return 0;}```在上面的代码中,我们使用了四个函数来实现不同的计算操作。
C语言实现进制转换函数的实例详解

C语言实现进制转换函数的实例详解进制转换是计算机程序中常见的操作之一,主要用于将一个进制表示的数值转换为另一个进制表示。
C语言是一门高级编程语言,也提供了一些函数和方法来实现进制转换操作。
下面将详细介绍如何在C语言中实现进制转换函数的例子。
首先,我们需要定义一个函数来实现进制转换操作。
该函数将接受三个参数:待转换的数值、待转换的进制和目标进制。
然后,该函数将返回转换后的结果。
以下是一个例子程序,用于将一个十进制数值转换为二进制、八进制和十六进制表示。
```c#include <stdio.h>#include <stdlib.h>char* decToBin(int value)char* binary = (char*)malloc(32 * sizeof(char));itoa(value, binary, 2);return binary;char* decToOct(int value)char* octal = (char*)malloc(12 * sizeof(char));itoa(value, octal, 8);return octal;char* decToHex(int value)char* hexadecimal = (char*)malloc(8 * sizeof(char)); itoa(value, hexadecimal, 16);return hexadecimal;int maiint value = 255;char* binary = decToBin(value);printf("Binary: %s\n", binary);free(binary);char* octal = decToOct(value);printf("Octal: %s\n", octal);free(octal);char* hexadecimal = decToHex(value);printf("Hexadecimal: %s\n", hexadecimal);free(hexadecimal);return 0;```该程序包括三个进制转换函数:`decToBin`、`decToOct`和`decToHex`。
C语言的进制转换及算法实现教程

C语⾔的进制转换及算法实现教程1、其他进制转⼗进制1.1、⼆进制转⼗进制转换规程:从最低位开始,将每个位上的数提取出来,乘以2的(位数-1)次⽅,然后求和,例如:⼆进制 1011 = 1*2^0 + 1*2^1 + 0*2^2 + 1*2^3 = 1 + 2 + 0 + 8 = 111.2、⼋制转⼗进制转换规则:从最低位开始,将每个位上的数提取出来,乘以8的(位数-1)次⽅,然后求和,例如:⼋进制 0123 = 3*8^0 + 2*8^1 + 1*8^2 = 3+16+64 = 831.3、⼗六进制转⼗进制转换规则:从最低位开始,将每个位上的数提取出来,乘以16的(位数-1)次⽅,然后求和,例如:⼗六进制 0x34A = 10*16^0 + 4*16^1 + 3*16^2 = 10+64+768 = 8422、⼗进制转其他进制2.1、⼗进制转⼆进制binary规则:将该数不断除以2,直到商为0为⽌,然后将每步得到的余数倒过来,就是对应的⼆进制,故此法叫做除商逆序取余法;案例:将56转换为⼆进制56 :56 / 2 = 28 余028 / 2 = 14 余014 / 2 = 7 余07 / 2 = 3 余13 / 2 = 1 余11 /2 = 0余 1故56转换为⼆进制的结果是:111000代码实现:#include <stdio.h>//转⼗进制⼆进制void main() {printf("请输⼊⼀个⼗进制数:");int binary = 0; //⼆进制数int b = 1; //循环标志int num[100] ; //⽤来存⼆进制的数组int index = 0; //数组的下标int count = -1; //⽤来计算数组的使⽤个数,这⾥使⽤-1是因为数组的下标是从0开始的//所以当我们循环⼀次去⾃增的时候,第⼀次应该是从0开始,如果count的初始值是0的话//就会导致使⽤的第⼀个数组的下标为1,那样会导致存数据的下标index和记录使⽤的下标count不⼀致//使数据溢出scanf("%d",&binary);while (b) {num[index] = binary % 2; //每次运算取余binary /= 2; //每次运算⼆进制数需要除以2//printf("num[%d]=%d\n",index,num[index]);index++; //每循环⼀次数组下标就移⼀位count++; //每循环⼀次就表⽰占⽤了数组的⼀个位置if (binary == 0) {b = 0;}}printf("占⽤数组位置%d个",count+1);printf("\n");printf("⼆进制数为:");for (int i = count; i >=0; i--) {printf("%d",num[i]);}getchar();getchar();//回车会被接收,所以需要两个来暂停控制台}2.2、⼗进制转⼋进制octonary规则:将该数不断除以8,直到商为0,然后将每步得到的余数倒过来,就是对应的⼋进制。
c语言各进制转换方法

二进制,八进制,十进制,十六进制之间的转换算法一、十进制与二进制之间的转换(1)十进制转换为二进制,分为整数部分和小数部分①整数部分方法:除2取余法,即每次将整数部分除以2,余数为该位权上的数,而商继续除以2,余数又为上一个位权上的数,这个步骤一直持续下去,直到商为0为止,最后读数时候,从最后一个余数读起,一直到最前面的一个余数。
下面举例:例:将十进制的168转换为二进制得出结果将十进制的168转换为二进制,(10101000)2分析:第一步,将168除以2,商84,余数为0。
第二步,将商84除以2,商42余数为0。
第三步,将商42除以2,商21余数为0。
第四步,将商21除以2,商10余数为1。
第五步,将商10除以2,商5余数为0。
第六步,将商5除以2,商2余数为1。
第七步,将商2除以2,商1余数为0。
第八步,将商1除以2,商0余数为1。
第九步,读数,因为最后一位是经过多次除以2才得到的,因此它是最高位,读数字从最后的余数向前读,即10101000(2)小数部分方法:乘2取整法,即将小数部分乘以2,然后取整数部分,剩下的小数部分继续乘以2,然后取整数部分,剩下的小数部分又乘以2,一直取到小数部分为零为止。
如果永远不能为零,就同十进制数的四舍五入一样,按照要求保留多少位小数时,就根据后面一位是0还是1,取舍,如果是零,舍掉,如果是1,向入一位。
换句话说就是0舍1入。
读数要从前面的整数读到后面的整数,下面举例:例1:将0.125换算为二进制得出结果:将0.125换算为二进制(0.001)2分析:第一步,将0.125乘以2,得0.25,则整数部分为0,小数部分为0.25;第二步, 将小数部分0.25乘以2,得0.5,则整数部分为0,小数部分为0.5;第三步, 将小数部分0.5乘以2,得1.0,则整数部分为1,小数部分为0.0;第四步,读数,从第一位读起,读到最后一位,即为0.001。
例2,将0.45转换为二进制(保留到小数点第四位)大家从上面步骤可以看出,当第五次做乘法时候,得到的结果是0.4,那么小数部分继续乘以2,得0.8,0.8又乘以2的,到1.6这样一直乘下去,最后不可能得到小数部分为零,因此,这个时候只好学习十进制的方法进行四舍五入了,但是二进制只有0和1两个,于是就出现0舍1入。
c语言二进制十进制十六进制转换计算

C语言是一种高级编程语言,它具有丰富的数学计算功能,其中包括二进制、十进制和十六进制之间的转换计算。
本文将重点介绍C语言中如何进行二进制、十进制和十六进制之间的转换计算,以及其相关的方法和注意事项。
一、二进制、十进制和十六进制的概念及表示方法1. 二进制二进制是一种基数为2的数制,它只包含0和1两个数字。
在C语言中,二进制数通常以0b或0B开头表示,例如0b1010表示十进制的10。
2. 十进制十进制是我们常用的数制,基数为10,包含了0到9这10个数字。
在C语言中,十进制数直接以数字形式表示,例如123表示十进制的123。
3. 十六进制十六进制是一种基数为16的数制,它包含0到9这10个数字以及A 到F这6个英文字母,分别对应10到15。
在C语言中,以0x或0X 开头表示十六进制数,例如0x1A表示十进制的26。
二、二进制与十进制的转换计算方法1. 二进制转十进制二进制转换为十进制可以使用加权法,即将二进制数从右向左依次乘以2的幂次方,然后将结果相加。
1010转换为十进制的计算过程为:1*2^3 + 0*2^2 + 1*2^1 + 0*2^0 = 10。
2. 十进制转二进制十进制转换为二进制可以使用除2取余法,即将十进制数不断除以2,将每次的余数倒序排列即可得到二进制数。
26转换为二进制的计算过程为:26÷2=13……0,13÷2=6……1,6÷2=3……0,3÷2=1……1,1÷2=0……1,倒序排列得到xxx。
三、十六进制与十进制的转换计算方法1. 十六进制转十进制十六进制转换为十进制可以使用加权法,即将十六进制数从右向左依次乘以16的幂次方,然后将结果相加。
1A转换为十进制的计算过程为:1*16^1 + A*16^0 = 26。
2. 十进制转十六进制十进制转换为十六进制可以使用除16取余法,即将十进制数不断除以16,将每次的余数倒序排列,A对应10,B对应11,依次类推,直到商为0即可得到十六进制数。
C语言课程设计-进制转换

沈阳航空航天大学课程设计报告课程设计名称:C语言课程设计课程设计题目:二、八、十、进制转换程序院(系):计算机学院专业:计算机科学与技术(物联网方向) 班级:34010105学号:姓名:指导教师:完成日期:2014年3月7日沈阳航空航天大学课程设计报告目录第1章需求设计 (1)1.1课程设计任务 (1)1.2设计环境与开发语言 (2)第2章程序设计 (3)2.1概要设计 (3)2.1.1总体模块图 (3)2.1.2函数 (3)2.2详细设计 (4)第3章程序调试分析 (13)3.1出现的错误 (13)3.2运行的结果 (13)第4章用户手册 (15)4.1程序功能 (15)4.2存在的缺陷 (15)参考文献 (16)附录(程序清单) (17)第1章需求设计1.1 课程设计任务设计一个简单的程序,可以实现以下各进制之间的转换。
1.因为要进行进制间的6次转换所以要采用switch语句有选择的进行进制转换程序。
2.二进制到八进制;直接将二进制转化为八进制需要三位一截取不足三位补零,较为麻烦所以采用先将二进制转化为十进制再转化为八进制的方法解决问题。
二进制转化为十进制将输入的二进制数存入字符数组中,存入多少位数,求出相应位数2的幂次再乘以1或0将每一位对应得到的十进制数累加,即可得到相应的十进制数。
将十进制数转化为八进制数,将0到7存到一个字符数组中判断输入的数是否大于7若大于7,则将该数除8,再次进行判断,直到输入的数小于等于7,输出该数对8取余数对应的一维数组中的字符,即可得到八进制数。
3.二进制到十进制;二进制转化为十进制将输入的二进制数存入字符数组中,存入多少位数,求出相应位数2的幂次再乘以1或0将每一位对应得到的十进制数累加,即为十进制数。
4.二进制到十六进制;与二进制转化为八进制类似,先将二进制转化为十进制。
再将十进制数转化为十六进制数,将0到9,A到F存到一个字符数组中判断输入的数是否大于15若大于15,则将该数除16,再次进行判断,直到输入的数小于等于15,输出该数对16取余数对应的一维数组中的字符,即可得到十六进制数。
CC++算法进制转换超详细

CC++算法进制转换超详细16转10⽤竖式计算:16进制数的第0位的权值为16的0次⽅,第1位的权值为16的1次⽅,第2位的权值为16的2次⽅第0位: 5 * 16^0 = 5第1位: F * 16^1 = 240第2位: A * 16^2= 2560第3位: 2 * 16^3 = 8192-代码#include <iostream>#include <string>using namespace std;int main() {string s;while(cin>>s){int length=s.length();long long sum=0;for(int x=0;x<length;x++){if(s[x]>='0'&&s[x]<='9'){sum=(s[x]-'0')+16*sum;}else{sum=(s[x]-'A'+10)+16*sum;}}cout<<sum;}return 0;}16转2由于在⼆进制的表⽰⽅法中,每四位所表⽰的数的最⼤值对应16进制的15,即16进制每⼀位上最⼤值,所以,我们可以得出简便的转换⽅法,将16进制上每⼀位分别对应⼆进制上四位进⾏转换#include <iostream>#include <string>using namespace std;int main() {string s;while(cin>>s){int length=s.length();long long sum=0;int answer[40];int cot=0;for(int x=0;x<length;x++){int y=2;if(s[x]>='0'&&s[x]<='9'){y=(s[x]-'0');}else{y=(s[x]-'A'+10);}do{answer[cot++]=y%2;y/=2;}while(y!=0);}for(int i=0;i<cot;i++){cout<<answer[cot-1-i];}}return 0;}2转16进制16进制就有16个数,015,⽤⼆进制表⽰15的⽅法就是1111,从⽽可以推断出,16进制⽤2进制可以表现成00001111,顾名思义,也就是每四个为⼀位0 0 1 1| 1 1 0 1左半边=2+1=3 右半边=8+4+1=13=D代码#include <iostream>#include <string>#include <algorithm>using namespace std;int main() {string s;while(cin>>s){int length=s.length();string s2;int pro=1,sum=0,cot=0;for(int x=length-1;x>=0;x--){sum+=(s[x]-'0')*pro;pro=pro*2;if(x%4==0){if(sum>=10){s2+=sum-10+'A';}else{s2+=sum+'0';}pro=1;sum=0;}}reverse(s2.begin(),s2.end());cout<<s2;}return 0;}10进制转16进制-代码#include <iostream>#include <string>#include <algorithm>using namespace std;int main() {long long s;while(cin>>s){char ans[20]={0};int cot=0;do{if(s%16>=10){ans[cot++]=s%16-10+'A';}else{ans[cot++]=s%16+'0';}s/=16;}while(s);for(int i=0;i<cot;i++){cout<<ans[cot-1-i];}}return 0;}⼗六进制转⼋进制⼀开始想的是把16进制先转化为10进制,因为从10进制转化为8进制很容易。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
成都信息工程学院面向对象程序设计开发文档题目:计算器和进制转换工具学院:控制工程学院班级:自动化学生姓名:学号:2011指导教师:姚禁止除作者外他人复制上传本文档到百度文库和豆丁网这类网站!!!二〇一二年十二月十三日课程名称:面向对象的程序设计学院:控制工程学院班级:自动化学生姓名:学号: 2011 指导教师:摘要本设计实现了一个简单的计算器,该计算器不仅实现了简单的四则运算功能,还实现了三角函数计算功能,而且具有简洁大方的图文外观。
此设计按照软件工程的方法进行,系统具有良好的界面和必要的交互信息,使操作人员能快捷简单地进行操作,充分降低了数字计算的难度和节约了时间。
编写一个简单的DOS窗口运行的工具,实现将任意的十进制整数转换成R进制数(R在2-16之间)。
本系统开发平台为Windows 7,程序设计语言采用C++,在程序设计中,采用了结构化与面向对象两种解决问题的方法。
关键词:程序设计;计算器;MFC;按钮控件;进制转换目录引言 (1)第一章概述 (2)1.1 可行性分析 (2)1.2 需求分析 (2)第二章总体设计 (2)2.1 功能说明 (2)第三章软件设计 (3)3.1 计算器工程创建 (3)3.2 计算器开发步骤 (5)3.3 进制转换工具设计步骤 (13)结论 (18)引言计算器是日常生活中十分便捷有效的工具,能实现加、减、乘、除、开方、求平方等简单运算的工具。
要实现计算功能,可以用VC++的知识编写程序来解决此问题。
用。
在程序设计中,通过设计、编制、调试一个模拟计算器的程序,加深对语法及语义分析原理的理解,并实现对命令语句的灵活应用。
本课程设计主要在运算过程中,如果通过计算器来完成,就会减少计算量,该程序即可以在简单计算器键面下进行简单运算。
在日常工作中,有时会需要对数字进行进制的转换,但是笔算往往速度慢,而且有时会计算错误,所以编译一个简单的进制转换工具能使得计算变得简单。
第一章概述在运算过程中,如果通过计算器来完成,就会减少计算量,该程序即可以在简单计算器键面下进行简单运算,也可以一些进行高级的科学计算。
编程实现将任意的十进制整数转换成R进制数(R在2-16之间),使得进制转换避免笔算的失误。
1.1 可行性分析本设计第一是简单计算器,日常计算机使用中,常常涉及到一些有关计算的问题,一个小型的计算器软件变得非常有用,该校型计算器需要空间资源较少,对电脑其他程序的应用影响较小。
它的设计按软件工程的方法进行,系统具有良好的界面、必要的交互信息和较好的健壮性;醒目美观的软件封面。
使用人员能快捷简单地进行操作。
即时准确地获得需要的计算的结果,充分降低了数字计算的难度和节约了时间,对人们的生活有一定的帮助。
本设计第二是编程实现将任意的十进制整数转换成R进制数(R在2-16之间),使得进制转换避免笔算的失误。
1.2 需求分析本软件主要用于计算机windowsXP以上版本的用户的使用,这次课程设计一般是实现简单计算器的功能。
包含正余弦,平方,开方,三角函数等运算。
可对输入任意操作数,包括小数和整数及正数和负数进行以上的所有运算并能连续运算。
包含清除,退格,退出功能以及有与所有按钮相对应的菜单项。
第二章总体设计2.1 功能说明它的设计按软件工程的方法进行,系统具有良好的界面;必要的交互信息;简约美观的效果。
即时准确地获得需要的计算的结果,充分降低了数字计算的难度和节约了时间,对人们的生活有一定的帮助。
(1)包含的功能有:加、减、乘、除运算,开方、平方,三角函数等功能。
(2)给对话框添加菜单。
(3)计算功能基本上是用系统内部函数。
(4)程序可以能自动判断输入数据的正确性,不出现多于一个小数点、以0开头等不正常现象。
(5)“A C”按钮可以清除所有已输入的数据从头计算。
第三章软件设计3.1 计算器工程创建(1)打开Microsoft Visual C++ 6.0,在文件中点击新建,在弹出框内选择MFC AppWizard[exe]工程,输入工程名02exam62及其所在位置点击确定,如图3-1所示。
图3-1 新建MFC AppWizard工程(2)将弹出MFC AppWizard-step 1对话框,选择基本对话框点击完成,如图3-2所示。
图3-2 基本对话框(3)这样,MFC AppWizard就建立了一个基于对话窗口的程序框架,如图3-3所示。
图3-3 基本对话窗口3.2 计算器开发步骤1、创建控件在资源视图ResourceView中,选择Dialog中ID为IDD_MY_DIALOG的对话框,删除对话框上已有的控件。
然后利用控件工具箱,按照图3-4所示在该对话框上添加控件图3-4 Edit属性对话框(2)图3-5 Push Button属性(3)计算器界面布局完成之后,双击各个按钮,添加消息响应函数,如按钮1的消息函数添加如图3-6所示双击按钮1即可图3-6添加消息函数(4)修改编辑框Edit的ID为:IDC_EDIT_INPUT。
按下“Ctrl+W”弹出ClassWizard对话框,在该对话框属性页MemberVariables上,选择IDC_EDIT_INPUT控件,利用Add Variables 增加两个变量如图3-7所示:图3-7添加变量(5)在CMyDlg的头文件中定义变量,代码如下:public:enum CACU_TYPE {ADD=0,SUB,MUL,DIV,NOTYPE};CACU_TYPE m_curType;bool m_bNextNumber; //判断是否是参与运算的第二个数float m_PreData; //保存参与运算的第一个数(6)在ClassView中,利用鼠标选中“CMyDlg”,按下鼠标右键弹出如图4所示对话框,点击Add Member Function 增加成员函数,函数具体声明如图3-9所示:图3-8选择增加成员函数图3-9添加函数(7)为刚增加的SetInfo函数添加函数定义,代码如下:void CMyDlg::SetInfo(char c){if(m_bNextNumber)m_editCurData.SetWindowText("");m_bNextNumber = false;CString str;m_editCurData.GetWindowText(str); //得到的是字符串类型if(str=="0") //单独只有一个零时,要先把零去掉str="";str+=c;m_editCurData.SetWindowText(str);}(8)、为函数OnButton1()~OnButton9()依次添加代码,如下所示:(数字1-9)void CMyDlg::OnButton1(){SetInfo('1');}······void CMyDlg::OnButton9(){SetInfo('9');}九、为函数OnButton10()添加代码如下:void CMyDlg::OnButton10(){if(m_bNextNumber)m_editCurData.SetWindowText("");m_bNextNumber = false;CString str;m_editCurData.GetWindowText(str);if(str!="0") //不是单个零的时候,即前面有数字,则在后面加零;否则是单个零时,就不变化,保持单个零str+='0';m_editCurData.SetWindowText(str);}十、为函数OnButtonDot添加代码如下:(小数点)void CMyDlg::OnButtonDot(){CString str;m_editCurData.GetWindowText(str);if(str.Find('.')==-1) //输入数中,没有找到小数点,可以加入一个小数点,如果有小数点,就不能再加了。
str+='.';m_editCurData.SetWindowText(str);}十一、为函数OnButtonAc()添加代码如下:(清零)void CMyDlg::OnButtonAc(){m_CurData=0;m_PreData=0;m_curType = NOTYPE;UpdateData(FALSE);}十二、为函数OnButtonAdd( )添加代码如下。
(加)void CMyDlg::OnButtonAdd(){UpdateData(TRUE);//取回控件上的变量m_PreData = m_curData;m_bNextNumber = TRUE;m_curType = ADD;}十三、为函数OnButtonSub( )添加代码如下。
(减)void CMy02exam62Dlg::OnButtonSub(){// TODO: Add your control notification handler code hereUpdateData(TRUE);//取回控件上的变量m_PreData = m_CurData;m_bNextNumber = TRUE;m_curType = SUB;}十四、为函数OnButtonMul( )添加代码如下。
(乘)void CMy02exam62Dlg::OnButtonMul()// TODO: Add your control notification handler code hereUpdateData(TRUE);//取回控件上的变量m_PreData = m_CurData;m_bNextNumber = TRUE;m_curType = MUL;}十五、为函数OnButtonDiv( )添加代码如下。
(除)void CMy02exam62Dlg::OnButtonDiv(){// TODO: Add your control notification handler code hereUpdateData(TRUE);//取回控件上的变量m_PreData = m_CurData;m_bNextNumber = TRUE;m_curType = DIV;}十六、为函数OnButtonSin( )添加代码如下。
(正弦)void CMy02exam62Dlg::OnButtonSin(){// TODO: Add your control notification handler code hereUpdateData(TRUE);//取回控件上的变量m_PreData = m_CurData;m_bNextNumber = TRUE;m_curType = SIN;}十七、为函数OnButtonCos( )添加代码如下。