当前位置:文档之家› vc6.0中用MFC编写计算器代码

vc6.0中用MFC编写计算器代码

vc6.0中用MFC编写计算器代码
vc6.0中用MFC编写计算器代码

// CKcalculateDlg.cpp : implementation file

//

#include "stdafx.h"

#include "math.h"

#include "CKcalculate.h"

#include "CKcalculateDlg.h"

#ifdef _DEBUG

#define new DEBUG_NEW

#undef THIS_FILE

static char THIS_FILE[] = __FILE__;

#endif

// double m_first; //存储一次运算的第一个操作数及一次运算的结果// double m_second; //存储一次运算的第二个操作数

// CString m_operator; //存储运算符

// double m_coff; //存储小数点的系数权值

/////////////////////////////////////////////////////////////////////////////

// CAboutDlg dialog used for App About

/////////////////////////////////////////////////////////////////////////////

class CAboutDlg : public CDialog

{

public:

CAboutDlg();

// Dialog Data

//{{AFX_DATA(CAboutDlg)

enum { IDD = IDD_ABOUTBOX };

//}}AFX_DATA

// ClassWizard generated virtual function overrides

//{{AFX_VIRTUAL(CAboutDlg)

protected:

virtual void DoDataExchange(CDataExchange* pDX);

// DDX/DDV support

//}}AFX_VIRTUAL

// Implementation

protected:

//{{AFX_MSG(CAboutDlg)

//}}AFX_MSG

DECLARE_MESSAGE_MAP()

};

CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)

{

//{{AFX_DATA_INIT(CAboutDlg)

//}}AFX_DATA_INIT

}

void CAboutDlg::DoDataExchange(CDataExchange* pDX)

{

CDialog::DoDataExchange(pDX);

//{{AFX_DATA_MAP(CAboutDlg)

//}}AFX_DATA_MAP

}

BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)

//{{AFX_MSG_MAP(CAboutDlg)

// No message handlers

//}}AFX_MSG_MAP

END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////

// CCKcalculateDlg dialog

CCKcalculateDlg::CCKcalculateDlg(CWnd* pParent /*=NULL*/) : CDialog(CCKcalculateDlg::IDD, pParent)

{

// void UpdateDisplay(double);

// void Calculate(void);

//{{AFX_DATA_INIT(CCKcalculateDlg)

/////////////////////////////////////////////////////////////////////////////////////////////////// //

isXdeY=false;

m_display = _T("");

m_PI=3.14159265358979323846;

m_first=0.0;

m_second=0.0;

m_operator=_T("+");

m_coff=0;

m_display=_T("0.0");

//}}AFX_DATA_INIT

// Note that LoadIcon does not require a subsequent DestroyIcon in Win32

m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);

}

void CCKcalculateDlg::DoDataExchange(CDataExchange* pDX)

{

CDialog::DoDataExchange(pDX);

//{{AFX_DATA_MAP(CCKcalculateDlg)

DDX_Text(pDX, IDC_DISPLAY, m_display);

//}}AFX_DATA_MAP

}

BEGIN_MESSAGE_MAP(CCKcalculateDlg, CDialog)

//{{AFX_MSG_MAP(CCKcalculateDlg)

ON_WM_SYSCOMMAND()

ON_WM_PAINT()

ON_WM_QUERYDRAGICON()

ON_BN_CLICKED(IDC_BUTTON0, OnButton0)

ON_BN_CLICKED(IDC_BUTTON1, OnButton1)

ON_BN_CLICKED(IDC_BUTTON2, OnButton2)

ON_BN_CLICKED(IDC_BUTTON3, OnButton3)

ON_BN_CLICKED(IDC_BUTTON4, OnButton4)

ON_BN_CLICKED(IDC_BUTTON5, OnButton5)

ON_BN_CLICKED(IDC_BUTTON6, OnButton6)

ON_BN_CLICKED(IDC_BUTTON7, OnButton7)

ON_BN_CLICKED(IDC_BUTTON8, OnButton8)

ON_BN_CLICKED(IDC_BUTTON9, OnButton9)

ON_BN_CLICKED(IDC_BUTTON_ADD, OnButtonAdd)

ON_BN_CLICKED(IDC_BUTTON_MINUS, OnButtonMinus)

ON_BN_CLICKED(IDC_BUTTON_MUTIPL Y, OnButtonMutiply) ON_BN_CLICKED(IDC_BUTTON_DIV, OnButtonDiv)

ON_BN_CLICKED(IDC_BUTTON_SIGH, OnButtonSigh)

ON_BN_CLICKED(IDC_BUTTON_POINT, OnButtonPoint)

ON_BN_CLICKED(IDC_BUTTON_CLEAR, OnButtonClear)

ON_BN_CLICKED(IDC_BUTTON_SQRT, OnButtonSqrt)

ON_BN_CLICKED(IDC_BUTTON_RECI, OnButtonReci)

ON_BN_CLICKED(IDC_BUTTON_EQUAL, OnButtonEqual)

ON_BN_CLICKED(IDC_BUTTON_SIN, OnButtonSin)

ON_BN_CLICKED(IDC_BUTTON_COS, OnButtonCos)

ON_BN_CLICKED(IDC_BUTTON_LOG, OnButtonLog)

ON_BN_CLICKED(IDC_BUTTON_XDEY, OnButtonXdeY)

//}}AFX_MSG_MAP

END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////

// CCKcalculateDlg message handlers

/////////////////////////////////////////////////////////////////////////////

BOOL CCKcalculateDlg::OnInitDialog()

{

CDialog::OnInitDialog();

// Add "About..." menu item to system menu.

// IDM_ABOUTBOX must be in the system command range.

ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);

ASSERT(IDM_ABOUTBOX < 0xF000);

CMenu* pSysMenu = GetSystemMenu(FALSE);

if (pSysMenu != NULL)

{

CString strAboutMenu;

strAboutMenu.LoadString(IDS_ABOUTBOX);

if (!strAboutMenu.IsEmpty())

{

pSysMenu->AppendMenu(MF_SEPARATOR);

pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);

}

}

// Set the icon for this dialog. The framework does this automatically

// when the application's main window is not a

SetIcon(m_hIcon, TRUE); // Set big icon

