b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

《西北工业大学C语言大作业2.doc

电脑杂谈  发布时间:2019-08-21 12:02:22  来源:网络整理

c语言大作业心得_c 语言程序设计作业_c语言大作业心得

学 院电子信息学院班 级08051101学 号2011302043姓 名陈亮摘要在高级编程技术中的Windows界面编程的SDK编程框架下的硬件研发编程。此程序编写了Windows界面,可以开启菜单,实现运行跳出对话框,输入简谐运动初相位X0,初速度V0和角速率W,并选取查看图像方式sin和cos曲线,计算得出简谐振动方程,绘出简谐振动图像。还有计算简谐运动能流密度I。基于教材中的借助Heron公式编写计算三角形面积的窗口程序,重新编写一个窗口程序计算数学上简谐运动方程和能流密度。并且有所创新,加了一个图形输出,是依据简谐运动方程绘制曲线,将单调的图标丰富了,产生了可视化的效果,更加人性化。此程序虽没有动态效果,但能把静态完整的表示出来,数形结合,更易理解,明白,有着较强的实用性。可做物理演示程序,更加灵活地表现出物理现象。目录 1 摘要31.1 设计题目31.2 设计内容31.3 开发软件31.4 应用系统32 详细设计32.1 程序构架32.2 主要功用42.3 函数实现42.4 开发日志53 程序安装及运行63.1 程序运行结果63.2 程序使用表明73.3 程序研发总结74 附件(源程序)8 1 摘要1.1 设计题目界面编程——简谐运动1.2 设计内容基于Windows界面编程下的SDK编程框架,设计一个带有对话框、GDI图形输出的Windows窗口的程序,实现求解简谐运动方程,能流密度,绘制简谐振动曲线。

c语言大作业心得_c语言大作业心得_c 语言程序设计作业

运行程序,初始化,X0=V0=W=1时的简谐运动方程和简谐振动曲线。当单击“运行|计算绘图”时,弹出对话框对简谐运动初相位X0,初速度V0和角速率W进行更改,点击“确认”,就能估算出简谐运动方程,能流密度,绘制简谐振动曲线,这些结果在窗口显示。1.3 开发软件Visual C++ 6.0和Win32SDKApp1.4 应用系统Windows 2000/XP/Vista 32位 2 详细设计2.1 程序构架一、程序的整体结构首先定义资源头文件resource.h;在进行资源描述文件,此过程可借助可视化操作;正式开启编写程序代码: 1、由Win32SDKApp自动生成的SDK编程框架:头文件包括所有头文件或链接库文件全局定义应用例子、主窗口函数、数据构架等全局定义,固定不变消息处理变量原型 给出所有消息处理数组的原型,增加/删除消息处理时变动消息映射表宏定义 定义消息映射表,增加/删除消息处理时变动窗口过程窗口过程函数的推动,固定不变注册窗口类注册窗口类函数的推动,除非更改窗口属性,一般不动初始化窗口初始化窗口函数的推动,除非更改窗口初始化值,一般不动消息循环Windows应用程序主消息循环,一般不动主函数Windows应用程序基本构架,一般不动消息处理变量实现 在这编写消息处理数组 2、再对SDK编程框架进行更改:设置了快捷键就需要对消息循环变量修改在编写消息处理数组之前:在消息处理变量原型组件中加入要添加的消息处理变量(如WM_COMMAND、WM_ONPAIT)在消息映射表模块提高该消息映射在消息处理变量实现组件中给出该消息处理数组的实现如果消息处理函数之间有共享使用的数组,则将它定义为全局变量。

c 语言程序设计作业_c语言大作业心得_c语言大作业心得

