c语言计算器实训任务案例,C语言编程案例(一)---计算器V1.0

计算器V1.0的截图:

a4c26d1e5885305701be709a3d33442f.png

下面给出了部分源码:

//windows程序的主函数,调用ID为IDD_MAIN的对话框,对话框的处理函数为Main_Proc;

int APIENTRY WinMain(HINSTANCE hInstance,

HINSTANCE hPrevInstance,

LPSTR lpCmdLine,

int nCmdShow)

{

//Enable IPAddress、Calendar.etc

InitCommonControls();

DialogBox(hInstance, MAKEINTRESOURCE(IDD_MAIN),

NULL, Main_Proc);

return 0;

}

//消息处理函数中处理三条消息,初始化,命令和关闭,当程序运行时触发WM_INITDIALOG消息

//调用Main_OnInitDialog对对话框进行初始化;当触发WM_COMMAND消息(如按下按钮)时调用

//Main_OnCommand函数;当选择关闭按钮时触发WM_CLOSE消息,嗲用Main_OnClose函数关闭对话框

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;

}

//Main_OnCommand()处理命令消息

void Main_OnCommand(HWND hwnd, int id, HWND hwndCtl, UINT

codeNotify)

{

switch(id)

{

case IDC_BIN0://数字0的输入

{

strcat(result,"0");//在字符串result后连接字符串“0”

SetDlgItemText(hwnd,IDC_EDIT1,result);

}

break;

case IDC_BIN1://数字的输入

{

strcat(result,"1");

SetDlgItemText(hwnd,IDC_EDIT1,result);

}

break;

. . . . .

. . . . .

. . . . .

case IDC_BINB://退格

{

char resulttemp[256];

strcpy(resulttemp,result);

ZeroMemory(result,sizeof(result)/sizeof(TCHAR));//ZeroMemory宏用0来填充一块内存区域

if(0==(strlen(resulttemp)-1))//如果长度为0,表示全删完了

{

SetDlgItemText(hwnd,IDC_EDIT1,TEXT("0"));//z在ID位IDC_EDIT1的编辑控件中显示字符串“0”

break;

}

strncpy(result,resulttemp,strlen(resulttemp)-1);

ZeroMemory(resulttemp,sizeof(resulttemp)/sizeof(TCHAR));

SetDlgItemText(hwnd,IDC_EDIT1,result);

}

break;

case IDC_BINDOT://输入小数点

{

if(NULL==strchr(result,'.'))//用strchr查找字符‘.’在result中出现的位置,若无则在result后

//连接,否则按钮“.”无效果

{

strcat(result,".");

SetDlgItemText(hwnd,IDC_EDIT1,result);

}

}

break;

case IDC_BINADD://加法运算,调用Main_Count(hwnd);来计算,并设置计算索引sel

{

Main_Count(hwnd);

sel=1;

}

break;

.........

.........

.........

case

IDC_BINSIN://sin函数只要一个数,所以先设置计算索引,再调用Main_Count(hwnd)来计算

{

sel=5;

Main_Count(hwnd);

}

break;

.........

.........

.........

default:

break;

}

}

//实现计算方法

void Main_Count(HWND hwnd)

{

num=atof(result);

ZeroMemory(result,sizeof(result)/sizeof(TCHAR));//用0填充内存区域;

switch(sel)//sel为计算索引,实现不同的计算

{

case 1:

{

numtemp+=num;

gcvt(numtemp,10,numstr);

ZeroMemory(result,sizeof(result)/sizeof(TCHAR));

SetDlgItemText(hwnd,IDC_EDIT1,numstr);

}

break;

.........

.........

.........

Mai case 6:

{

numtemp=asin(num)*180/3.1415926535898;

gcvt(numtemp,10,numstr);//实型转换为字符型并存到numstr中

ZeroMemory(result,sizeof(result)/sizeof(TCHAR));

SetDlgItemText(hwnd,IDC_EDIT1,numstr);

}

break;

.........

.........

.........

default:

numtemp=num;

break;

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值