SetIcon(m_hIcon, FALSE); // Set small icon

// TODO: Add extra initialization here

return TRUE;

// return TRUE unless you set the focus to a control

}

void CCKcalculateDlg::OnSysCommand(UINT nID, LPARAM lParam)

{

if ((nID & 0xFFF0) == IDM_ABOUTBOX)

{

CAboutDlg dlgAbout;

dlgAbout.DoModal();

}

else

{

CDialog::OnSysCommand(nID, lParam);

}

}

// If you add a minimize button to your dialog, you will need the code below

// to draw the icon. For MFC applications using the document/view model,

// this is automatically done for you by the framework.

void CCKcalculateDlg::OnPaint()

{

if (IsIconic())

{

CPaintDC dc(this); // device context for painting

SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);

// Center icon in client rectangle

int cxIcon = GetSystemMetrics(SM_CXICON);

int cyIcon = GetSystemMetrics(SM_CYICON);

CRect rect;

GetClientRect(&rect);

int x = (rect.Width() - cxIcon + 1) / 2;

int y = (rect.Height() - cyIcon + 1) / 2;

// Draw the icon

dc.DrawIcon(x, y, m_hIcon);

}

else

{

CDialog::OnPaint();

}

}

// The system calls this to obtain the cursor to display while the user drags

// the minimized window.

HCURSOR CCKcalculateDlg::OnQueryDragIcon()

{

return (HCURSOR) m_hIcon;

}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////按键代码

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

void CCKcalculateDlg::OnButton0()

{

// TODO: Add your control notification handler code here

onButtonN(0);

}

void CCKcalculateDlg::OnButton1()

{

// TODO: Add your control notification handler code here

onButtonN(1);

}

void CCKcalculateDlg::OnButton2()

{

// TODO: Add your control notification handler code here

onButtonN(2);

}

void CCKcalculateDlg::OnButton3()

{

// TODO: Add your control notification handler code here

onButtonN(3);

}

void CCKcalculateDlg::OnButton4()

{

// TODO: Add your control notification handler code here

onButtonN(4);

}

void CCKcalculateDlg::OnButton5()

{

// TODO: Add your control notification handler code here

onButtonN(5);

}

void CCKcalculateDlg::OnButton6()

{

// TODO: Add your control notification handler code here

onButtonN(6);

}

void CCKcalculateDlg::OnButton7()

{

// TODO: Add your control notification handler code here

onButtonN(7);

}

void CCKcalculateDlg::OnButton8()

{

// TODO: Add your control notification handler code here

onButtonN(8);

}

void CCKcalculateDlg::OnButton9()

{

// TODO: Add your control notification handler code here

onButtonN(9);

}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////计算按键代码

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

void CCKcalculateDlg::OnButtonAdd()

{

// TODO: Add your control notification handler code here Calculate();

m_operator="+";

}

void CCKcalculateDlg::OnButtonMinus()

{

// TODO: Add your control notification handler code here Calculate();

m_operator="-";

}

void CCKcalculateDlg::OnButtonMutiply()

{

// TODO: Add your control notification handler code here Calculate();

m_operator="*";

}

void CCKcalculateDlg::OnButtonDiv()

{

// TODO: Add your control notification handler code here Calculate();

m_operator="/";

}

void CCKcalculateDlg::OnButtonSigh()

{

// TODO: Add your control notification handler code here m_second=-m_second;

UpdateDisplay(m_second);

}

void CCKcalculateDlg::OnButtonPoint()

{

// TODO: Add your control notification handler code here m_coff =0.1;

}

void CCKcalculateDlg::OnButtonClear()

{

// TODO: Add your control notification handler code here m_first=0.0;

m_second=0.0;

m_operator="+";

m_coff = 1.0;

UpdateDisplay(0.0);

}

void CCKcalculateDlg::OnButtonSqrt()

{

// TODO: Add your control notification handler code here if( m_second==0 )

{

m_first=sqrt(m_first);

UpdateDisplay(m_first);

}

else

{

m_second=sqrt(m_second);

UpdateDisplay(m_second);

}

}

void CCKcalculateDlg::OnButtonReci()

{

// TODO: Add your control notification handler code here if( fabs(m_second ) < 0.000001 && fabs( m_first )<0.000001) {

m_display="除数不能为零";

UpdateDisplay(false);

return;

}

if( fabs(m_second ) < 0.000001)

{

m_first=1.0/m_first;

UpdateDisplay(m_first);

}

else

{

m_second=1.0/m_second;

UpdateDisplay(m_second);

}

}

void CCKcalculateDlg::OnButtonEqual()

{

// TODO: Add your control notification handler code here

XdeY();

Calculate();

}

void CCKcalculateDlg::UpdateDisplay(double ck)

{

m_display.Format(_T("%f"),ck);

int i=m_display.GetLength();

//格式化输出,将输出结果后的零截去

while(m_display.GetAt(i-1)=='0')

{

m_display.Delete(i-1,1);i--;

}

//更新编辑框变量m_display

UpdateData(false);

}

void CCKcalculateDlg::Calculate(void)

{

//将前一次数据与当前数据进行运算,作为下次的第一操作数,并在编辑框显示

switch(m_operator.GetAt(0))

{

case '+': m_first+=m_second;break;

case '-': m_first-=m_second;break;

case '*': m_first*=m_second;break;

case '/':

if( fabs(m_second ) <= 0.000001)

{

m_display="除数不能为0";

UpdateData(false);

return;

}

m_first/=m_second;break;

}

m_second=0.0;

m_coff=1.0;

m_operator=_T("+");

//更新编辑框显示内容

UpdateDisplay(m_first);

}

void CCKcalculateDlg::onButtonN(int n)

{

if(m_coff==1.0)

//作为整数输入数字时

m_second=m_second*10+n;

else

{

//作为小数输入数字

m_second=m_second+n*m_coff;

m_coff*=0.1;

}

//更新编辑框的数字显示

UpdateDisplay(m_second);

}

void CCKcalculateDlg::OnButtonSin()

{

// TODO: Add your control notification handler code here m_second=m_second*m_PI/180;

m_second=sin(m_second);

UpdateDisplay(m_second);

}

