计算器c源代码
- 格式:docx
- 大小:51.89 KB
- 文档页数:8
作品:科学计算器
欧宗龙
编写环境:vc++
语言:c
#include ""
#include <>
#include <>
#include <>
#include ""
#include ""
#include <>
#include <>
#define PI
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 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) ;
strcat(a,DecP);
}
;
}
DELTIMES++;
SetDlgItemText(hwnd,IDC_EDIT,str);
A_Op=FALSE;
}
break;
case IDC_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;
case IDC_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;
case IDC_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;
case IDC_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;
case IDC_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; case IDC_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;
case IDC_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;
case IDC_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;
case IDC_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;
case IDC_BUTTONLN: //ln x
{
GetDlgItemText(hwnd,IDC_EDIT,str,sizeof(str));