用c语言编写的计算器源代码教学文稿.docx

上传人:b****5 文档编号:3570896 上传时间:2022-11-24 格式:DOCX 页数:18 大小:59.87KB
下载 相关 举报
用c语言编写的计算器源代码教学文稿.docx_第1页
第1页 / 共18页
用c语言编写的计算器源代码教学文稿.docx_第2页
第2页 / 共18页
用c语言编写的计算器源代码教学文稿.docx_第3页
第3页 / 共18页
用c语言编写的计算器源代码教学文稿.docx_第4页
第4页 / 共18页
用c语言编写的计算器源代码教学文稿.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

用c语言编写的计算器源代码教学文稿.docx

《用c语言编写的计算器源代码教学文稿.docx》由会员分享,可在线阅读,更多相关《用c语言编写的计算器源代码教学文稿.docx(18页珍藏版)》请在冰豆网上搜索。

用c语言编写的计算器源代码教学文稿.docx

用c语言编写的计算器源代码教学文稿

 

用c语言编写的计算器源代码

作品:

科学计算器

作者:

欧宗龙

编写环境:

vc++6.0

语言:

c

#include"stdafx.h"

#include

#include

#include

#include"resource.h"

#include"MainDlg.h"

#include

#include

#definePI3.141593

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(unsignedi=0;i

{

if(a[i]=='.')

{

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)//判断符号,进行相应的运算

{

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);

}

returnn2;

}

////////////////////////

////////////////////////

voidIntBinary(chara[],intn)

{

if(n>1)IntBinary(a,n/2);

sprintf(a,"%s%i",a,n%2);

}

voiddecimal(chara[],doublem)

{

if(m>0.000001)

{

m=m*2;

sprintf(a,"%s%d",a,(long)m);

decimal(a,m-(long)m);

}

}

voidBinary(chara[],doubleNum)

{

charDecP[256]="";

doublex,y;

double*iptr=&y;

x=modf(Num,iptr);

decimal(DecP,x);

IntBinary(a,(int)y);

strcat(a,".");

strcat(a,DecP);

}

////////////////////////////////////

voidMain_OnCommand(HWNDhwnd,intid,HWNDhwndCtl,UINTcodeNotify)

{

staticDELTIMES=0;

staticcharstr[256];

staticcharOperator='0';

staticdoubleRNum[3];

switch(id)

{

caseIDC_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;

caseIDC_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;

caseIDC_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;

}

break;

caseIDC_BUTTONN4:

//数字4

{

if(A_Op)

{

SetDlgItemText(hwnd,IDC_EDIT,NULL);

}

GetDlgItemText(hwnd,IDC_EDIT,str,sizeof(str));

strcat(str,"4");

SetDlgItemText(hwnd,IDC_EDIT,str);

RNum[1]=atof(str);

A_Op=FALSE;

}

break;

caseIDC_BUTTONN5:

//数字5

{

if(A_Op)

{

SetDlgItemText(hwnd,IDC_EDIT,NULL);

}

GetDlgItemText(hwnd,IDC_EDIT,str,sizeof(str));

strcat(str,"5");

SetDlgItemText(hwnd,IDC_EDIT,str);

RNum[1]=atof(str);

A_Op=FALSE;

}

break;

caseIDC_BUTTONN6:

//数字6

{

if(A_Op)

{

SetDlgItemText(hwnd,IDC_EDIT,NULL);

}

GetDlgItemText(hwnd,IDC_EDIT,str,sizeof(str));

strcat(str,"6");

SetDlgItemText(hwnd,IDC_EDIT,str);

RNum[1]=atof(str);

A_Op=FALSE;

}

break;

caseIDC_BUTTONN7:

//数字7

{

if(A_Op)

{

SetDlgItemText(hwnd,IDC_EDIT,NULL);

}

GetDlgItemText(hwnd,IDC_EDIT,str,sizeof(str));

strcat(str,"7");

SetDlgItemText(hwnd,IDC_EDIT,str);

RNum[1]=atof(str);

A_Op=FALSE;

}

break;

caseIDC_BUTTONN8:

//数字8

{

if(A_Op)

{

SetDlgItemText(hwnd,IDC_EDIT,NULL);

}

GetDlgItemText(hwnd,IDC_EDIT,str,sizeof(str));

strcat(str,"8");

SetDlgItemText(hwnd,IDC_EDIT,str);

RNum[1]=atof(str);

A_Op=FALSE;

}

break;

caseIDC_BUTTONN9:

//数字9

{

if(A_Op)

{

SetDlgItemText(hwnd,IDC_EDIT,NULL);

}

GetDlgItemText(hwnd,IDC_EDIT,str,sizeof(str));

strcat(str,"9");

SetDlgItemText(hwnd,IDC_EDIT,str);

RNum[1]=atof(str);

A_Op=FALSE;

}

break;

caseIDC_BUTTONN0:

//数字0

{

if(A_Op)

{

SetDlgItemText(hwnd,IDC_EDIT,NULL);

}

GetDlgItemText(hwnd,IDC_EDIT,str,sizeof(str));

strcat(str,"0");

SetDlgItemText(hwnd,IDC_EDIT,str);

RNum[1]=atof(str);

A_Op=FALSE;

}

break;

caseIDC_BUTTONDEL:

//小数点.del

{

if(A_Op)

{

SetDlgItemText(hwnd,IDC_EDIT,NULL);

}

GetDlgItemText(hwnd,IDC_EDIT,str,sizeof(str));

if(DELTIMES==0)

{

strcat(str,".");

}

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;

caseIDC_BUTTONXY:

//x的y次方

{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;

caseIDC_BUTTONCOS:

//三角函数cos函数

{

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;

caseIDC_BUTTONTAN:

//三角函数tan函数

{

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;

caseIDC_BUTTONCUBE:

//三次方

{

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;

caseIDC_BUTTONEX:

//e的x次方

{

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_BUTTON10X:

//10的x次方

{

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;

caseIDC_BUTTONCLEAR:

//清除数据

{

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;

caseIDC_BUTTONBACKSPACE:

//退格键

{

GetDlgItemText(hwnd,IDC_EDIT,str,sizeof(str));

inti=strlen(str);

str[i-1]='\0';

SetDlgItemText(hwnd,IDC_EDIT,str);

}

break;

case

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 小升初

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1