void CCKcalculateDlg::OnButtonCos()

{

// TODO: Add your control notification handler code here m_second=m_second*m_PI/180;

m_second=cos(m_second);

UpdateDisplay(m_second);

}

void CCKcalculateDlg::OnButtonLog()

{

// TODO: Add your control notification handler code here m_second=log10(m_second);

UpdateDisplay(m_second);

}

void CCKcalculateDlg::OnButtonXdeY()

{

// TODO: Add your control notification handler code here temp=m_second;

m_second=0.0;

UpdateDisplay(m_second);

isXdeY=true;

}

void CCKcalculateDlg::XdeY()

{

if(isXdeY)

{

m_second=m_second;

m_second=pow(temp,m_second);

}

}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////以下是CKcalculateDlg.h代码

// /////////CKcalculateDlg.h : header file

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

#if !defined(AFX_CKCALCULATEDLG_H__8DEB211E_CFCF_44C8_895C_BEF4E77EBE6C __INCLUDED_)

#define

AFX_CKCALCULATEDLG_H__8DEB211E_CFCF_44C8_895C_BEF4E77EBE6C__INCLUD ED_

#if _MSC_VER > 1000

#pragma once

#endif // _MSC_VER > 1000

/////////////////////////////////////////////////////////////////////////////

// CCKcalculateDlg dialog

class CCKcalculateDlg : public CDialog

{

// Construction

public:

void XdeY(void);

bool isXdeY;

double temp;

double m_PI;

void onButtonN(int n);

void UpdateDisplay(double ck);

void Calculate();

CCKcalculateDlg(CWnd* pParent = NULL); // standard constructor

// Dialog Data

//{{AFX_DATA(CCKcalculateDlg)

enum { IDD = IDD_CKCALCULATE_DIALOG };

CString m_display;

//}}AFX_DATA

double m_first;//存储一次运算的第一个操作数及一次运算的结果

double m_second;//存储一次运算的第二个操作数

CString m_operator;//存储运算符

double m_coff;//存储小数点的系数权值

// ClassWizard generated virtual function overrides

// {{AFX_VIRTUAL(CCKcalculateDlg)

protected:

virtual void DoDataExchange(CDataExchange* pDX);

// DDX/DDV support

//}}AFX_VIRTUAL

// Implementation

protected:

HICON m_hIcon;

// Generated message map functions

//{{AFX_MSG(CCKcalculateDlg)

virtual BOOL OnInitDialog();

afx_msg void OnSysCommand(UINT nID, LPARAM lParam);

afx_msg void OnPaint();

afx_msg HCURSOR OnQueryDragIcon();

afx_msg void OnButton0();

afx_msg void OnButton1();

afx_msg void OnButton2();

afx_msg void OnButton3();

afx_msg void OnButton4();

afx_msg void OnButton5();

afx_msg void OnButton6();

afx_msg void OnButton7();

afx_msg void OnButton8();

afx_msg void OnButton9();

afx_msg void OnButtonAdd();

afx_msg void OnButtonMinus();

afx_msg void OnButtonMutiply();

afx_msg void OnButtonDiv();

afx_msg void OnButtonSigh();

afx_msg void OnButtonPoint();

afx_msg void OnButtonClear();

afx_msg void OnButtonSqrt();

afx_msg void OnButtonReci();

afx_msg void OnButtonEqual();

afx_msg void OnButtonSin();

afx_msg void OnButtonCos();

afx_msg void OnButtonLog();

afx_msg void OnButtonXdeY();

//}}AFX_MSG

DECLARE_MESSAGE_MAP()

};

//{{AFX_INSERT_LOCA TION}}

// Microsoft Visual C++ will insert additional declarations immediately before the previous line.

#endif

// !defined(AFX_CKCALCULATEDLG_H__8DEB211E_CFCF_44C8_895C_BEF4E77EBE6C_ _INCLUDED_)

java简单计算器源代码

简单计算器代码 package calcultorthree; import java.awt.BorderLayout;//导入边界布局管理器类 import java.awt.GridLayout;//导入网格布局管理器类 import java.awt.TextField;//导入文本区域类 import java.awt.event.ActionEvent;//导入事件类 import java.awt.event.ActionListener;//导入事件监听者类 import javax.swing.JButton;//导入按钮类 import javax.swing.JFrame;//导入窗体 import javax.swing.JPanel;//导入面板 /** *本例实现了简单计算器代码,具备加减乘除和正弦功能,旨在抱砖引玉。熟悉java的同学,可以在此基础上实现更复杂的功能。 * @author Fjsh */ public class CalcultorThree { //新建对象,在构造函数中进行初始化 JFrame frame;//新建窗体对象 JButton buttonzero,buttondot,buttonequal;//新建按钮“0”“.”“=” JButton buttonplus,buttonminus,buttonmultiple,buttondevision, buttonsin,buttontozero;//新建按钮“+”“-”“*”“/”“sin”和归零按钮JButton buttonone,buttontwo,buttonthree,buttonfour,buttonfive,buttonsix, buttonseven,buttoneight,buttonnine;//新建数字按钮“0”“1”“2”“3”“4”“5”“6”“7”“8”“9” JPanel panelwest,panelcenter,paneleast;//新建三个面板 TextField tf;//新建文本区域对象 public CalcultorThree(){ //初始化对象 tf=new TextField(30);//构造空文本字段,字符宽度为30 frame =new JFrame("CalculatorThree");//构造窗体对象,名称为“CalculatorThree”

VCmfc编计算器源代码

