C语言也能干大事编程项目开发计算器编程.docx

上传人:b****7 文档编号:9462336 上传时间:2023-02-04 格式:DOCX 页数:50 大小:28.16KB
下载 相关 举报
C语言也能干大事编程项目开发计算器编程.docx_第1页
第1页 / 共50页
C语言也能干大事编程项目开发计算器编程.docx_第2页
第2页 / 共50页
C语言也能干大事编程项目开发计算器编程.docx_第3页
第3页 / 共50页
C语言也能干大事编程项目开发计算器编程.docx_第4页
第4页 / 共50页
C语言也能干大事编程项目开发计算器编程.docx_第5页
第5页 / 共50页
点击查看更多>>
下载资源
资源描述

C语言也能干大事编程项目开发计算器编程.docx

《C语言也能干大事编程项目开发计算器编程.docx》由会员分享,可在线阅读,更多相关《C语言也能干大事编程项目开发计算器编程.docx(50页珍藏版)》请在冰豆网上搜索。

C语言也能干大事编程项目开发计算器编程.docx

C语言也能干大事编程项目开发计算器编程

C语言也能干大事

附注:

本文档里的代码都是本人学习编程之后自己所写,请不要随便的改写或删除,如在学习过程中有什么不懂的地方,可以提出来共同探讨学习!

第一部分

C语言也能干大事

第一节:

题目:

自己动手写恶搞坑爹程序

要求:

运行以后弹出询问对话框(有【是】、【否】两个按钮以及问号图标)“你是好人吗?

”,如果点击【是】,则弹出对话框(只有一个【确定】按钮以及一个警告图标)“一看你就不像好人,点击【确定】开始格式化C盘!

”;如果点击【否】,则弹出对话框(有【重试】、【取消】两个按钮)“尝试把你变成好人失败,是否重试?

”。

代码:

(部分重要程序)

#include"stdafx.h"

intAPIENTRYWinMain(HINSTANCEhInstance,

HINSTANCEhPrevInstance,

LPSTRlpCmdLine,

intnCmdShow)

