用c语言编写的计算器源代码.docx
《用c语言编写的计算器源代码.docx》由会员分享,可在线阅读,更多相关《用c语言编写的计算器源代码.docx(12页珍藏版)》请在冰豆网上搜索。
用c语言编写的计算器源代码
作者:
欧宗龙
编写环境:
vc++
语言:
c
#include""
#include<>
#include<>
#include<>
#include""
#include""
#include<>
#include<>
#definePI
BOOLA_Op=FALSE;
BOOLWINAPIMain_Proc(HWNDhWnd,UINTuMsg,WPARAMwParam,LPARAMlParam)
{
switch(uMsg)
{
HANDLE_MSG(hWnd,WM_INITDIALOG,Main_OnInitDialog);
HANDLE_MSG(hWnd,WM_COMMAND,Main_OnCommand);
HANDLE_MSG(hWnd,WM_CLOSE,Main_OnClose);
}
returnFALSE;
}
BOOLMain_OnInitDialog(HWNDhwnd,HWNDhwndFocus,LPARAMlParam)
{
returnTRUE;
}
voidTrimNumber(chara[])
{
for(unsignedj=strlen(a)-1;j>=i;j--)
{
if(a[j]=='0')
{
a[j]='\0';
}
elseif(a[j]=='.')
{
a[j]='\0';
}
elsebreak;
}
}
}
}
doubleOperate(charOperator,doublen1,doublen2);
strcat(a,DecP);
}
;
}
DELTIMES++;
SetDlgItemText(hwnd,IDC_EDIT,str);
A_Op=FALSE;
}
break;
caseIDC_BUTTONADD:
//加法运算
{
RNum[1]=atof(str);
RNum[0]=RNum[1];
RNum[1]=RNum[2];
RNum[2]=Operate(Operator,RNum[1],RNum[0]);
sprintf(str,"%f",RNum[2]);
TrimNumber(str);
SetDlgItemText(hwnd,IDC_EDIT,str);
Operator='+';
DELTIMES=0;
A_Op=TRUE;
}
break;
caseIDC_BUTTONSUB:
//减法运算
{
RNum[1]=atof(str);
RNum[0]=RNum[1];
RNum[1]=RNum[2];
RNum[2]=Operate(Operator,RNum[1],RNum[0]);
sprintf(str,"%f",RNum[2]);
TrimNumber(str);
SetDlgItemText(hwnd,IDC_EDIT,str);
DELTIMES=0;A_Op=TRUE;
Operator='-';
}
break;
caseIDC_BUTTONMUL:
//乘法运算
{
RNum[1]=atof(str);
RNum[0]=RNum[1];
RNum[1]=RNum[2];
RNum[2]=Operate(Operator,RNum[1],RNum[0]);
sprintf(str,"%f",RNum[2]);
TrimNumber(str);
SetDlgItemText(hwnd,IDC_EDIT,str);
Operator='*';
DELTIMES=0;
A_Op=TRUE;
}
break;
caseIDC_BUTTONDIV:
//除法运算
{
RNum[1]=atof(str);
RNum[0]=RNum[1];
RNum[1]=RNum[2];
RNum[2]=Operate(Operator,RNum[1],RNum[0]);
sprintf(str,"%f",RNum[2]);
TrimNumber(str);
SetDlgItemText(hwnd,IDC_EDIT,str);
Operator='/';
DELTIMES=0;
A_Op=TRUE;
}
break;
case{GetDlgItemText(hwnd,IDC_EDIT,str,sizeof(str));
RNum[1]=atof(str);
RNum[0]=RNum[1];
RNum[1]=RNum[2];
RNum[2]=Operate(Operator,RNum[1],RNum[0]);
sprintf(str,"%f",RNum[2]);
TrimNumber(str);
SetDlgItemText(hwnd,IDC_EDIT,str);
Operator='^';
DELTIMES=0;
}
break;
caseIDC_BUTTONPI:
//圆周率PI,弧度
{
GetDlgItemText(hwnd,IDC_EDIT,str,sizeof(str));
if(atof(str)!
=0)
{
RNum[2]=atof(str)*PI;
sprintf(str,"%f",RNum[2]);
TrimNumber(str);
SetDlgItemText(hwnd,IDC_EDIT,str);
}
else
{
sprintf(str,"%f",PI);
SetDlgItemText(hwnd,IDC_EDIT,str);
}
A_Op=TRUE;
}
break;
caseIDC_BUTTONSQRT:
//开根号
{
GetDlgItemText(hwnd,IDC_EDIT,str,sizeof(str));
RNum[2]=sqrt(atof(str));
sprintf(str,"%f",RNum[2]);
TrimNumber(str);
SetDlgItemText(hwnd,IDC_EDIT,str);
A_Op=TRUE;
}
break;
caseIDC_BUTTONSIN:
//三角函数sin函数
{
GetDlgItemText(hwnd,IDC_EDIT,str,sizeof(str));
RNum[2]=sin(atof(str));
sprintf(str,"%f",RNum[2]);
TrimNumber(str);
SetDlgItemText(hwnd,IDC_EDIT,str);
A_Op=TRUE;
}
break;
case{
GetDlgItemText(hwnd,IDC_EDIT,str,sizeof(str));
RNum[2]=cos(atof(str));
sprintf(str,"%f",RNum[2]);
TrimNumber(str);
SetDlgItemText(hwnd,IDC_EDIT,str);
A_Op=TRUE;
}
break;
case{
GetDlgItemText(hwnd,IDC_EDIT,str,sizeof(str));
RNum[2]=tan(atof(str));
sprintf(str,"%f",RNum[2]);
TrimNumber(str);
SetDlgItemText(hwnd,IDC_EDIT,str);
A_Op=TRUE;
}
break;
caseIDC_BUTTONSQ:
//平方
{
GetDlgItemText(hwnd,IDC_EDIT,str,sizeof(str));
RNum[2]=atof(str)*atof(str);
sprintf(str,"%f",RNum[2]);
TrimNumber(str);
SetDlgItemText(hwnd,IDC_EDIT,str);
A_Op=TRUE;
}
break;
case{
GetDlgItemText(hwnd,IDC_EDIT,str,sizeof(str));
RNum[2]=atof(str)*atof(str)*atof(str);
sprintf(str,"%f",RNum[2]);
TrimNumber(str);
SetDlgItemText(hwnd,IDC_EDIT,str);
A_Op=TRUE;
}
break;
case{
GetDlgItemText(hwnd,IDC_EDIT,str,sizeof(str));
RNum[2]=exp(atof(str));
sprintf(str,"%f",RNum[2]);
TrimNumber(str);
SetDlgItemText(hwnd,IDC_EDIT,str);
A_Op=TRUE;
}
break;
caseIDC_BUTTON10{
GetDlgItemText(hwnd,IDC_EDIT,str,sizeof(str));
RNum[2]=pow(10,atof(str));
sprintf(str,"%f",RNum[2]);
TrimNumber(str);
SetDlgItemText(hwnd,IDC_EDIT,str);
A_Op=TRUE;
}
break;
caseIDC_BUTTONLN:
//lnx
{
GetDlgItemText(hwnd,IDC_EDIT,str,sizeof(str));
RNum[2]=log(atof(str));
sprintf(str,"%f",RNum[2]);
TrimNumber(str);
SetDlgItemText(hwnd,IDC_EDIT,str);
A_Op=TRUE;
}
break;
caseIDC_BUTTONLOG10:
//log10
{
GetDlgItemText(hwnd,IDC_EDIT,str,sizeof(str));
RNum[2]=log10(atof(str));
sprintf(str,"%f",RNum[2]);
TrimNumber(str);
SetDlgItemText(hwnd,IDC_EDIT,str);
A_Op=TRUE;
}
break;
caseIDC_BUTTONBINARY:
//十进制转换为二进制
{
chara[256]="";
GetDlgItemText(hwnd,IDC_EDIT,str,sizeof(str));
RNum[2]=atof(str);
Binary(a,RNum[2]);
strcpy(str,a);
TrimNumber(str);
SetDlgItemText(hwnd,IDC_EDIT,str);
A_Op=TRUE;
}
break;
case{
DELTIMES=0;
Operator='0';
RNum[0]=RNum[1]=RNum[2]=0;
memset(str,0,sizeof(str));
SetDlgItemText(hwnd,IDC_EDIT,NULL);
A_Op=FALSE;
}
break;
case{
GetDlgItemText(hwnd,IDC_EDIT,str,sizeof(str));
inti=strlen(str);
str[i-1]='\0';
SetDlgItemText(hwnd,IDC_EDIT,str);
}
break;
case{
GetDlgItemText(hwnd,IDC_EDIT,str,sizeof(str));
RNum[1]=atof(str);
RNum[0]=RNum[1];
RNum[1]=RNum[2];
RNum[2]=Operate(Operator,RNum[1],RNum[0]);
sprintf(str,"%f",RNum[2]);
TrimNumber(str);
SetDlgItemText(hwnd,IDC_EDIT,str);
Operator='0';
DELTIMES=0;
}
break;
default:
break;
}
}
voidMain_OnClose(HWNDhwnd)
{
EndDialog(hwnd,0);
}
本人拙作,如有不足之处请谅解。