用C++编写计算器程序 搞要本课程设计是在基于对话框的应用程序中模拟一个计算器,本计算器可以进行十进制下的四则运算(加、减、乘、除)和四则混合运算,可以把十进制转化为二进制或十六进制,可以进行一些常用的函数运算(比如sin、cos、tan、cot、sqrt、ln等),还可以支持带“(”,“)”符号的表达式的计算。系统开发平台为Windows XP,程序设计设计语言采用Visual C++6.0,程序运行平台为Windows 98/2000/XP。程序通过调试运行,初步实现了设计目标。 关键词程序设计;计算器;C++; 1 引言 在现代社会中,计算器已经进入了每一个家庭,人们在生活和学习中经常需要使用到计算器,它的出现大大减少了人们在计算方面的工作量,可以说它在人们生活和学习中是不可缺少的。 1.1C++介绍 C++语言的主要特点表现在两个方面,一是全面兼容C语言,二是支持面向对象的程序设计方法[1]。 (1) C++是一个更好的C,它保持了C语言的优点,大多数的C程序代码略作修改或不作修改就可在C++的集成环境下调试和运行。这对于继承和开发当前已在广泛的软件是非常重要的,可以节省大量的人力和物力。 (2) C++是一种面向对象的程序设计语言它使得程序的各个模块的独立性更强,程序的可读性和可移植性更强,程序代码的结构更加合理,程序的扩充性更强。这对于设计、编制和调试一些大型的软件尤为重要。 (3) C++集成环境不仅支持C++程序的编译和调试,而且也支持C程序的编译和调试。

通常,C++程序环境约定:当源程序文件的扩展名为c.时,则为C程序;而当源程序文件的扩展名为cpp.时,则为C++程序。 (4) C++语句非常简练,对语法限制比较宽松,因此C++语法非常灵活。其优点是给用户编程带来书写上的方便。其缺点是由于编译时对语法限制比较宽松,许多逻辑上的错误不容易发现,给用户编程增加了难度。 1.2计算器的介绍 (1)在运行程序后,系统会弹出一个基于对话框的计算器界面,如下图所示: 图1.1 计算器界面 (2)在计算器程序中,主要通过一个编辑框来获取表达式和显示计算结果,表达式可以通过键盘和单击按钮2种方式输入,输入后的结果如下图所示:

大学计算机c语言计算器源代码

C++语言编写。。 #include #include #include using namespace std; const double pi = 3.14159265; const double e = 2.718281828459; const int SIZE = 1000; typedef struct node//为了处理符号而建立的链表(如: 1+(-2)) { char data; node *next; }node; typedef struct stack_num//存储数的栈 { double *top; double *base; }stack_num; typedef struct stack_char//存储运算符号的栈 { char *top;

char *base; }stack_char; stack_num S_num;//定义 stack_char S_char;//定义 char fu[18] = {'\n', ')', '+', '-', '*', '/', '%', '^', 'Q', 'L', 'C', 'S', 'T', 'c', 's', 't', '('}; int compare[1000];//表现出各运算符号的优先级 double shu[1000];//存储"数"的数组 double dai_result;//运算的结果,是为了处理M运算(简介函数里有M的定义) int biao = 0;//和dia_result一样,为了处理M运算 char line[SIZE];//输入的所要计算的表达式 void init()//初始化 { compare[fu[0]] = -2;//用数字的大小表现出符号的优先级 compare[fu[1]] = -1; compare[fu[2]] = 2; compare[fu[3]] = 2; compare[fu[4]] = 4; compare[fu[5]] = 4; compare[fu[6]] = 4;

c面向对象程序设计MFC简单计算器实验报告

计算机与信息工程学院 《程序设计基础》课程设计报告 题目名称:60.编写一个能实现简单功能的计算器学生姓名:刘沛东 学生学号:2011508154 专业班级:电子信息工程(1)班 指导教师:高攀

1 课程设计的题目 编写一个能实现简单功能的计算器 2 题目要求 1. 有一个计算器图形。 2. 能实现加、减、乘、除及乘方的运算。 3. 当输入题目时,屏幕上要在指定位置上显示出相应的题目内容,且相应的数字键要改变颜色 例如:输入数字1 时,在计算器图形上的1键变为红色。 4. 屏幕、图形颜色、形状自定 3 总体设计 3.1 总体框架 图1 系统框架

3.2 系统功能说明 在VC++6.0中绘制计算器界面,各控件的设置 对0~9控件设定相应的ID和其他属性: 图2 “1”控件设置 对“+、-、*、\”控件设定相应的ID和其他属性: 图2 “+”控件设置 对其它控件设定相应的ID和其他属性: 图3 其它控件设置

主要使用到Layout菜单中的Align功能对各个按钮进行对其,使界面更加整洁。拖出的控件有上面的一个Edit控件用于显示数字,Button控件用于处理鼠标的消息。 4 程序详细设计 4.1系统主调模块 图5 程序流程图

4.2各模块详细设计 4.2.1 建立的变量,控件的命名,对应的消息处理函数对应表 double poz; //保存小数点的位置,初始化为1,表示poz-1个小数点。 double m_Dis; //Edit控件上需要显示的数字 BOOL point_flag; //小数点表示位,判定是否是小数,是小数为1,不是小数为0。 double numfirst; //保存计算过程中的前一个数字, double numsecond;//保存计算过程中的第二个数字 char op;//记录当前的计算符号,可以为’+’,’-’,’*’,’/’,’=’,’c’,’n’ 变量初始化: poz=1; m_Dis = 0.0; numfirst=0; numsecond=0; op=0;

单片机简易计算器设计

单片机简易计算器设计 Company Document number:WTUT-WT88Y-W8BBGB-BWYTT-19998

一、设计要求 1.设计4*4的键盘,其中10个数字键0~9,其余6个为“+”“-”“*”“/”“=”和“C” 2.设计2位LED接口电路 3.实现1位数的简单运算 二、硬件系统设计 1、LED接口电路 简易计算器需要2位8段码LED显示电路。用8031单片机经8255A扩展2位8段码LED显示器,用8255A的A口作为段码(字形代码)数据口,PB0和PB1作为位控制端口。在位控制口加集电极开路的反相高压驱动器74LS06以提供驱动LED显示器所需的足够大的电流,然后接至各数码显示器的共阴极端。同理,在段码数据口集电极开路的正相高压驱动器74LS07提供足够大的电流,然后接到数码显示器的各段。逻辑电路结构如下:

2、键盘接口电路 简易计算器需要4*4的行列式键盘。用8031单片机经8255A扩展4*4行列式键盘,8255A的B口和C口用于扩展键盘接口,B口高4位作为输出口,C口低4位作为输入口。逻辑电路结构如下: 3、计算器逻辑电路图 将LED接口电路和键盘接口电路结合到一起就是简易计算器的逻辑电路图,如下: 三、软件设计 1、LED显示程序设计 LED显示器由七段发光二极管组成,排列成8字形状,因此也成为七段LED显示器,器排列形状如下图所示:

为了显示数字或符号,要为LED显示器提供代码,即字形代码。七段发光二极管,再加上一个小数点位,共计8段,因此提供的字形代码的长度正好是一个字节。简易计算器用到的数字0~9的共阴极字形代码如下表: 0~9七段数码管共阴级字形代码 2位LED显示的程序框图如下: 2、读键输入程序设计 为了实现键盘的数据输入功能和命令处理功能,每个键都有其处理子程序,为此每个键都对应一个码——键码。为了得到被按键的键码,现使用行扫描法识别按键。其程序框图如下: 3、主程序设计 (1)数值送显示缓冲程序设计 简易计算器所显示的数值最大位两位。要显示数值,先判断数值正负,如果是负值,则符号位显示“-”,然后将数值除以10,余数送显最最低位,判断商是否为0,若为0则返回,若不为0,则将商除以10,将余数送显高位。程序框图如下: (2)运算主程序设计

java编写简单计算器源代码

import javax.swing.*; import java.awt.event.*; import java.awt.*; import https://www.doczj.com/doc/b29935132.html,ng.Math; class ring extends JFrame implements ActionListener { //定义成员变量: //JFrame frame;//定义一个窗口类; JTextField text;//定义一个文本框类; JLabel label;//定义一个标签类; JPanel p1,p2,p3,p4,p5,p6;//定义面板类; String s1,s,s2;//定义三个字符串变量; int count=0; JButton a1,a2,a3,a4,a5,a6,b1,b2,b3,b4,b5,b6,c1,c2,c3,c4,c5,c6,d1,d2,d3,d4 ,d5,d6; //ring的构造函数; ring() { this.setTitle("计算器"); // super("计算器"); JMenuBar menubar1=new JMenuBar();//新建菜单条; this.setJMenuBar(menubar1); JMenu menu1=new JMenu("编辑(E)"); JMenu menu2=new JMenu("查看(V)"); JMenu menu3=new JMenu("帮助(H)"); menubar1.add(menu1); menubar1.add(menu2); menubar1.add(menu3); JMenuItem item1=new JMenuItem("复制(c) ctrl+c"); JMenuItem item2=new JMenuItem("粘贴(p) ctrl+v"); JMenuItem item3=new JMenuItem("标准型(T)"); JMenuItem item4=new JMenuItem("科学型(s)"); JMenuItem item5=new JMenuItem("数字分组(I)"); JMenuItem item6=new JMenuItem("帮助主题(H)"); JMenuItem item7=new JMenuItem("关于计算机(A)"); menu1.add(item1); menu1.add(item2); menu2.add(item3); menu2.add(item4); menu2.add(item5); menu3.add(item6);

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 https://www.doczj.com/doc/b29935132.html,ponentModel; using using System.Data; namespace Calc { ///

///温柔一刀C#简易计算器的实现 /// publicclass CalcForm:Form { private Button btn_0; private Button btn_1; private Button btn_2; private Button btn_3;

用MFC编写的计算器程序源代码

// JiSuanQiDlg.cpp : 实害?现?文?件t // #include"stdafx.h" #include"JiSuanQi.h" #include"JiSuanQiDlg.h" #include"afxdialogex.h" #ifdef _DEBUG #define new DEBUG_NEW #endif // 用?于 ?应畖用?程ì序?“°关?于 ?”±菜?单蹋?项?的? CAboutDlg 对?话°框? class CAboutDlg : public CDialogEx { public: CAboutDlg(); // 对?话°框?数簓据Y enum { IDD = IDD_ABOUTBOX }; protected: virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支§持? // 实害?现? protected: DECLARE_MESSAGE_MAP() }; CAboutDlg::CAboutDlg() : CDialogEx(CAboutDlg::IDD) { } void CAboutDlg::DoDataExchange(CDataExchange* pDX) { CDialogEx::DoDataExchange(pDX); } BEGIN_MESSAGE_MAP(CAboutDlg, CDialogEx) END_MESSAGE_MAP()

// CJiSuanQiDlg 对?话°框? CJiSuanQiDlg::CJiSuanQiDlg(CWnd* pParent /*=NULL*/) : CDialogEx(CJiSuanQiDlg::IDD, pParent) , m_num(0) , m_1(0) , m_2(_T("")) , m_two(0) { m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); } void CJiSuanQiDlg::DoDataExchange(CDataExchange* pDX) { CDialogEx::DoDataExchange(pDX); DDX_Text(pDX, IDC_EDIT1, m_num); DDX_Text(pDX, IDC_EDIT2, m_1); DDX_Text(pDX, IDC_EDIT3, m_2); DDX_Text(pDX, IDC_EDIT4, m_two); } BEGIN_MESSAGE_MAP(CJiSuanQiDlg, CDialogEx) ON_WM_SYSCOMMAND() ON_WM_PAINT() ON_WM_QUERYDRAGICON() ON_BN_CLICKED(IDC_BUTTON2, &CJiSuanQiDlg::OnBnClickedButton2) ON_BN_CLICKED(IDC_BUTTON1, &CJiSuanQiDlg::OnBnClickedButton1) ON_BN_CLICKED(IDC_BUTTON3, &CJiSuanQiDlg::OnBnClickedButton3) ON_BN_CLICKED(IDC_BUTTON4, &CJiSuanQiDlg::OnBnClickedButton4) ON_BN_CLICKED(IDC_BUTTON5, &CJiSuanQiDlg::OnBnClickedButton5) ON_BN_CLICKED(IDC_BUTTON6, &CJiSuanQiDlg::OnBnClickedButton6) ON_BN_CLICKED(IDC_BUTTON7, &CJiSuanQiDlg::OnBnClickedButton7) ON_BN_CLICKED(IDC_BUTTON8, &CJiSuanQiDlg::OnBnClickedButton8) ON_BN_CLICKED(IDC_BUTTON9, &CJiSuanQiDlg::OnBnClickedButton9) ON_BN_CLICKED(IDC_BUTTON10, &CJiSuanQiDlg::OnBnClickedButton10) ON_BN_CLICKED(IDC_BUTTON11, &CJiSuanQiDlg::OnBnClickedButton11) ON_BN_CLICKED(IDC_BUTTON13, &CJiSuanQiDlg::OnBnClickedButton13) ON_BN_CLICKED(IDC_BUTTON14, &CJiSuanQiDlg::OnBnClickedButton14) ON_BN_CLICKED(IDC_BUTTON15, &CJiSuanQiDlg::OnBnClickedButton15) ON_BN_CLICKED(IDC_BUTTON16, &CJiSuanQiDlg::OnBnClickedButton16) ON_BN_CLICKED(IDC_BUTTON12, &CJiSuanQiDlg::OnBnClickedButton12)