如果消息处理数组应该维持数据,则将它定义为静态局部数组。由于减少了对话框,需加一个CALLBACK DlgProc对话框过程程序的步骤在WM_COMMAND命令变量中,打开“运行|计算绘图”时,弹出对话框,CALLBACK DlgProc对话框过程变量运行:初始化时,将X0、V0、W的值给三个编辑框;当按“确定”键重新从三个编辑框获取数据,此时WM_COMMAND命令变量中接到命令,重绘窗口。在WM_ONPAIT 重绘消息处理变量里,进行数据推导,存入文本,在输出文本。就这样实现了一次确认功能2.2 主要用途一、程序实现了推导力学上简谐运动方程和能流密度。1、这个借助C语言编写,在定义数组时特别注意:如果消息处理函数之间有共享使用的数组,则将它定义为全局函数,此处用了一个结构体数据类别的全局数组struct WAVE确定波的三个特性。CALLBACK DlgProc与WM_ONPAIT共用struct WAVE。如果消息处理变量应该维持数据,则将它定义为静态局部数组。定义char buf[200];const charszTitle[]="简谐曲线>";2、sprintf函数将数据写进文本,通过读取Windows函数中的TextOut可在窗口中推动输出文本二、程序实现了对简谐运动曲线的绘制。

c语言大作业心得_c语言大作业心得_c 语言程序设计作业

Windows通过图形设备接口GDI对图形输出进行支持。调用MoveToEx和LineTo画线函数、SetPixel画点变量。再通过for循环结构对图形的线、点连续输出,会出简谐运动曲线。2.3 函数实现在这就写一下与SDK编程框架不同的地方:一、消息循环变量 添加快捷键代码 HACCEL hAccelTable;hAccelTable=LoadAccelerators(hInst,(LPCTSTR)IDR_APP);二、消息处理函数原型 添加函数原型 LRESULT OnPaint(HWND hWnd,UINT message,WPARAM wParam,LPARAM lParam);LRESULT OnCommand(HWND hWnd,UINT message,WPARAM wParam,LPARAM lParam);三、消息映射表宏定义 添加变量映射 ON_MSG(WM_PAINT, OnPaint)ON_MSG(WM_COMMAND, OnCommand) 四、消息处理函数 WM_ONPAIT 重绘消息处理变量 独立自主编写 1、如果消息处理数组之间有共享使用的函数,则将它定义为全局数组,此处用了一个结构体数据类别的全局数组struct WAVE确定波的三个特性。

c语言大作业心得_c 语言程序设计作业_c语言大作业心得

