您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 项目/工程管理 > 《Visual-C++语言》实验报告
《VisualC++语言》实验报告专业班级:电气工程及其自动化实验一熟悉VisualC++程序调试方法一、实验目的(1)熟悉VisualC++6.0开发环境;(2)掌握在VisualC++6.0开发环境调试程序的方法。二、实验内容(1)创建三个项目,项目类型分别为:Win32ConsoleApplication、Win32Application和MFCAppWizard(exe),分别编译运行各个程序,观察各种项目类型程序的特点。(2)创建一个Win32ConsoleApplication类型的项目,输入下面的代码,按照要求对代码进行调试。说明:下面的程序求100~1000以内的水仙花数,所谓水仙花数就是一个三位的整数,其个位数字、十位数字和百位数字的立方和等于该数本身的值,则这个数称为水仙花数。#includeiostream.h#includemath.hvoidnarcissus();//求水仙花数voidmain(){narcissus();}voidnarcissus(){intx1;//百位数字intx20;//十位数字+个位数字intx2;//十位数字intx3;//个位数字intcount=0;//找到的水仙花数的总数for(intx=100;x1000;x++){x1=x/100;x20=x%100;x2=x20/10;x3=x20%10;if(x1*x1*x1+x2*x2*x2+x3*x3*x3==x){count++;coutOnenarcissusnumberfound:xendl;}}coutThetotalnumberofnarcissusnumbersis:countendl;}调试要求:�1、在程序代码的main函数中设置断点,启动程序执行到断点处停止;�2、在函数narcissus调用处进入函数内部,跟踪函数执行的过程;�3、单步执行程序,观察各个变量值的变化情况;�4、单步执行若干步后,跳出函数体,回到main函数。三、实验要求(1)观察三种项目类型对应的程序特点,做出简要说明;(2)列出C++程序清单,以及程序的运行结果;(3)记录调试过程中变量值的变化情况;(4)在VisualC++6.0中如何进行程序的跟踪调试;(5)总结实验的心得体会,实验中遇到的困难以及解决的方法等。四、实验步骤1、观察三种项目类型对应的程序特点,做出简要说明;三者都是工作在32位Windows环境下的程序。(1)Win32ConsoleApplication创建Win32控制台应用程序Win32ConsoleApplication(win32控制台应用程序)往往是像MS-DOS窗口(XP中叫命令提示符)的样子出现,我们得用键盘输入各种命令来使用它,它与纯dos程序区别是:它是32位的;或者叫CUI(CharacterUserInterface字符用户接口)。console程序以main()为入口,不能使用win32API函数。(2)Win32Application创建Win32应用程序Win32Application是普通的常见的窗口应用程序,有的界面做得比较个性化,比如圆形的、不规则形状的……它们都是所谓的GUI(GraphicsUserInterface图形用户接口),我们可以通过鼠标点击来完成控制。该系统环境是为开发windows应用程序所准备的,程序以WinMain()为入口,能够使用win32API函数。(3)MFCAppWizard(exe)创建MFC可执行程序MFC程序向导,微软为了减轻开发人员的工作负担,推出了MFC,MFC其实是一个框架,里面包含了200多个类,MFC比较复杂,MFC框架把基本的功能都实现了,我们只是需要把自己特殊的功能加到MFC里面,比如你想建一个windows窗口,MFCAPPWIZARD下,MFC中自包含了CWnd串口类,但是win32application,就是要你自己写一个窗口类,才能用。2、列出C++程序清单,以及程序的运行结果。程序清单见实验内容;程序运行结果为:3、记录调试过程中变量值的变化情况。程序调试时变量值的变化情况为:4、在VisualC++6.0中如何进行程序的跟踪调试。按F5键进入调试模式,通过使用F9来设置断点,然后可以用F10,F11来进行想要的单步调试或快速调试,用shift+F5退出调试模式。在程序代码的main函数中设置断点,启动程序执行到断点处停止在函数narcissus调用处进入函数内部,跟踪函数执行的过程按F5然后按F11。F9:添加/去除断点F5:进入调试模式F10:跳步执行当前语句、函数F11:单步执行5、实验中遇到的困难以及解决的方法。在实验开始时将程序考到工作空间中,运行后一直有错误,错误显示如下:errorLNK2001:unresolvedexternalsymbol_WinMain@16经检查是工程建错了,应该是建win32consoleapplication(32位控制台应用程序),而我建的是Win32Application,出现错误的原因是WinMain是Windows程序的入口,而我又写了一个main函数,编译的时候就报错了。而如果工程名为MFCAppWizard(exe)时错误为:fatalerrorC1010:unexpectedendoffilewhilelookingforprecompiledheaderdirectiveGeneratingCode..解决方案1:右键单击项目工程中的cpp文件,在菜单Project-Settings-C/C++-PrecompileHeader,设置为第一项:Notusingprecompileheaders。解决方案2:在.cpp文件开头添加包含文件stdafx.h。#includestdafx.h五、实验总结通过本次试验我熟悉了VisualC++6.0开发环境;掌握了在VisualC++6.0开发环境调试程序的方法;了解了Win32ConsoleApplication、Win32Application和MFCAppWizard(exe)三者的不同之处;同时进一步巩固了单步调试的步骤和方法,为以后的编程练习打下了基础。补充内容:程序调试操作类型功能键对应菜单含义Ctrl+F5Build|Runexe运行当前项目F7Build|Buildexe建立可执行程序F5Build|StartDebugging启动调试程序F5Debug|Go继续运行F11Debug|Stepinto进入函数体内部Shift+F11Debug|Stepout从函数体内部运行出来F10Debug|StepOver执行一行语句F9设置/清除断点Ctrl+F10Debug|Runtocursor运行到光标所在位置Shift+Debug|QuickWatch快速查看变量或表达式的值Shift+Debug|StopDebugging停止调试实验二熟悉Windows源程序基本结构一、实验目的(1)熟悉VisualC++6.0开发环境;(2)熟悉Windows系统事件驱动的运行机制;(3)熟悉Windows应用程序源程序基本结构;二、实验内容创建一个空白的Win32Application应用程序,建立相关文件,手工输入下列代码,实现一个Windows窗口程序。#includewindows.hLRESULTCALLBACKWndProc(HWNDhwnd,UINTmessgae,WPARAMwParam,LPARAMlParam);//以下初始化窗口类intWINAPIWinMain(HINSTANCEhThisInst,HINSTANCEhPrevInst,LPSTRlpszCmdLine,intnCmdShow){WNDCLASSws;HWNDhWnd;MSGmsg;ws.style=0;//窗口类型为默认类型ws.lpfnWndProc=WndProc;//窗口处理函数为WndProcws.cbClsExtra=0;//窗口类无扩展ws.cbWndExtra=0;//窗口实例无扩展ws.hInstance=hThisInst;//当前实力句柄ws.hIcon=LoadIcon(NULL,IDI_HAND);//窗口最小化图标ws.hCursor=LoadCursor(NULL,IDC_CROSS);//窗口箭头光标ws.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);//窗口背景为白色ws.lpszMenuName=NULL;//窗口中无菜单ws.lpszClassName=DemoClass;//窗口类名//以下进行窗口类的注册if(!RegisterClass(&ws)){return-1;}//创建窗口hWnd=CreateWindow(DemoClass,MyFirstWindowsProgram,//窗口类名,窗口实例名WS_OVERLAPPEDWINDOW,100,200,640,480,//窗口位置及高和宽NULL,NULL,hThisInst,NULL);//无父窗口,无主菜单,创建此窗口应用程序的当前句柄,不使用该值ShowWindow(hWnd,nCmdShow);//显示窗口UpdateWindow(hWnd);//绘制用户区while(GetMessage(&msg,NULL,0,0))//消息循环{TranslateMessage(&msg);DispatchMessage(&msg);}returnmsg.wParam;//程序终止时将信息返回系统}LRESULTCALLBACKWndProc(HWNDhwnd,UINTmessgae,WPARAMwParam,LPARAMlParam){switch(messgae){caseWM_DESTROY:PostQuitMessage(0);//调用PostQuitMessage发出WM_QUIT消息break;default://默认时采用系统消息默认处理函数returnDefWindowProc(hwnd,messgae,wParam,lParam);}return0;}三、实验报告(1)列出源程序清单,以及程序的运行结果;程序清单见实验内容;运行结果为:(2)总结Windows源程序的结构特点,说明各个主要程序段的作用;Windows源程序主要结构由WinMain和WinProc两个函数构成,其中WinMain是入口函数,函数名称和参数都是固定的,WndProc是窗口函数,其函数名称可由用户自行定义,但是参数是固定的。WinMain函数的主要功能如下:(1)注册窗口类,建立窗口及执行其他必要的初始化工作。(2)建立窗口及执行必要的初始化,包括窗口类的定义、注册、创建窗口实例、显示窗口四部分。(3)消息循环,Windows应用程序的运行以消息为核心。进入消息循环,根据接收的消息调用相应的处理过程,当消息循环检索到WM_QUIT时终止程序运行。Windows的消息循环(I)Windows系统为应用程序保持一个消息队列。(II)当有事件发生后,Windows先将激发事件翻译成一个Windows消息,然后再把这个消息加入到这个应用程序的消息队列中去。(III)应用程序需要通过消息循环来接收这些消息。常见的消息循环代码如下:MSGmsg;//定义MSG变量while(GetMessage(&msg,NULL,0,0)){TranslateMessage(&msg);//翻译消息DispatchMessage(&msg);//分发消息窗口函数WndProc定义了应用程序对接收到的不同消息的响应,包含了对各种可能接收到的消息的处理过程。WndProc函数由一个或多个switch语句组成,每一条case语句对应一种消息,当应用程序接收到一个消息时,相应的case语句被激活并执行相应的响应程序模块。(3)总结实验的心得体会,实验中遇到的困难以及解
本文标题:《Visual-C++语言》实验报告
链接地址:https://www.777doc.com/doc-6308344 .html