MFC简单计算器设计正文

实用计算器程序1.基本功能描述 计算器是人们日常生活中非常实用的计算工具。预期设计目标与实际计算器为标准,Windows10系统提供的计算器为范例进行设计。 实用计算器要实现单目运算和双目运算。单目运算主要包括阶乘、正弦、余弦; 双目运算主要包括加、减、乘、除、乘幂等。计算器要能够对输入的各种数据进行处理,包括小数、整数、负数等数据进行操作。实际过程中要能够对不同的数据灵活判 断执行。同时要能够对不满足运算符的操作数,提示出错信息以方便用户进行处理。 用户的修改包括清屏和退格。程序设计的重点和难点在于:第一,能够对于不同的操 作数和操作符进行连续运算,运算过程中要有优先级的判断,根据优先级执行不同的 运算顺序;第二,能够用一个编辑框实现运算表达式的显示和结果的输出。 编程环境采用VisualStudio2017提供的MFC建立对话框应用程序,设计界面要简 单大方,并提供程序所有功能的接口。 2.设计思路 表1操作符优先级设计 优先级操作符 1 阶乘、正弦、余弦 2 乘幂 3 乘、除 4 加、减 对对话框编辑框关联一个变量从中读取数据,按下数字键时对数据数组num[]进行更新,其中num[0]表示的是当前已经存储变量的个数。由于算法设计为四层优先级, 且单目运算的优先级最高。当按下相应单目运算符,首先将当前数据数组的最后一个 存储(防止按下Backspace退格发生错误),并将此位数据执行运算后重新赋值。但按下双目运算符相应按键后,将计数num[0]++,同时将运算符的类型和位置记录。当按下等于之前,这样就将一个单目双目混合的运算表达式转化为双目运算。如果没有按 下等号键,则继续执行循环。在按下等号按钮之后,按照先乘幂、再乘除、后加减的 运算顺序执行运算,将最后结果保存并显示。(在实际的计算器中,执行完运算之后,按下运算符的操作键,最终结果将按照左操作数的形式出现,故需要保存变量。)如果用户没有结束程序,在运行初始化程序,进行下一次运算,否则直接退出。 图1程序流程图 3.软件设计 设计步骤 1)创建基于对话框的程序 利用AppWizard建立应用程序框架,创建一个基于对话框的MFC工程,命名为“fengwanjincalculator”,如图2所示。在图3显示的应用程序类型中选择基于对话框。创建成功后,系统自动生成相应程序文件。 图2创建MFC工程图 图3应用程序类型选择图

MFC简单计算器

信息科学与技术学院 《程序设计基础》课程设计报告 题目名称:60.编写一个能实现简单功能的计算器学生姓名:李海东 学生学号:2011508154 专业班级:电子信息工程(1)班 指导教师:高攀

1

1 课程设计的题目 编写一个能实现简单功能的计算器 2 题目要求 1. 有一个计算器图形。 2. 能实现加、减、乘、除及乘方的运算。 3. 当输入题目时,屏幕上要在指定位置上显示出相应的题目内容,且相应的数字键要改变颜色 例如:输入数字1 时,在计算器图形上的1键变为红色。 4. 屏幕、图形颜色、形状自定 3 总体设计 3.1 总体框架 图1 系统框架 开始 结束 键入第一个按钮 键入第二个按钮 显 示 结 果 加 法 减 法 乘 法 除 法 乘 方 清 零

3.2 系统功能说明 在VC++6.0中绘制计算器界面,各控件的设置 对0~9控件设定相应的ID和其他属性: 图2 “1”控件设置 对“+、-、*、\”控件设定相应的ID和其他属性: 图2 “+”控件设置 对其它控件设定相应的ID和其他属性: 图3 其它控件设置 1

2 主要使用到Layout 菜单中的Align 功能对各个按钮进行对其,使界面更加整洁。拖出的控件有上面的一个Edit 控件用于显示数字,Button 控件用于处理鼠标的消息。 4 程序详细设计 4.1系统主调模块 图5 程序流程图 实现文件.cpp 显示计算器界面 开始执行 工程全局对象 资源文件.rc 模块定义文件.def 头文件.h 执行_twinmain() Afxmain() 创建窗口 实现窗口类注册 Set window V oid clc::onpaint() V oid cal::onCE() 点击鼠标发出消息 V oid clce::onmouse() 等待消息处理 V oid clc::onMum0() V oid clc::onAdd() 文本框中显示结果 程序运行结

java简单计算器源代码