CALLBACK DlgProc与WM_ONPAIT共用struct WAVE。如果消息处理变量应该维持数据,则将它定义为静态局部数组。定义char buf[200];const charszTitle[]="简谐曲线>";sprintf函数将数据写进文本,通过读取Windows函数中的TextOut可在窗口中实现输出文本 2、调用MoveToEx和LineTo画线函数、SetPixel画点变量。再通过for循环结构对图形的线、点连续输出,会出简谐运动曲线。WM_COMMAND命令变量 添加 int r;switch (LOWORD(wParam)) { case IDM_RUN:r=DialogBoxParam(hInst,(LPCTSTR)IDD_INPUT,hWnd,DlgProc,(LPARAM)&x);if (r==IDOK)InvalidateRect(hWnd,NULL,TRUE);break; 五、CALLBACK DlgProc对话框过程变量 对照例子编写2.4 开发日志刚开始的之后,先对书上的借助Heron公式编写计算三角形面积的窗口程序举例进行输入安装,发现总通不过,继续排错,发现有很多输入出错,大小写,没有分号等难题,面对错误不要惊慌,毕竟头一次编Windows窗口程序,但我把所有错排完之后,出现了一个问题,输出结果不是我想要的。

这时就苦恼。不知是哪个数据泄露了,或者不是自己控制。所以只能重新编写,看是哪出难题了。在一次一次的反复尝试中小结了,那些变量是干什么的,怎样值释放。在一次一次的探索当中,不断的累积,对Windows窗口程序有了新的知道。最后,发现失败了,运行很高。在这基础上,就要涉及开始自己的程序了。首先,确定要干啥,与书上的不要差距太远,就选了一个求解数学上简谐运动方程的算法。在改参数的之后,很容易出错,需要修改好几次。但参数改好的之后,运行计算c语言大作业心得,结果是真确的。感觉非常好。继续对他进行更改,将对话框的设计的变得合理,增加了图像字体,文字叙述,选择框等,再将TITLE名修改为简谐运动,将很多表面工作做好,再将窗口输出文本变得合理看起来更加简洁。在进行进一步优化,将图形输出与此程序结合,加一个图形输出,简谐运动曲线的勾画,通过读取MoveToEx和LineTo画线函数、SetPixel画点变量,确定屏幕中心,画坐标轴x轴和y轴,再把坐标轴的刻度标起来,x轴上有红点刻度,线段刻度,清楚;y轴上有阀值线貌似标有刻度值随着峰值变动,并且能否调整位置。在对GDI图形输出有足够的了解时,能够轻松地缓解效果非常好。

将很多代码编好过后对他进行调试,编译通过,整个程序趋向细化。最终,呈现以后的图标。3 程序安装及运行3.1 程序运行结果程序运行弹出窗口(初始化数据X0=V0=W=1)点击“运行|计算绘图”弹出对话框(输入初相位X0,初速度V0和角速率W) 点击“确认”刷新窗口(重新计算绘图) /* 3.2 程序使用表明运行程序初始化窗口显示X0=V0=W=1时的简谐运动方程和简谐振动曲线点击“运行|计算绘图”(可以用Ctrl+R快捷键)弹出对话框首先选取sin和cos曲线类型之后输入初相位X0c语言大作业心得,初速度V0和角速率W3、点击“确认”窗口显示计算绘图结果4、运行结束单击“运行|退出”(可用快捷键Alt+X)退出窗口3.3 程序研发总结撰写界面编程的收获太多:了解了一些Windows界面编程语言,能够看懂一些程序能够在SDK框架下编写窗口程序无法利用Windows界面编程解决一些实际难题当然也有,编写成功带给的快乐对编写程序的反思:1、其实任何语言都有相似之处,了解其本质;就能迅速地把握另一门语言。 Windows界面编程语言主要都是大写中文字母,大多数是首字母小写。在要用的之后可以直接查找这方面的书籍,很快就明白什么涵义怎么用。

调用函数也是相同的道理,可以依照要推动的功用来查找相应的变量。可已不用背许多代码。Windows界面编程有着巨大的现实作用,是C语言的延展和拓宽,一个C语言具体应用的例子可借助Windows界面编程提升C语言的编程素养,同时解决实际难题,来便捷生活和学习,将计算机的作用发挥起来了。发展编程素养,最终达到:灵活自如应用,丰富多彩呈现。4 附件(源程序)Resource.h文件:(资源头文件定义)#define IDI_APP100#define IDI_APPSMALL101#define IDR_APP102#define IDD_DIALOG1129#define IDD_INPUT129#define IDR_ACCELERATOR1130#define IDS_APP_TITLE1000#define IDC_EDIT11000#define IDC_RADIO11001#define IDC_EDIT21002#define IDC_EDIT31003#define IDC_RADIO21004#define IDM_RUN1101#define IDM_FILE_OPEN1102#define IDM_EXIT1103#define IDM_ABOUT1104#define IDC_STATIC-1 #ifdef APSTUDIO_INVOKED#ifndef APSTUDIO_READONLY_SYMBOLS#define _APS_NEXT_RESOURCE_VALUE131#define _APS_NEXT_COMMAND_VALUE32771#define _APS_NEXT_CONTROL_VALUE1003#define _APS_NEXT_SYMED_VALUE110#endif#endif 简谐运动.rc文件:(资源描述文件)#include "resource.h" #define APSTUDIO_READONLY_SYMBOLS///////////////////////////////////////////////////////////////////////////////// Generated from the TEXTINCLUDE 2 resource.//#define APSTUDIO_HIDDEN_SYMBOLS#include "windows.h"#undef APSTUDIO_HIDDEN_SYMBOLS#include "resource.h" /////////////////////////////////////////////////////////////////////////////#undef APSTUDIO_READONLY_SYMBOLS /////////////////////////////////////////////////////////////////////////////// Chinese (中国) resources #if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_CHS)#ifdef _WIN32LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED#pragma code_page(936)#endif //_WIN32 ///////////////////////////////////////////////////////////////////////////////// Icon// // Icon with lowest ID value placed first to ensure application icon// remains consistent on all systems.IDI_APPICON DISCARDABLE"res\\app.ico"IDI_APPSMALLICON DISCARDABLE"res\\appsmall.ico" ///////////////////////////////////////////////////////////////////////////////// Menu// IDR_APP MENU DISCARDABLE BEGINPOPUP "运行"BEGINMENUITEM "计算绘图(&R)\tCtrl+R",IDM_RUNMENUITEM SEPARATORMENUITEM "退出(&X)",IDM_EXITENDEND///////////////////////////////////////////////////////////////////////////////// Accelerator// IDR_APP ACCELERATORS MOVEABLE PURE BEGIN"R",IDM_RUN,VIRTKEY, CONTROL"X",IDM_EXIT,VIRTKEY, ALTEND IDR_ACCELERATOR1 ACCELERATORS DISCARDABLE BEGIN"R",IDM_RUN,VIRTKEY, NOINVERTEND #ifdef APSTUDIO_INVOKED///////////////////////////////////////////////////////////////////////////////// TEXTINCLUDE// 2 TEXTINCLUDE DISCARDABLE BEGIN"#define APSTUDIO_HIDDEN_SYMBOLS\r\n""#include ""windows.h""\r\n""#undef APSTUDIO_HIDDEN_SYMBOLS\r\n""#include ""resource.h""\r\n""\0"END 3 TEXTINCLUDE DISCARDABLE BEGIN"\r\n""\0"END 1 TEXTINCLUDE DISCARDABLE BEGIN"resource.h\0"END #endif // APSTUDIO_INVOKED ///////////////////////////////////////////////////////////////////////////////// Dialog// IDD_INPUT DIALOG DISCARDABLE 0, 0, 187, 170STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENUCAPTION "计算绘图"FONT 10, "System"BEGINDEFPUSHBUTTON "确定",IDOK,21,139,50,14PUSHBUTTON"取消",IDCANCEL,112,139,50,14GROUPBOX"切换",IDC_STATIC,37,12,112,24EDITTEXTIDC_EDIT1,42,65,111,14,ES_AUTOHSCROLLLTEXT"X0:",IDC_STATIC,20,68,12,8CONTROL"COS曲线",IDC_RADIO1,"Button",BS_AUTORADIOBUTTON,100,23,46,10ICONIDI_APP,IDC_STATIC,0,1,20,20EDITTEXTIDC_EDIT2,42,93,111,14,ES_AUTOHSCROLLEDITTEXTIDC_EDIT3,42,119,111,14,ES_AUTOHSCROLLLTEXT"V0:",IDC_STATIC,19,96,11,8LTEXT"W:",IDC_STATIC,19,122,10,8CONTROL"SIN曲线",IDC_RADIO2,"Button",BS_AUTORADIOBUTTON,46,23,44,10LTEXT"输入初相位X0、初速度V0、角速率W:",IDC_STATIC,28,46,131,8END ///////////////////////////////////////////////////////////////////////////////// DESIGNINFO// #ifdef APSTUDIO_INVOKEDGUIDELINES DESIGNINFO DISCARDABLE BEGINIDD_INPUT, DIALOGBEGINLEFTMARGIN, 7RIGHTMARGIN, 180TOPMARGIN, 7BOTTOMMARGIN, 163ENDEND#endif // APSTUDIO_INVOKED ///////////////////////////////////////////////////////////////////////////////// String Table// STRINGTABLE DISCARDABLE BEGINIDS_APP_TITLE"简谐运动"END #endif // Chinese (中国) resources/////////////////////////////////////////////////////////////////////////////#ifndef APSTUDIO_INVOKED///////////////////////////////////////////////////////////////////////////////// Generated from the TEXTINCLUDE 3 resource.///////////////////////////////////////////////////////////////////////////////#endif // not APSTUDIO_INVOKED简谐运动.c文件:(程序代码)#include <windows.h> #include "resource.h"#include <stdio.h>#include <math.h> HINSTANCE hInst; HWND hMainWnd; char szWindowTitle[]="简谐振动"; char szWindowClass[]="SDKWIN32APP"; struct WIN_MSGMAP_ENTRY { UINT nMessage; LRESULT (*pfn)(HWND hWnd,UINT message,WPARAM wParam,LPARAM lParam);};#define BEGIN_MESSAGE_MAP() const struct WIN_MSGMAP_ENTRY _messageEntries[]={#define ON_MSG(nMessage,pfn) { nMessage, pfn},#define END_MESSAGE_MAP() {0, NULL} }; LRESULT OnPaint(HWND hWnd,UINT message,WPARAM wParam,LPARAM lParam);LRESULT OnCommand(HWND hWnd,UINT message,WPARAM wParam,LPARAM lParam); BEGIN_MESSAGE_MAP()ON_MSG(WM_PAINT, OnPaint) ON_MSG(WM_COMMAND, OnCommand) END_MESSAGE_MAP() LRESULT CALLBACK WndProc(HWND hWnd,UINT message,WPARAM wParam,LPARAM lParam){WORD i;for(i=0;_messageEntries[i].nMessage; i++) {if (message==_messageEntries[i].nMessage) {if (message!=WM_DESTROY)return (*_messageEntries[i].pfn)(hWnd,message,wParam,lParam);(*_messageEntries[i].pfn)(hWnd,message,wParam,lParam);break;}}if (message==WM_DESTROY) { PostQuitMessage(0); return 0; }return DefWindowProc(hWnd,message,wParam,lParam); } ATOM MyRegisterClass(HINSTANCE hInstance){WNDCLASSEX wcex;wcex.cbSize= sizeof(WNDCLASSEX); wcex.style= CS_HREDRAW|CS_VREDRAW|CS_DBLCLKS;wcex.lpfnWndProc= (WNDPROC)WndProc; wcex.cbClsExtra= 0;wcex.cbWndExtra= 0;wcex.hInstance= hInstance; wcex.hIcon= LoadIcon(hInstance,(LPCTSTR)IDI_APP);wcex.hCursor= LoadCursor(NULL,IDC_ARROW); wcex.hbrBackground= (HBRUSH)GetStockObject(WHITE_BRUSH); wcex.lpszMenuName= (LPCSTR)IDR_APP; wcex.lpszClassName= szWindowClass; wcex.hIconSm= LoadIcon(hInstance,(LPCTSTR)IDI_APPSMALL); return RegisterClassEx(&wcex); } BOOL InitInstance(HINSTANCE hInstance, int nCmdShow){DWORD ds=WS_OVERLAPPEDWINDOW|WS_CLIPCHILDREN; hInst=hInstance; hMainWnd=CreateWindow(szWindowClass,szWindowTitle,ds,CW_USEDEFAULT,0,CW_USEDEFAULT,0,NULL,NULL,hInstance,NULL); if (!hMainWnd) return FALSE;ShowWindow(hMainWnd, nCmdShow); UpdateWindow(hMainWnd); return TRUE;} int Run() {MSG msg;HACCEL hAccelTable;hAccelTable=LoadAccelerators(hInst,(LPCTSTR)IDR_APP); while(GetMessage(&msg,NULL,0,0)) {if (!TranslateAccelerator(msg.hwnd,hAccelTable,&msg)) {TranslateMessage(&msg);DispatchMessage(&msg); }}return msg.wParam; } int APIENTRY WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow){MyRegisterClass(hInstance); if (!InitInstance(hInstance,nCmdShow)) return 0; return Run(); } struct WAVE {double X0,V0,W; } x={1,1,1};LRESULT CALLBACK DlgProc(HWND hDlg,UINT message,WPARAM wParam,LPARAM lParam){static struct WAVE *px; char buf[200];switch (message) {case WM_INITDIALOG:px=(struct WAVE *)lParam;sprintf(buf,"%lf",px->X0);SetDlgItemText(hDlg,IDC_EDIT1,buf);sprintf(buf,"%lf",px->V0);SetDlgItemText(hDlg,IDC_EDIT2,buf);sprintf(buf,"%lf",px->W);SetDlgItemText(hDlg,IDC_EDIT3,buf);return TRUE; case WM_COMMAND:switch (LOWORD(wParam)) {case IDOK:GetDlgItemText(hDlg,IDC_EDIT1,buf,sizeof(buf));px->X0=atof(buf);GetDlgItemText(hDlg,IDC_EDIT2,buf,sizeof(buf));px->V0=atof(buf);GetDlgItemText(hDlg,IDC_EDIT3,buf,sizeof(buf));px->W=atof(buf);case IDCANCEL:EndDialog(hDlg,LOWORD(wParam));return TRUE;}}return FALSE; } #define PI 3.1415926LRESULT OnPaint(HWND hWnd,UINT message,WPARAM wParam,LPARAM lParam){PAINTSTRUCT ps;HDC hdc;RECT rt;int i,mx,my,r=100;char buf[200];const char szTitle[]="简谐曲线>";const char T[]="t";const char Y[]="Y";const char z[]="O";char L[200];char hk[200];char hz[200];hdc=BeginPaint(hWnd,&ps);{double s,t,I;t=sqrt(x.X0*x.X0+x.V0*x.V0/(x.W*x.W));s=atan(-x.V0/(x.X0*x.W)); sprintf(buf,"简谐运动方程> Y=%.2lfCOS(%.2lft%+.2lf)",t,x.W,s);I=1/2.0*t*t*x.W*x.W;sprintf(hk,"能流密度> I=%.2lfpu",I);sprintf(hz,"注释:p--介质浓度 u--传播速率");GetClientRect(hWnd, &rt); mx=(rt.right+rt.left)/2; my=(rt.bottom+rt.top)/2; TextOut(hdc,100,60,szTitle,strlen(szTitle));MoveToEx(hdc,0,my,NULL); LineTo(hdc,rt.right,my); MoveToEx(hdc,mx,my/6,NULL);LineTo(hdc,mx,rt.bottom);MoveToEx(hdc,0,30*t+my,NULL);LineTo(hdc,rt.right,30*t+my);MoveToEx(hdc,0,-30*t+my,NULL);LineTo(hdc,rt.right,-30*t+my);sprintf(L,"%.2lf",t);TextOut(hdc,mx+3,-30*t+my-20,L,strlen(L));sprintf(L,"%.2lf",-t);TextOut(hdc,mx+3,30*t+my+10,L,strlen(L));SetPixel(hdc,mx,-30*t+my,RGB(255,0,0));SetPixel(hdc,mx,30*t+my,RGB(255,0,0));MoveToEx(hdc,0,my,NULL);for (i=-mx;i<2*mx;i++)LineTo(hdc,i+mx,30*t*cos(i*PI/180*x.W+s)+my);}LineTo(hdc,rt.right,my);TextOut(hdc,100,30,buf,strlen(buf));Rectangle(hdc,rt.right*23.5/31,25,rt.right*29/30,75);TextOut(hdc,rt.right*23/30,30,hk,strlen(hk));TextOut(hdc,rt.right*23/30,50,hz,strlen(hz));TextOut(hdc,rt.right*29/30,my-16,T,strlen(T));TextOut(hdc,mx,my/6,Y,strlen(Y));TextOut(hdc,mx+3,my+3,z,strlen(z));for (i=-mx;i<2*mx;i++){MoveToEx(hdc,(i+mx)*50+4,my,NULL);LineTo(hdc,(i+mx)*50+4,my-5);SetPixel(hdc,(i+mx)*50+4,my,RGB(255,0,0));SetPixel(hdc,(i+mx)*50+5,my,RGB(255,0,0));} EndPaint(hWnd,&ps);return 0; } LRESULT OnCommand(HWND hWnd,UINT message,WPARAM wParam,LPARAM lParam){int r;switch (LOWORD(wParam)) { case IDM_RUN:r=DialogBoxParam(hInst,(LPCTSTR)IDD_INPUT,hWnd,DlgProc,(LPARAM)&x);if (r==IDOK)InvalidateRect(hWnd,NULL,TRUE);break;case IDM_EXIT:DestroyWindow(hWnd);break;default:return DefWindowProc(hWnd,message,wParam,lParam);}return 0; }Email:youname@nwpu.edu.cn18


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-120043-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      热点图片
      拼命载入中...