计算器c源代码.docx
- 文档编号:5505671
- 上传时间:2022-12-17
- 格式:DOCX
- 页数:17
- 大小:16.49KB
计算器c源代码.docx
《计算器c源代码.docx》由会员分享,可在线阅读,更多相关《计算器c源代码.docx(17页珍藏版)》请在冰豆网上搜索。
计算器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; case { 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; 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(hwn
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算器 源代码