j a v a简单计算器源代码集团企业公司编码:(LL3698-KKI1269-TM2483-LUI12689-ITT289-

简单计算器代码packagecalcultorthree; /** *本例实现了简单计算器代码,具备加减乘除和正弦功能,旨在抱砖引玉。熟悉java的同学,可以在此基础上实现更复杂的功能。 *@authorFjsh */ publicclassCalcultorThree{ //新建对象,在构造函数中进行初始化 JFrameframe;//新建窗体对象 JButtonbuttonzero,buttondot,buttonequal;//新建按钮“0”“.”“=”JButtonbuttonplus,buttonminus,buttonmultiple,buttondevision, buttonsin,buttontozero;//新建按钮“+”“-”“*”“/”“sin”和归零按钮JButtonbuttonone,buttontwo,buttonthree,buttonfour,buttonfive,buttonsix, buttonseven,buttoneight,buttonnine;//新建数字按钮 “0”“1”“2”“3”“4”“5”“6”“7”“8”“9” JPanelpanelwest,panelcenter,paneleast;//新建三个面板 TextFieldtf;//新建文本区域对象 publicCalcultorThree(){ //初始化对象 tf=newTextField(30);//构造空文本字段,字符宽度为30 frame=newJFrame("CalculatorThree");//构造窗体对象,名称为“CalculatorThree”

我的MFC计算器程序

江苏师范大学城环学院 《面向对象的程序设计》课程设计 设计题目:简易计算器设计 姓名:朱立珍 学号:12253013 院系:城市与环境学院 年级: 12城31 指导教师:李保杰 江苏师范大学城环学院

《面向对象的程序设计》课程设计任务书 课程名称c++面向对象课程设计 设计题目计算器设计 指导教师李保杰时间2014.12.24-2015.1.5 一、教学要求 1. 巩固和加深学生对c++面向对象课程的基本知识的理解和掌握 2. 掌握c++面向对象编程和程序调试的基本技能 3. 利用c++面向对象进行基本的软件设计 4. 掌握书写程序设计说明文档的能力 5. 提高运用c++面向对象解决实际问题的能力 二、设计资料及参数 每个学生在教师提供的课程设计题目中任意选择一题,独立完成,题目选定后不可更换。 计算器系统设计 对计算器系统进行如下设计使之能提供下列服务: 加法运算 减法运算 乘法运算 除法运算 立即显示运算结果 三、设计要求及成果 1. 分析课程设计题目的功能需求(可选用数组或链表实现) 2. 写出详细设计说明(至少包括功能实现分析和模块流程图) 3. 编写程序代码,调试程序使其能正确运行(代码书写要规范,标示符要见名知意,要有必要的注释至少200行代码,不包括注释和花括号) 4. 设计完成的软件要便于操作和使用 5. 设计完成后提交课程设计报告(请严格按照模板进行排版) 四、进度安排 第一天选择课程设计题目,分析课题的要求 第二-六天编程 第七-八天编程及调试 第九天写编程报告 第十天提交课程设计报告与源程序(打印稿及电子稿) 五、评分标准 1. 根据平时上机考勤、表现和进度,教师将每天点名和检查 2. 根据课程设计完成情况,必须有可运行的软件。 3. 根据课程设计报告的质量,如有雷同,则所有雷同的所有人均判为不及格。 六、建议参考资料 《C++面向对象程序设计》清华大学出版社

java计算器程序设计报告(含源代码)

JA V A课程设计之计算器设计报告含源代码|计算机数据库课程设计|精品课程网站设计|课程设计网报告总结心得本计算器可以进行简单的四则运算(加、减、乘、除)但仅限于十进制下,还可以进行(八进制,十进制,十六进制)之间的相互转换,八进制最多可以输入19位数,十进制最多可以输入18位数,十六进制最多可以输入14位数,backspace表示退格, clear 表示初始化,在window下直接运行(Jsp2003.bat)即可,界面为灰白对称。 题目:计算器 目录 1.摘要 2.概要设计 3.详细设计 4.测试分析 5.参考文献 一、摘要 本计算器可以进行简单的四则运算(加、减、乘、除)但仅限于十进制下,还可以进行(八进制,十进制,十六进制)之间的相互转换,八进制最多可以输入19位数,十进制最多可以输入18位数,十六进制最多可以输入14位数,backspace表示退格, clear表示初始化,在window下直接运行(Jsp2003.bat)即可,界面为灰白对称。 二、概要设计 (1)自定义类说明 ********************************************************** * 类名: This_number_too_big * * 作用: 自定义的异常类,用来处理计算结果溢出 * * 继承的父类: Exception类 * * 实现的接口: 没有 * ********************************************************** class This_number_too_big extends Exception { }//自定义的一个结果溢出异常类 ********************************************************** * 类名: Jsp2003 * * 作用: 主类。 * * 继承的父类: Frame类 * * 实现的接口: ItemListener类,ActionListener类 * ********************************************************** class Jsp2003 extends Frame implements ItemListener,ActionListener { public int number=0,length=18; //number是用来记录输入的数字个数, //length是用来设置在不同进制下允许输入的最多数字位数,默认为十进制 public char mark='n'; //设置运算符号为没有即为‘n’,它的值是‘+’‘-’‘*’‘/’ public double data=0; //设置运算数据为零 public char ch;

MFC计算器主要代码(C)

// Calculator_17483Dlg.cpp : implementation file // #include"stdafx.h" #include"Calculator_17483.h" #include"Calculator_17483Dlg.h" #include"afxdialogex.h" #ifdef _DEBUG #define new DEBUG_NEW #endif // CAboutDlg dialog used for App About class CAboutDlg : public CDialogEx { public: CAboutDlg(); // Dialog Data enum { IDD = IDD_ABOUTBOX }; protected: virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support // Implementation protected: DECLARE_MESSAGE_MAP() }; CAboutDlg::CAboutDlg() : CDialogEx(CAboutDlg::IDD) { }

void CAboutDlg::DoDataExchange(CDataExchange* pDX) { CDialogEx::DoDataExchange(pDX); } BEGIN_MESSAGE_MAP(CAboutDlg, CDialogEx) END_MESSAGE_MAP() // CCalculator_17483Dlg dialog CCalculator_17483Dlg::CCalculator_17483Dlg(CWnd* pParent /*=NULL*/) : CDialogEx(CCalculator_17483Dlg::IDD, pParent) { num1=0; num2=0; operation=0; point=0; nump_1=0; nump_2=0; m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); } void CCalculator_17483Dlg::DoDataExchange(CDataExchange* pDX) { CDialogEx::DoDataExchange(pDX); } BEGIN_MESSAGE_MAP(CCalculator_17483Dlg, CDialogEx) ON_WM_SYSCOMMAND() ON_WM_PAINT() ON_WM_QUERYDRAGICON()

MFC计算器课程设计报告

MFC计算器课程设计报告计算机应用3班黄锦湫,罗洁,饶益 指导老师:蒋鹏 2009.3.15

一.题目:利用MFC框架编写简易计算器 要求使用MFC框架在Visual Studio 6.0环境下编写一个简易的计算器,支持任意位数的 加减乘数,正负转换,并且实现BackSpace CE C功能。 二.设计过程 1.Windows消息处理机制的理解 首先编写程序需要对Windows程序的消息处理机制(Message Handle)有个比较清晰的了解。 Windows的程序都是通过消息来传送数据,有不需要用户参与的系统消息,比如异常处理等。还有用户消息,比如鼠标的单击,双击,键盘的键入等。 2.界面的设计 仿照Windows附件里面的计算器,在资源视图中画好界面,如图: 主要使用到Layout菜单中的Align功能对各个按钮进行对其,使界面更加整洁。拖出 的控件有上面的一个Edit控件用于显示数字,Button控件用于处理鼠标的消息。 3.

变量定义: double poz; //保存小数点的位置,初始化为1,表示poz-1个小数点。 double m_Dis; //Edit控件上需要显示的数字 BOOL point_flag; //小数点表示位,判定是否是小数,是小数为1,不是小数为0。 double numfirst; //保存计算过程中的前一个数字, double numsecond;//保存计算过程中的第二个数字 char op;//记录当前的计算符号,可以为’+’,’-’,’*’,’/’,’=’,’c’,’n’ 变量初始化: poz=1; m_Dis = 0.0; numfirst=0; numsecond=0; op=0; 4.设计思路 a)首先考虑对所有按键分为两类,数字类和符号类,0,1,2,3,4,5,6,7,8,9为数字类,+, -,*,/,=为符号类。数字在计算的过程中最多需要保存两个,所以定义了两个double 型变量numfirst和numsecond来进行存储。符号需要一个char op来存储。 b)然后考虑在计算的过程中,numfirst和numsecond的存储状态有三种,一种是 numfirst==0 && numsecond==0 也就是程序刚开始运行还没有开始录入数字的状 态。二种是numfirst!=0 && numsecond==0 也就是第一个数字已经录入,符号也已 经录入时候把m_Dis的值直接赋值给numfirst,第三种是numfirst!=0 &&numsecond!=0,表示可以通过op来把两数合并为一个数。 c)考虑到该计算器支持连续的计算,比如3.33+1.33*88/96= ?。所以必须在点符号 Button也要计算出之前的结果,通过判断op,来计算,把两个数字合并为一个数字, 方便下一次运算,功能近似于点=,所以把=也划分到符号类。 d)因为数字全部使用的是double,键入的数字必须通过一定的处理达到累加的效果, 加上小数和整数的处理差异性大,所以分别用point_flag来判断,分别出来小数和 整数。 5.成员函数及其释义 因为对OnNum0()到OnNum9()的处理函数差异仅在一个数字上,可以通过调用一个共同的函数OnCal(double num)来简化源代码长度,增加模块性。 void CCalcDlg::OnCal(double num) { //分三种状态来处理 if(numfirst!=0 && numsecond!=0) { if(point_flag==TRUE) //判定为小数 { poz*=0.1; //小数进位 m_Dis=m_Dis+poz*num;//递增 UpdateData(false); //把结果从内存传递到屏幕 } else

VS2008下计算器的MFC编程实现..

VS2008下计算器的MFC编程实现 简单的计算器编程,完全在VS2008下实现,主要用于熟悉VS2008的功能。 谨以此分享给和我一样初学MFC的朋友们。 STEP1:页面设计 1.新建工程 首先打开Visual Studio2008,选择MFC应用程序,设定好路径和工程名(这里我设置工程名为为“Calculator”)。这里要注意的是在创建向导步骤1的时候,我们选择“基本对话框”,其他选项默认即可。

之后我们可以点击完成便看到以下界面:

此时我们把当前页面上原配的控件按Delete全部清除(如下图) 2.添加控件 接着我们按照MFC自带的控件选项进行我们本次计算器的控件添加。点击右侧的工具栏按钮(以下是控件)

我们在原先清空的界面中依次用上图控件画出一个基本的计算器页面(如下图)。 影响用户的心情。

3.修改空间ID和Caption 上图各控件类型如下: Edit Control Button Group Box:选择其中一个GroupBox,右键单击,选择[属性]。在右边显示属性对话框。

每个控件“属性”都有属于它自己的ID,默认的Group Box的ID为IDC_STATIC,而且Cap当然我们为了“顾名思义”,对控件ID进行修改成我们容易辨认的(也可以不改),添加完控件并修改ID。4个Group Box的ID分别修改为IDC_STATIC_FRAME ,IDC_STATIC_IN, IDC_STATIC_RESULT, IDC_STATIC_BUTTON 控件Edit Control和Button也按相同的办法处理。ID设置完成可以在“Resourse.h”中查看。

C语言计算器源代码

C++ 语言编写。。#include #include #include using namespace std; const double pi = 3.; const double e = 2.7; const int SIZE = 1000; typ edef struct node//为了处理符号而建立的链表(如:1+(-2)) { char data; node *next; }node; typedef struct stack_num// 存储数的栈 { double *top; double *base; }stack_num; typedef struct stack_char// 存储运算符号的栈 { char *top; char *base; }stack_char; stack_ num S_num;// 定义 stack_char S_char;// 定义 char fu[18] = {'\n', ')', '+', '-', '*', '/', '%',匕 'Q', 'L', 'C', 'S', 'T', 'c', 's', 't', '('}; int compare[1000];// 表现出各运算符号的优先级 double shu[1000];// 存储”数”的数组 double dai_result;//运算的结果,是为了处理M运算(简介函数里有M的定义) int biao = 0;// 和dia_result 一样,为了处理M 运算 char line[SIZE];// 输入的所要计算的表达式 void init()// 初始化 { compare[fu[0]] = -2;// 用数字的大小表现出符号的优先级 compare[fu[1]] = -1; compare[fu[2]] = 2; compare[fu[3]] = 2; compare[fu[4]] = 4; compare[fu[5]] = 4; compare[fu[6]] = 4; compare[fu[7]] = 5; for(int i = 8; i <= 15; i++) compare[fu[i]] = 6; compare[fu[16]] = 7; S_num.base = (double*)malloc(sizeof(double)*SIZE);// 为栈开辟空间 S_char.base = (char*)malloc(sizeof(char)*SIZE);// 同上 S_num.top = S_num.base; S_char.top = S_char.base;

相关主题
文本预览
相关文档 最新文档