《Visual C++语言》实验报告
专业班级: 电气工程及其自动化
实验一 熟悉 Visual C++程序调试方法
一、实验目的
(1) 熟悉Visual C++ 6.0 开发环境;
(2) 掌握在Visual C++ 6.0 开发环境调试程序的方法。
二、实验内容
(1) 创建三个项目,项目类型分别为:Win32 Console Application、Win32 Application 和MFC AppWizard(exe),分别编译运行各个程序,观察各种项目类型
程序的特点。
(2) 创建一个Win32 Console Application 类型的项目,输入下面的代码,按 照要求对代码进行调试。
说明:下面的程序求100~1000 以内的水仙花数,所谓水仙花数就是一个三位 的整数,其个位数字、十位数字和百位数字的立方和等于该数本身的值,则这个数称为水仙花数。
#include \#include \
void narcissus(); // 求水仙花数 void main() {
narcissus(); }
void narcissus() {
int x1; // 百位数字
int x20; // 十位数字+个位数字 int x2; // 十位数字
int x3; // 个位数字
int count = 0; // 找到的水仙花数的总数 for(int x=100; x<1000; x++) {
x1 = x/100; x20 = x0; x2 = x20/10; x3 = x20;
if(x1*x1*x1+x2*x2*x2+x3*x3*x3 == x) {
count++;
cout<<\} }
cout<<\
}
调试要求:
", 1、在程序代码的 main 函数中设置断点,启动程序执行到断点处停止; ", 2、在函数 narcissus 调用处进入函数内部,跟踪函数执行的过程; ", 3、单步执行程序,观察各个变量值的变化情况;
", 4、单步执行若干步后,跳出函数体,回到 main 函数。
三、实验要求
(1) 观察三种项目类型对应的程序特点,做出简要说明; (2) 列出C++程序清单,以及程序的运行结果; (3) 记录调试过程中变量值的变化情况;
(4) 在Visual C++ 6.0 中如何进行程序的跟踪调试;
(5) 总结实验的心得体会,实验中遇到的困难以及解决的方法等。
四、实验步骤
1、观察三种项目类型对应的程序特点,做出简要说明; 三者都是工作在32位Windows环境下的程序。
(1)Win32 Console Application 创建Win32控制台应用程序
Win32 Console Application(win32控制台应用程序)往往是像MS-DOS窗口(XP 中叫命令提示符)的样子出现,我们得用键盘输入各种命令来使用它,它与纯dos程序区别是:它是32位的; 或者叫CUI(Character User Interface字符用户接口)。 console程序以main()为入口,不能使用win32 API函数。 (2)Win32Application 创建Win32应用程序
Win32Application 是普通的常见的窗口应用程序,有的界面做得比较个性化,比如圆形的、不规则形状的…… 它们都是所谓的GUI(Graphics User Interface图形用户接口),我们可以通过鼠标点击来完成控制。该系统环境是为开发windows应用程序所准备的,程序以WinMain()为入口,能够使用win32 API函数。
(3)MFC AppWizard(exe) 创建MFC可执行程序
MFC程序向导,微软为了减轻开发人员的工作负担,推出了MFC,MFC其实是一个框架,里面包含了200多个类,MFC比较复杂,MFC框架把基本的功能都实现了,我们只是需要把自己特殊的功能加到MFC里面, 比如你想建一个windows窗口,MFC APPWIZARD下,MFC中自包含了CWnd串口类,但是win32 application,就是要你自己写一个窗口类,才能用。 2、 列出C++程序清单,以及程序的运行结果。 程序清单见实验内容; 程序运行结果为:
3、 记录调试过程中变量值的变化情况。 程序调试时变量值的变化情况为:
4、 在Visual C++ 6.0 中如何进行程序的跟踪调试。
按F5键进入调试模式,通过使用F9来设置断点,然后可以用F10,F11来进行想要的单步调试或快速调试,用shift+F5退出调试模式。在程序代码的 main 函数中设置断点,启动程序执行到断点处停止在函数 narcissus 调用处进入函数内部,跟踪函数执行的过程按F5然后按F11。
F9:添加/去除断点 F5:进入调试模式 F10:跳步执行当前语句、函数 F11:单步执行
5、 实验中遇到的困难以及解决的方法。
在实验开始时将程序考到工作空间中,运行后一直有错误,错误显示如下: error LNK2001: unresolved external symbol _WinMain@16
经检查是工程建错了,应该是建win32 console application(32位控制台应用程序),而我建的是Win32 Application ,出现错误的原因是WinMain 是Windows 程序的入口,而我又写了一个main 函数,编译的时候就报错了。 而如果工程名为MFC AppWizard(exe)时
错误为:fatal error C1010: unexpected end of file while looking for precompiled header directiveGenerating Code.. 解决方案1: 右键单击项目工程中的cpp文件,在菜单
Project->Settings->C/C++->Precompile Header,设置为第一项:Not using precompile headers。
解决方案2:在.cpp文件开头添加包含文件stdafx.h。 #include\
五、实验总结
通过本次试验我熟悉了Visual C++ 6.0 开发环境;掌握了在Visual C++ 6.0 开发环境调试程序的方法;了解了Win32 Console Application、Win32Application 和MFC AppWizard(exe)三者的不同之处;同时进一步巩固了

