用c语言编写的计算器源代码
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
作品:科学计算器
作者:欧宗龙
编写环境:vc++6.0
语言:c
#include "stdafx.h"
#include
#include
#include
#include "resource.h"
#include "MainDlg.h"
#include
#include
#define PI 3.141593
BOOL A_Op=FALSE;
BOOL WINAPI Main_Proc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) {
switch(uMsg)
{
HANDLE_MSG(hWnd, WM_INITDIALOG, Main_OnInitDialog);
HANDLE_MSG(hWnd, WM_COMMAND, Main_OnCommand);
HANDLE_MSG(hWnd,WM_CLOSE, Main_OnClose);
}
return FALSE;
}
BOOL Main_OnInitDialog(HWND hwnd, HWND hwndFocus, LPARAM lParam)
{
return TRUE;
}
void TrimNumber(char a[])//判断并删除小数点后无用的零
{
for(unsigned i=0;i { if(a[i]=='.') { for(unsigned j=strlen(a)-1;j>=i;j--) { if(a[j]=='0') { a[j]='\0'; } else if(a[j]=='.') { a[j]='\0'; } else break; } } } } double Operate(char Operator,double n1,double n2) //判断符号,进行相应的运算{ if(Operator=='0') { } if(Operator=='+') { n2+=n1; } if(Operator=='-') { n2=n1-n2; } if(Operator=='*') { n2*=n1; } if(Operator=='/') { n2=n1/n2; } if(Operator=='^') { n2=pow(n1,n2); } return n2; } //////////////////////// //////////////////////// void IntBinary(char a[],int n) { if(n>1)IntBinary(a,n/2); sprintf(a,"%s%i",a,n%2); } void decimal(char a[],double m) { if(m>0.000001) { m=m*2; sprintf(a,"%s%d",a,(long)m); decimal(a,m-(long)m); } } void Binary(char a[],double Num) { char DecP[256]=""; double x,y; double *iptr=&y; x=modf(Num,iptr); decimal(DecP,x); IntBinary(a,(int)y); strcat(a,"."); strcat(a,DecP); } //////////////////////////////////// void Main_OnCommand(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify) { static DELTIMES=0; static char str[256]; static char Operator='0'; static double RNum[3]; switch(id) { case IDC_BUTTONN1://数字1 { if(A_Op) { SetDlgItemText(hwnd,IDC_EDIT,NULL); } GetDlgItemText(hwnd,IDC_EDIT,str,sizeof(str)); strcat(str,"1"); SetDlgItemText(hwnd,IDC_EDIT,str); RNum[1]=atof(str); A_Op=FALSE; } break; case IDC_BUTTONN2://数字2 { if(A_Op) { SetDlgItemText(hwnd,IDC_EDIT,NULL); } GetDlgItemText(hwnd,IDC_EDIT,str,sizeof(str)); strcat(str,"2"); SetDlgItemText(hwnd,IDC_EDIT,str); RNum[1]=atof(str); A_Op=FALSE; } break; case IDC_BUTTONN3://数字3 { if(A_Op) { SetDlgItemText(hwnd,IDC_EDIT,NULL); } GetDlgItemText(hwnd,IDC_EDIT,str,sizeof(str)); strcat(str,"3"); SetDlgItemText(hwnd,IDC_EDIT,str); RNum[1]=atof(str); A_Op=FALSE;