数据结构大数相乘_第1页
数据结构大数相乘_第2页
数据结构大数相乘_第3页
数据结构大数相乘_第4页
数据结构大数相乘_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、课题名称:大数相乘1. 问题描述计算机的内存有限,而且各个函数类型的范围有限,如果要计算两个更大的乘数,就会超出范围,得到不精确的数,如何得到更精确的数,而又不受计算机内存空间的限制,本程序就可以解决大数相乘的问题。2. 设计思路这个程序的关键是如何保存大数的各个数字,以及如何处理大数乘法的进位问题。本人是运用栈的思想做的,先定义一个整型的栈,大数传入栈的整型数组中,在乘法运算函数中,先从一个栈中取出一个大数S1的个位上的数字a,再从另一个大数S2取出一个个位数字b,再将a*b+d(d为进位数)的个位数字压到栈S中,十位上进位的数字先保存到d中,再从S2中取出一个十位数,与a相乘,得到的个位数

2、字再压到栈S中,再从S2中取出一个数字,以此类推,直到S2中的数字被a乘完,得到一个新的大数S,将该栈保存到A栈中,将S销毁,再从S1中取出大数的十位数字,与S2的各个数字相乘,得到一个新的大数压到S中,将S保存到B中,将B移位处理后,然后与A相加得到另一个大数,以此类推,最终可相加得到想要的结果。这其中还用到了大数相加的原理。3. 数据结构设计前面提到,要用到栈的操作,这里,由于一个大数的最大长度是一定的,且大数最多执行的操作是插入和删除操作,所以顺序存储结构可以带来更大益处。为了便于大数相加,将大数的各个数字存入到整型数组中。#define MAXSIZE 100typedef struc

3、t nodeint dataMAXSIZE;int top;SeqStack,*PSeqStack;4. 功能函数设计(1)栈初始化函数Init_SeqStack(char *ch)此函数是将传入的字符处理成09的整数存入整型数组中。将*ch-0转化为整数存入S-datai中,结束标志是*ch不等于0(2) 首尾倒置函数Convert_SeqStack(PSeqStack A)此函数是将栈中的数值首尾颠倒,比如以前是1234,现在变成4321。只要将传入的A的栈中的元素依次取出压到C中,再返回C栈即可(3) 大数相加函数Add(PSeqStack S1,PSeqStack S2)此函数是处理两

4、个大数相加的功能。将传入的两个大数压到S1和S2中,当S1或S2不为空时,从S1中取出a,从S2中取出b,得到Result=(a+b)%10+d,其中初始时d=0,再判断Result是否大于10,如果小于10直接压到栈S中,如果大于10将Result%10压入栈中,令d=(a+b)/10+Result/10;如果运算后其中的一个栈空了,另一个不空的栈的数值加上进位数d再直接压到S中,这样可以得到一个大数。(4) 移位函数Crol(PSeqStack S,int n)将其中一位大数取出一位数字与另一位大数相乘的结果移位,然后相加,从各位开始,每乘一个数,都要移位一个0(5) 复制函数Copy_S

5、eqStack(PSeqStack A,PSeqStack B)将一个A栈中的元素拷贝到B栈中,先将A中的元素压到C栈中,再将C栈中的元素压到B栈中,即可实现复制功能(6) 大数相乘函数Multiply(PSeqStack S1,PSeqStack S2)此函数是实现大数相乘的核心算法。主要思想就是将S1中取出个位数a,分别与S2中的各个数相乘得到新的大数,再取S1中的十位数,与S1大数相乘,以此类推,然后将各个大数进行移位处理再相加5. 编码实现#include stdafx.h#include stdlib.h#include stdio.h#include string.h#define

6、 MAXSIZE 100typedef struct nodeint dataMAXSIZE;int top;SeqStack,*PSeqStack;void Destroy_SeqStack(PSeqStack *S)if(*S)free(*S);*S=NULL;return;int Push_SeqStack(PSeqStack S,int x)if(S-top=MAXSIZE-1)return 0;elseS-top+;S-dataS-top=x;return 1;PSeqStack Init_SeqStack(char *ch)PSeqStack S;int i=0;char *hea