{

intret1=MessageBox(NULL,TEXT("你是好人吗?

"),TEXT("人品鉴定系统"),MB_YESNO|MB_ICONASTERISK);

/*“MB”是“MessageBox”的简写,MB_YESNO是可在窗口中显示的按钮,像这样的按钮还有:

#defineMB_OK(确定)0x00000000L

#defineMB_OKCANCEL(确定和取消)0x00000001L

#defineMB_ABORTRETRYIGNORE(终止、重试和忽略)0x00000002L

#defineMB_YESNOCANCEL(是、否和取消)0x00000003L

#defineMB_YESNO(是和否)0x00000004L

#defineMB_RETRYCANCEL(重试和取消)0x00000005L

定义了一个int型变量,说明“MB_YESNO|MB_ICONASTERISK”运算(是或运算)之后的结果是一个整型数据。

“MessageBox()”括号里面有四个参数,第一个参数:

hWnd:

标识将被创建的消息框的拥有窗口。

如果此参数为NULL,则消息框没有拥有窗口;第二个参数:

用“TEXT”包起来的字符串,表示框内的内容。

第三个参数:

用“TEXT”包起来的字符串,表示框的标题;第四个参数:

设置希望在对话框中显示的按钮或图标,“MB_ICONASTERISK”就是表示“警告”的图标,像这样的图标的还有:

#defineMB_ICONHAND(错误“X”状图标)0x00000010L

#defineMB_ICONQUESTION(问号图标)0x00000020L

#defineMB_ICONEXCLAMATION(感叹号警告图标)0x00000030L

#defineMB_ICONASTERISK(感叹号图标)0x00000040L

*/

if(IDYES==ret1)

{

MessageBox(NULL,TEXT("哼哼,一看就知道你不是好人"),TEXT("鉴定结果"),MB_OK|MB_ICONASTERISK);

}

elseif(IDNO==ret1)

{

intret2=MessageBox(NULL,TEXT("哈哈,算你有自知之明。

你想变成一个好人吗?

"),TEXT("鉴定结果"),MB_OK);

if(IDOK==ret2)

{

MessageBox(NULL,TEXT("sorry!

尝试把你变成好人失败..."),TEXT("无力回天"),MB_OK|MB_ICONEXCLAMATION);

MessageBox(NULL,TEXT("由于你的人品问题,现在开始格式化C盘..."),TEXT("处理办法"),MB_OK);

}

}

return0;

}

/*if语句里面的IDYES是返回值,返回值为用户点击的按钮:

(注意:

以后我们在判断条件时,把变量写在等号的右边,这样做的目的就是能够在把等号“==”写成赋值号“=”情况下不能通过编译,快速发现错误。

如果把变量写在等号的左边,就变成赋值表达式了,赋值表达式如果是真,就通过了编译,导致不知道错误在哪儿。

)像这样的返回值还有:

#defineIDOK1

#defineIDCANCEL2

#defineIDABORT3

#defineIDRETRY4

#defineIDIGNORE5

#defineIDYES6

#defineIDNO7

*/

 

第二节:

题目:

开发一个注册界面

本节没有代码,讲一下一些控件的使用:

第三节:

题目:

制作一个能计算加减乘除的计算器(V1.0版)和一个十进制转二进制的小工具。

要求:

当用户输入非数字或给除数输入0时,要给出错误提示信息。

代码:

(部分重要程序)

#include"stdafx.h"

#include

#include

#include"resource.h"

#include"MainDlg.h"

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;

}

BOOLIsInt(TCHAR*str)

{

inti=atoi(str);

TCHARstemp[256];

wsprintf(stemp,"%i",i);

if(strcmp(str,stemp)!

=0)

{

returnFALSE;

}

else

{

returnTRUE;

}

}

/*在这儿定义了一个类型为BOLL的被掉函数IsInt(),返回值是BOOL型,bool为布尔型,只有一个字节,取值false和true,是0和1的区别。

函数的参数是一个字符型指针,接受实参传过来的地址(这里是字符型数组的首地址)。

函数atoi()的功能是将字符串转化为整型数。

函数说明:

参数字符串,如果第一个非空格字符不存在或者不是数字也不是正负号则返回零,否则开始做类型转换,之后检测到非数字(包括结束符\0)字符时停止转换,返回整型数。

要有头文件:

#include

函数wsprintf()的作用:

将一系列的字符和数值输入到缓冲区;输出缓冲区里的的值取决于格式说明符(即"%");如果写入的是文字,此函数给写入的文字的末尾追加一个'\0';函数的返回值是写入的长度,但不包括最后的'\0'。

wsprintf()包含在头文件windows.h中。

我们可以这样来理解:

wsprintf(缓冲区,格式,要格式化的值);

第一个参数是字符缓冲区,后面是格式字符串,wsprintf不是将格式化结果写到标准输出,而是将其写入缓冲区中,该函数返回该字符串的长度。

Strcmp()函数:

原型:

externintstrcmp(char*s1,char*s2);

用法:

#include

功能:

比较字符串s1和s2。

说明:

当s1

当s1=s2时,返回值=0

当s1>s2时,返回值>0

*/

voidMain_OnCommand(HWNDhwnd,intid,HWNDhwndCtl,UINTcodeNotify)

{

/*按钮被按下的时候Main_OnCommand方法被调用,hwnd是对话框句柄(什么是句柄后面讲,通俗的说就是通过它能够操纵对话框),id是控件的id,后两个参数暂时不关心。

Main_OnCommand方法中根据id,也就是被点击按钮的名字来决定不同的动作,从而和匹配case匹配。

Hwnd是当前窗口的句柄,句柄就是把柄!

操作一个东西,要先抓住他的把柄!

通过句柄就可以操作这个对象。

*/

switch(id)

{

caseIDC_OK:

{

MessageBox(hwnd,TEXT("嘿嘿...同志,你走错门了!

"),TEXT("嘿嘿"),MB_OK|MB_ICONASTERISK);

}

break;

caseIDC_BUTTON1:

//如果按下该按钮执行

{

TCHARstr1[256],str2[256];

GetDlgItemText(hwnd,IDC_EDIT1,str1,sizeof(str1));

/*GetDlgItemText就是“得到对话框项目文本”的意思(暂时可以这样理解)

Hwnd就是控件的句柄,IDC_EDIT1就是编辑框1,

参数说明:

调用这个函数以获得与对话框中的控件相关的标题或文本。

GetDlgItemText成员函数将文本拷贝到str1指向的位置并返回拷贝的字节的数目。

*/

GetDlgItemText(hwnd,IDC_EDIT2,str2,sizeof(str2));

if(FALSE==IsInt(str1))

{

MessageBox(hwnd,TEXT("sorry,你的第一个数输入有误!

"),TEXT("错误!

"),MB_OK|MB_ICONHAND);

return;//注意:

不要掉了,不然会在错误的情况下得到结果

}

if(FALSE==IsInt(str2))

{

MessageBox(hwnd,TEXT("sorry,你的第二个数输入有误!

"),TEXT("错误!

"),MB_OK|MB_ICONHAND);

return;

}

inti1=atoi(str1);inti2=atoi(str2);

inti3=i1+i2;

TCHARstr3[256];

wsprintf(str3,"%i",i3);

SetDlgItemText(hwnd,IDC_EDIT3,str3);

//可以理解为:

把str3指定的内容拷贝到得到句柄的编辑框内

}

break;

caseIDC_BUTTON2:

{

TCHARstr1[256],str2[256];

GetDlgItemText(hwnd,IDC_EDIT4,str1,sizeof(str1));

GetDlgItemText(hwnd,IDC_EDIT5,str2,sizeof(str2));

if(FALSE==IsInt(str1))

{

MessageBox(hwnd,TEXT("sorry,你的第一个数输入有误!

"),TEXT("错误!

"),MB_OK|MB_ICONHAND);

return;

}

if(FALSE==IsInt(str2))

{

MessageBox(hwnd,TEXT("sorry,你的第二个数输入有误!

"),TEXT("错误!

"),MB_OK|MB_ICONHAND);

return;

}

inti1=atoi(str1);inti2=atoi(str2);

inti3=i1-i2;

TCHARstr3[256];

wsprintf(str3,"%i",i3);

SetDlgItemText(hwnd,IDC_EDIT6,str3);

}

break;

caseIDC_BUTTON3:

{

TCHARstr1[256],str2[256];

GetDlgItemText(hwnd,IDC_EDIT7,str1,sizeof(str1));

GetDlgItemText(hwnd,IDC_EDIT8,str2,sizeof(str2));

if(FALSE==IsInt(str1))

{

MessageBox(hwnd,TEXT("sorry,你的第一个数输入有误!

"),TEXT("错误!

"),MB_OK|MB_ICONHAND);

return;

}

if(FALSE==IsInt(str2))

{

MessageBox(hwnd,TEXT("sorry,你的第二个数输入有误!

"),TEXT("错误!

"),MB_OK|MB_ICONHAND);

return;

}

inti1=atoi(str1);inti2=atoi(str2);

inti3=i1*i2;

TCHARstr3[256];

wsprintf(str3,"%i",i3);

SetDlgItemText(hwnd,IDC_EDIT9,str3);

}

break;

caseIDC_BUTTON4:

{

TCHARstr1[256],str2[256];

GetDlgItemText(hwnd,IDC_EDIT10,str1,sizeof(str1));

GetDlgItemText(hwnd,IDC_EDIT11,str2,sizeof(str2));

if(FALSE==IsInt(str1))

{

MessageBox(hwnd,TEXT("sorry,你的第一个数输入有误!

"),TEXT("错误!

"),MB_OK|MB_ICONHAND);

return;

}

if(FALSE==IsInt(str2))

{

MessageBox(hwnd,TEXT("sorry,你的第二个数输入有误!

"),TEXT("错误!

"),MB_OK|MB_ICONHAND);

return;

}

inti1=atoi(str1);inti2=atoi(str2);

if(i2==0)

{

MessageBox(hwnd,TEXT("笨蛋!

除数不能为零!

"),TEXT("错误!

"),MB_OK|MB_ICONHAND);

return;

}

inti3=i1/i2;

TCHARstr3[256];

wsprintf(str3,"%i",i3);

SetDlgItemText(hwnd,IDC_EDIT12,str3);

}

break;

caseIDC_BUTTON5:

{

TCHARstr1[256];

GetDlgItemText(hwnd,IDC_EDIT13,str1,sizeof(str1));

if(FALSE==IsInt(str1))

{

MessageBox(hwnd,TEXT("sorry,你的输入有误!

"),TEXT("错误!

"),MB_OK|MB_ICONHAND);

return;

}

inti1=atoi(str1);

TCHARstr2[256];

itoa(i1,str2,2);

/*函数itoa(参数1,参数2,参数3);

功能:

把一整数转换为字符串

用法:

  itoa(i,num,10);

  i----需要转换成字符串的数字

  num----转换后保存字符串的变量

  10----转换数字的基数(即进制)。

10就是说按10进制转换数字。

还可以是2,8,16等等你喜欢的进制类型

返回值:

指向num这个字符串的指针

*/

SetDlgItemText(hwnd,IDC_EDIT14,str2);

}

break;

}

}

voidMain_OnClose(HWNDhwnd)

{

EndDialog(hwnd,0);

}

 

第四节:

题目:

开发一个计算器(V2.0版)和一个小工具(功能:

用户任意输入年月日后显示这一年是平年还是闰年,并且告诉用户这一天是星期几)。

要求:

1.上述两个工具在一个界面上实现。

2.如果用户输入的年月日不符合实际(比如:

在平年的2月输入29日...)、除数为零等都要报错。

代码:

(部分重要程序)

#include"stdafx.h"

#include

#include

#include"resource.h"

#include"MainDlg.h"

 

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)

{

HWNDhwndcombo1=GetDlgItem(hwnd,IDC_COMBO1);

ComboBox_InsertString(hwndcombo1,-1,TEXT("加"));

ComboBox_InsertString(hwndcombo1,-1,TEXT("减"));

ComboBox_InsertString(hwndcombo1,-1,TEXT("乘"));

ComboBox_InsertString(hwndcombo1,-1,TEXT("除以"));

returnTRUE;

}

/*当对话框接收到WM_INITDIALOG消息时,就会执行函数BOOLMain_OnInitDialog(HWNDhwnd,HWNDhwndFocus,LPARAMlParam),一般一些初始化的变量之类的都写这个函数内进行初始化。

HWNDhwndcombo1=GetDlgItem(hwnd,IDC_COMBO1);是定义一个HWND类型的量,通过函数GetDlgItem()来获取控件“IDC_COMBO1"的句柄,并赋值给hwndcombo1.而ComboBox_InsertString(hwndcombo1,-1,TEXT("加"));是将得到的控件内加入内容,其中参数:

hwndcombo1是得到的控件的句柄,关于参数-1的说明请看“Thezero-basedindexatwhichtoinsertthestring,or–1toaddittotheendofthelist.”我的翻译——“从0开始以什么样的指标插入字符串,或1到把它添加到列表的末尾”,呵呵,还差强人意吧,用这个“函数”为了使添加内容的顺序按照自己意图实现,如果用“函数”(因为不是真正的函数,其实是宏)ComboBox_AddString()进行添加内容会出现乱序的现象,就不会是“加减乘除”的顺序了*/

 

intIsInt(TCHAR*str)

{

inti=atoi(str);

TCHARstr1[256];

itoa(i,str1,10);

if(strcmp(str,str1)!

=0)

{

returnFALSE;

}

else

{

returnTRUE;

}

}

intfun(inta,intb,intc)

{

intp,q,p1=28,p2=29;

if(a%400==0||a%4==0&&a%100!

=0)

{

p=p2;

}

elseif(a%4!

=0)

{

p=p1;

}

switch(b)

{

case1:

q=c;break;

case2:

q=31+c;break;

case3:

q=31+p+c;break;

case4:

q=31+p+31+c;break;

case5:

q=31+p+31+30+c;break;

case6:

q=31+p+31+30+31+c;break;

case7:

q=31+p+31+30+31+30+c;break;

case8:

q=31+p+31+30+31+30+31+c;break;

case9:

q=31+p+31+30+31+30+31+31+c;break;

case10:

q=31+p+31+30+31+30+31+31+30+c;break;

case11:

q=31+p+31+30+31+30+31+31+30+31+c;break;

case12:

q=31+p+31+30+31+30+31+31+30+31+30+c;break;

}

returnq;

}

voidMain_OnCommand(HWNDhwnd,intid,HWNDhwndCtl,UINTcodeNotify)

{

switch(id)

{

caseIDC_OK:

{

MessageBox(hwnd,TEXT("Sorry!

由于你的人品出现了问题,系统不允许你退出...嘿嘿^-^"),TEXT("嘿嘿^-^"),MB_OK|MB_ICONHAND);

}

break;

caseIDC_BUTTON1:

{

TCHARstr1[256],str2[256];

GetDlgItemText(hwnd,IDC_EDIT1,str1,sizeof(str1));

GetDlgItemText(hwnd,IDC_EDIT2,str2,sizeof(str2));

inti1=atoi(str1);inti2=atoi(str2);inti3=0;

HWNDhwndcombo1=GetDlgItem(hwnd,IDC_COMBO1);

intcurIndex=ComboBox_GetCurSel(hwndcombo1);

/*定义了一个整型变量来表示添加内容的

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

当前位置:首页 > 党团工作 > 入党转正申请

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

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