#include <> #include <> #include "" #include "" #include <> #include">

计算器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));