7、d;S=(PSeqStack)malloc(sizeof(SeqStack);if(S)S-top=-1;head=ch;while(*ch!=0)if(*head=-)S-datai=(*(+ch)-0)*(-1);elseS-datai=*ch-0;ch+;S-top+;i+;return S;int GetTop_SeqStack(PSeqStack S,int *x)if(S-top=-1)return 0;else*x=S-dataS-top;return 1;int Empty_SeqStack(PSeqStack S)if(S-top=-1)return 1;elsereturn

8、 0;int Pop_SeqStack(PSeqStack S,int *x)if(Empty_SeqStack(S)return 0;else*x=S-dataS-top;S-top-;return 1;void print(PSeqStack S)int i;for(i=0;itop;i+)printf(%d,S-datai);/将栈顶变成栈尾,栈尾变成栈顶PSeqStack Convert_SeqStack(PSeqStack A)int x;PSeqStack C;C=(PSeqStack)malloc(sizeof(SeqStack);if(C)C-top=-1;while(!Emp

9、ty_SeqStack(A)Pop_SeqStack(A,&x);Push_SeqStack(C,x);return C;PSeqStack Add(PSeqStack S1,PSeqStack S2)PSeqStack S;int d=0,a,b,Result;S=(PSeqStack)malloc(sizeof(SeqStack);if(S)S-top=-1;while(!Empty_SeqStack(S1)&!Empty_SeqStack(S2)Pop_SeqStack(S1,&a);Pop_SeqStack(S2,&b);Result=(a+b)%10+d;/判断Result是否大于等

10、于10if(Result/10=0)Push_SeqStack(S,Result);d=(a+b)/10;else if(Result/100)Push_SeqStack(S,Result%10);d=(a+b)/10+Result/10;while(!Empty_SeqStack(S1)Pop_SeqStack(S1,&a);Result=a%10+d;if(Result/10=0)Push_SeqStack(S,Result);d=a/10;elsePush_SeqStack(S,Result%10);d=a/10+Result/10;while(!Empty_SeqStack(S2)Po

11、p_SeqStack(S2,&a);Result=a%10+d;if(Result/10=0)Push_SeqStack(S,Result);d=a/10;elsePush_SeqStack(S,Result%10);d=a/10+Result/10;if(d!=0)Push_SeqStack(S,1);S=Convert_SeqStack(S);return S;PSeqStack Crol(PSeqStack S,int n)int i;for(i=0;itop=-1;while(!Empty_SeqStack(A)Pop_SeqStack(A,&x);Push_SeqStack(C,x)

12、;while(!Empty_SeqStack(B)Pop_SeqStack(B,&x);while(!Empty_SeqStack(C)Pop_SeqStack(C,&x);Push_SeqStack(A,x);Push_SeqStack(B,x);PSeqStack Multiply(PSeqStack S1,PSeqStack S2)PSeqStack S,A,B;int a,b,c,d=0,Result,i,count=0;S=(PSeqStack)malloc(sizeof(SeqStack);if(S)S-top=-1;A=(PSeqStack)malloc(sizeof(SeqSt

13、ack);if(A)A-top=-1;B=(PSeqStack)malloc(sizeof(SeqStack);if(B)B-top=-1;while(!Empty_SeqStack(S1)Pop_SeqStack(S1,&a);d=0;for(i=S2-top;i-1;i-)b=S2-datai;/printf(%d,b);Result=a*b%10+d;if(Result/10=0)Push_SeqStack(S,Result);d=a*b/10;else if(Result/100)Push_SeqStack(S,Result%10);d=a*b/10+Result/10;if(d!=0

14、)Push_SeqStack(S,d);/printf(nS为:);/print(S);S=Convert_SeqStack(S);if(count=0)Copy_SeqStack(S,A);/将S栈拷贝到A栈/printf(nA为:);/print(A);elseB=Crol(S,count);/将B左移count位/printf(nB为:);/print(B);A=Add(A,B);/printf(nA为:);/print(A);count+;Destroy_SeqStack(&S);S=(PSeqStack)malloc(sizeof(SeqStack);if(S)S-top=-1;A=

15、Convert_SeqStack(A);while(GetTop_SeqStack(A,&c)&c=0)Pop_SeqStack(A,&c);if(Empty_SeqStack(A)Push_SeqStack(A,0);A=Convert_SeqStack(A);return A;void main()PSeqStack A,B,C;int i;/char *ch1=1234876543329,*ch2=78656453534223656896;/char *ch1=99,*ch2=1;/char *ch1=111111111111111111111,*ch2=1111111111111111

16、11111;/char *ch1=11111111,*ch2=-11111111;/char *ch1=99996757657464,*ch2=0;char ch150,ch250;system(color 70);printf(请输入第一个大数:);gets(ch1);printf(n请输入第二个大数:);gets(ch2);printf(该乘式为:);A=Init_SeqStack(ch1);print(A);printf(*);B=Init_SeqStack(ch2);print(B);printf(n);/C=Add(A,B);C=Multiply(A,B);printf(n计算结果为

17、:);for(i=0;itop;i+)printf(%d,C-datai);/print(C);printf(n);/printf(实际结果为:78656454769100200225);6. 运行与测试首先屏幕会提示你输入第一个大数,然后按回车键,屏幕会提示你输入第二个大数,再按回车键,即可得到计算结果7. 设计中存在的问题及感想本程序的缺陷对负数以及小数相乘没有处理好,只能处理大的整数,这是一个遗憾。其实这个大数相乘程序我是根据大数相加的思想来做的,大数相加的进位思想是加进位,而大数相乘是乘进位,我想这是一样的原理。大数相加时,进位数不超过1,而两个一位数相乘得到的进位数不超过8所以进位数

18、都控制在一位数以内,这就不太复杂了。不过本程序还有一个问题,就是计算效率不高,虽然测试的时间不慢,但是我当测试100000个数时,其效率可见明显降低。本来想用傅里叶算法的,可是傅里叶算法思想没看懂,所以用了自己的本方法。课题名称:模拟计算器1. 问题描述如果让我们计算4+2*(8-5)-4/2=?我们该怎么计算?为了实现这个功能,特地做了这个计算器,可以对包含加、减、乘、除的运算符的任意整型式进行求解。2. 设计思路这个程序的关键就是如何将输入的中缀表达式转化为后缀表达式,然后再对后缀表达式进行求值运算。对于中缀表达式转为后缀表达式,在参数先定义两个指针型字符串infixexp和postfix

19、exp,infixexp是传入的中缀表达式字符串,postfixexp是传出的后缀表达式字符串,再定义一个栈,当栈顶元素不等于#时,然后判断infixexp中的每一个字符是不是数,如果是数,传入postfiexp中,否则进一步判断w是不是),若不是判断栈顶元素的优先级,将操作符压入栈中,以此类推,最终得到后缀表达式。对于后缀表达式的运算,主要判断是不是数字还是操作符,如果是数字压到栈中,如果是操作符,从栈中取出两个数字运算。本人对于本程序还设计了一个操作界面,用的是MFC语言设计的,操作界面主要有一个文本框和19个按钮组成,有清零按钮,删除按钮,加减乘除按钮,以及各个操作数按钮,=按钮,这些按

20、钮大部分都是传入相应的字符串到文本框中,当按下=号按钮时,再从文本框中得到字符串,对字符串进行处理,然后运算出结果。3. 数据结构设计主要建立了一个CCaculatordlg的类,该类继承MFC中CDialog的特征,这样可以在MFC中建立一个单文档对话框,这个对话框可以添加一些控件来做成一个计算器界面,如何对于该计算器操作,就要看控制各个控件函数怎么实现的。这里的类如下:class CCaculatorDlg : public CDialog/ Constructionpublic:int postfix_exp(char *A);int infix_exp_value(char *infi

21、xexp,char *postfixexp);int priority(char op);int IsNum(char c);/int infix_exp_value(char *infix,char *postfixexp);double num;/char CalculateExpre;/double CalculateResult;/double CalculateNum;char ch50,ch110,ch210,op;char text50;/stack S;CCaculatorDlg(CWnd* pParent = NULL); / standard constructor/ Di

22、alog Data/AFX_DATA(CCaculatorDlg)enum IDD = IDD_CACULATOR ;/ NOTE: the ClassWizard will add data members here/AFX_DATA/ Overrides/ ClassWizard generated virtual function overrides/AFX_VIRTUAL(CCaculatorDlg)protected:virtual void DoDataExchange(CDataExchange* pDX); / DDX/DDV support/AFX_VIRTUAL/ Impl

23、ementationprotected:/ Generated message map functions/AFX_MSG(CCaculatorDlg)afx_msg void OnAdd();afx_msg void OnBtn1();afx_msg void OnBtn0();afx_msg void OnBtn2();afx_msg void OnBtn3();afx_msg void OnBtn4();afx_msg void OnBtn5();afx_msg void OnBtn6();afx_msg void OnBtn7();afx_msg void OnBtn8();afx_m

24、sg void OnBtn9();afx_msg void OnClear();afx_msg void OnDivide();afx_msg void OnEquals();afx_msg void OnMinus();afx_msg void OnMultiply();afx_msg void OnReset();virtual BOOL OnInitDialog();afx_msg void OnRbrackets();afx_msg void OnLbrackets();/AFX_MSGDECLARE_MESSAGE_MAP();4. 功能函数设计(1) 按键0函数CCaculator

25、Dlg:OnBtn0( )先得到文本框字符串,然后将该字符串末尾处加0,再将所有的字符串显示到文本框中(2) 按键1函数CCaculatorDlg:OnBtn1( )先得到文本框字符串,然后将该字符串末尾处加1,再将所有的字符串显示到文本框中(3) 按键2函数CCaculatorDlg:OnBtn2( )先得到文本框字符串,然后将该字符串末尾处加2,再将所有的字符串显示到文本框中(4) 按键3函数CCaculatorDlg:OnBtn3( )先得到文本框字符串,然后将该字符串末尾处加3,再将所有的字符串显示到文本框中(5) 按键4函数CCaculatorDlg:OnBtn4( )先得到文本框字

26、符串,然后将该字符串末尾处加4,再将所有的字符串显示到文本框中(6) 按键5函数CCaculatorDlg:OnBtn5( )先得到文本框字符串,然后将该字符串末尾处加5,再将所有的字符串显示到文本框中(7) 按键6函数CCaculatorDlg:OnBtn6( )先得到文本框字符串,然后将该字符串末尾处加6,再将所有的字符串显示到文本框中(8) 按键7函数CCaculatorDlg:OnBtn7( )先得到文本框字符串,然后将该字符串末尾处加7,再将所有的字符串显示到文本框中(9) 按键8函数CCaculatorDlg:OnBtn8( )先得到文本框字符串,然后将该字符串末尾处加8,再将所有

27、的字符串显示到文本框中(10) 按键9函数CCaculatorDlg:OnBtn9( )先得到文本框字符串,然后将该字符串末尾处加9,再将所有的字符串显示到文本框中(11) 按键加函数CCaculatorDlg:OnAdd( )先得到文本框字符串,然后将该字符串末尾处加+字符,再将所有的字符串显示到文本框中(12) 按键减函数CCaculatorDlg:OnMinus( )先得到文本框字符串,然后将该字符串末尾处加-字符,再将所有的字符串显示到文本框中(13) 按键乘函数CCaculatorDlg:OnMultiply( )先得到文本框字符串,然后将该字符串末尾处加*,再将所有的字符串显示到文

28、本框中(14) 按键除函数CCaculatorDlg:OnDivide( )先得到文本框字符串,然后将该字符串末尾处加,再将所有的字符串显示到文本框中(15) 按键清除函数CCaculatorDlg:OnClear( )先得到文本框字符串,然后将该字符串的最后一个字符删除,再将所有的字符串显示到文本框中(16) 按键左括号函数CCaculatorDlg:OnRbrackets()先得到文本框字符串,然后将该字符串末尾处加(,再将所有的字符串显示到文本框中(17) 按键又括号函数CCaculatorDlg:OnLbrackets()先得到文本框字符串,然后将该字符串末尾处加),再将所有的字符串显

29、示到文本框中(18) 按键左括号函数CCaculatorDlg:OnReset()将文本框中的字符串清零(19) 判断是否是数字CCaculatorDlg:IsNum(char c)如果传入的字符在09范围内则是数字(20) 优先级函数CCaculatorDlg:priority(char op1)根据传入的字符判断优先级(21) 将中缀表达式转为后缀表达式CCaculatorDlg:infix_exp_value(char *infixexp, char *postfixexp)Infixexp是传入的中缀表达式,即从文本框得到的字符,而postfixexp是后缀表达式,将要传出去的字符串(

30、22) 计算后缀表达式的值postfix_exp(char *A)将转化后的后缀表达式的字符串,传入该函数中,可以运算出结果(23) 按键等于函数CCaculatorDlg:OnEquals()先从文本框中得到字符串,再将字符串通过infix_exp_value转华为后缀表达式,再通过postfix_exp转化为数值,将计算所得的数值转化为字符显示到文本框中。5. 编码实现#include stdafx.h#include Chess.h#include CaculatorDlg.h#include math.h#include using namespace std;#ifdef _DEBU

31、G#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE = _FILE_;#endif/ CCaculatorDlg dialogCCaculatorDlg:CCaculatorDlg(CWnd* pParent /*=NULL*/): CDialog(CCaculatorDlg:IDD, pParent)/AFX_DATA_INIT(CCaculatorDlg)/ NOTE: the ClassWizard will add member initialization here/AFX_DATA_INITvoid CCacula

32、torDlg:DoDataExchange(CDataExchange* pDX)CDialog:DoDataExchange(pDX);/AFX_DATA_MAP(CCaculatorDlg)/ NOTE: the ClassWizard will add DDX and DDV calls here/AFX_DATA_MAPBEGIN_MESSAGE_MAP(CCaculatorDlg, CDialog)/AFX_MSG_MAP(CCaculatorDlg)ON_BN_CLICKED(IDC_ADD, OnAdd)ON_BN_CLICKED(IDC_BTN_1, OnBtn1)ON_BN_

33、CLICKED(IDC_BTN_0, OnBtn0)ON_BN_CLICKED(IDC_BTN_2, OnBtn2)ON_BN_CLICKED(IDC_BTN_3, OnBtn3)ON_BN_CLICKED(IDC_BTN_4, OnBtn4)ON_BN_CLICKED(IDC_BTN_5, OnBtn5)ON_BN_CLICKED(IDC_BTN_6, OnBtn6)ON_BN_CLICKED(IDC_BTN_7, OnBtn7)ON_BN_CLICKED(IDC_BTN_8, OnBtn8)ON_BN_CLICKED(IDC_BTN_9, OnBtn9)ON_BN_CLICKED(IDC_

34、CLEAR, OnClear)ON_BN_CLICKED(IDC_DIVIDE, OnDivide)ON_BN_CLICKED(IDC_EQUALS, OnEquals)ON_BN_CLICKED(IDC_MINUS, OnMinus)ON_BN_CLICKED(IDC_MULTIPLY, OnMultiply)ON_BN_CLICKED(IDC_RESET, OnReset)ON_BN_CLICKED(IDC_RBRACKETS, OnRbrackets)ON_BN_CLICKED(IDC_LBRACKETS, OnLbrackets)/AFX_MSG_MAPEND_MESSAGE_MAP(

35、)/ CCaculatorDlg message handlersvoid CCaculatorDlg:OnAdd() / TODO: Add your control notification handler code hereUpdateData(); int len;GetDlgItem(IDC_EDIT1)-GetWindowText(text,50);len=strlen(text);/*textlen=$;textlen+1=+;textlen+2=0;*/textlen=+;textlen+1=0;GetDlgItem(IDC_EDIT1)-SetWindowText(text)

36、;UpdateData(FALSE); void CCaculatorDlg:OnBtn0() / TODO: Add your control notification handler code hereUpdateData(); int len;GetDlgItem(IDC_EDIT1)-GetWindowText(text,50);len=strlen(text);textlen=0;textlen+1=0;GetDlgItem(IDC_EDIT1)-SetWindowText(text);UpdateData(FALSE); void CCaculatorDlg:OnBtn1() /

37、TODO: Add your control notification handler code hereUpdateData(); int len;GetDlgItem(IDC_EDIT1)-GetWindowText(text,50);len=strlen(text);textlen=1;textlen+1=0;GetDlgItem(IDC_EDIT1)-SetWindowText(text);UpdateData(FALSE); void CCaculatorDlg:OnBtn2() / TODO: Add your control notification handler code h

38、ereint len;GetDlgItem(IDC_EDIT1)-GetWindowText(text,50);len=strlen(text);textlen=2;textlen+1=0;GetDlgItem(IDC_EDIT1)-SetWindowText(text);UpdateData(FALSE);void CCaculatorDlg:OnBtn3() / TODO: Add your control notification handler code hereint len;GetDlgItem(IDC_EDIT1)-GetWindowText(text,50);len=strle

39、n(text);textlen=3;textlen+1=0;GetDlgItem(IDC_EDIT1)-SetWindowText(text);void CCaculatorDlg:OnBtn4() / TODO: Add your control notification handler code hereint len;GetDlgItem(IDC_EDIT1)-GetWindowText(text,50);len=strlen(text);textlen=4;textlen+1=0;GetDlgItem(IDC_EDIT1)-SetWindowText(text);void CCacul

40、atorDlg:OnBtn5() / TODO: Add your control notification handler code hereint len;GetDlgItem(IDC_EDIT1)-GetWindowText(text,50);len=strlen(text);textlen=5;textlen+1=0;GetDlgItem(IDC_EDIT1)-SetWindowText(text);void CCaculatorDlg:OnBtn6() / TODO: Add your control notification handler code hereint len;Get

41、DlgItem(IDC_EDIT1)-GetWindowText(text,50);len=strlen(text);textlen=6;textlen+1=0;GetDlgItem(IDC_EDIT1)-SetWindowText(text);void CCaculatorDlg:OnBtn7() / TODO: Add your control notification handler code hereint len;GetDlgItem(IDC_EDIT1)-GetWindowText(text,50);/if(GetDlgItem(IDC_EDIT1)-GetWindowText(t

42、ext,50)=+|GetDlgItem(IDC_EDIT1)-GetWindowText(text,50)=-/|GetDlgItem(IDC_EDIT1)-GetWindowText(text,50)=*|GetDlgItem(IDC_EDIT1)-GetWindowText(text,50)=/)/GetDlgItem(IDC_EDIT1)-SetWindowText();/GetDlgItem(IDC_EDIT1)-GetWindowText(text,50);/len=strlen(text);textlen=7;textlen+1=0;GetDlgItem(IDC_EDIT1)-S

43、etWindowText(text);void CCaculatorDlg:OnBtn8() / TODO: Add your control notification handler code hereint len;GetDlgItem(IDC_EDIT1)-GetWindowText(text,50);len=strlen(text);textlen=8;textlen+1=0;GetDlgItem(IDC_EDIT1)-SetWindowText(text);void CCaculatorDlg:OnBtn9() / TODO: Add your control notificatio

44、n handler code hereint len;GetDlgItem(IDC_EDIT1)-GetWindowText(text,50);len=strlen(text);textlen=9;textlen+1=0;GetDlgItem(IDC_EDIT1)-SetWindowText(text);void CCaculatorDlg:OnClear() / TODO: Add your control notification handler code hereint len;GetDlgItem(IDC_EDIT1)-GetWindowText(text,50);len=strlen

45、(text);textlen-1=0;GetDlgItem(IDC_EDIT1)-SetWindowText(text);void CCaculatorDlg:OnDivide() / TODO: Add your control notification handler code hereUpdateData(); int len;GetDlgItem(IDC_EDIT1)-GetWindowText(text,50);len=strlen(text);/*textlen=$;textlen+1=/;textlen+2=0;*/textlen=/;textlen+1=0;GetDlgItem

46、(IDC_EDIT1)-SetWindowText(text);UpdateData(FALSE); /DEL void CCaculatorDlg:OnDot() /DEL /DEL / TODO: Add your control notification handler code here/DEL /DEL void CCaculatorDlg:OnEquals() / TODO: Add your control notification handler code hereUpdateData();int num1,num2,num3,len,len1;GetDlgItem(IDC_E

47、DIT1)-GetWindowText(text,50);len=strlen(text);/*textlen=$;textlen+1=#;textlen+2=0;*/textlen=#;textlen+1=0;infix_exp_value(text,ch);/len1=strlen(ch);/chlen1=0;/chlen1+1=0;/计算后缀表达式的值num1=postfix_exp(ch);/num1=atoi(ch1);/num2=atoi(ch2);/*if(op=+)num3=num1+num2;else if(op=-)/MessageBox(op=-);num3=num1-n

48、um2;else if(op=*)num3=num1*num2;else if(op=/)if(num2=0)MessageBox(亲,除数不能为零你知道不?);GetDlgItem(IDC_EDIT1)-SetWindowText();elsenum3=num1/num2;*/itoa(num1,ch1,10);GetDlgItem(IDC_EDIT1)-SetWindowText(ch1);void CCaculatorDlg:OnMinus() / TODO: Add your control notification handler code hereUpdateData(); int len;GetDlgItem(IDC_EDIT1)-GetWindowText(text,50);len=strlen(text);/*textlen=$;textlen+1=-;textlen+2=0;*/textlen=-;textlen+1=0;GetDlgItem(IDC_EDIT1)-SetW

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论