带你读《C语言程序设计习题解析与上机指导》之二:Visual C++ 2010上机指南

简介: 本书首先介绍了计算机程序设计实验的一般方法以及在Visual C++ 2010下编写和调试C语言程序的具体步骤,然后对主教材各章后面的习题以及C语言程序设计课程学习中的疑难问题和常见问题进行了详细的解析,同时还汇总了各章的知识重点。在第三部分,精心设置了9个上机实验,每个实验项目都给出了实验目的和要求,并给出了编程示例和练习题目。读者可以通过由浅入深的实际训练,逐步熟悉编程环境,掌握程序调试方法,理解和掌握程序设计的思想、方法和技巧。

点击查看第一章
点击查看第三章

第2章Visual C++ 2010上机指南

2.1Visual C++ 2010概述

Visual Studio是微软公司推出的目前流行的Windows平台应用程序开发环境。Visual Studio 2010同时带来了 NET Framework 4.0,除了Microsoft SQL Server,它还支持IBM DB2和Oracle数据库。Visual Studio 可以用来创建Windows平台下的Windows应用程序和网络应用程序,也可以用来创建网络服务、智能设备应用程序和Office插件。
Visual C++ 2010 是Visual Studio 2010中的一个模块,是微软公司推出的目前使用极为广泛的基于Windows平台的可视化集成开发环境(IDE)。它包含文本编辑器、资源编辑器、工程编译器、源代码浏览器、集成调试等工具以及一套联机文档。使用Visual C++ 2010,可以完成创建、调试、修改C++应用程序等各种操作。
Visual C++ 2010提供面向对象技术的支持,它能够帮助使用MFC库的用户自动生成一个具有图形界面的应用程序框架。用户只需在该框架的适当部分添加、扩充代码就可以得到一个满意的应用程序。
Visual C++ 2010也作为C语言程序的常用的应用开发环境之一,C语言是C++的子集,C++是对C语言的扩展,包含了C语言的所有内容,Visual C++ 2010只有创建C++文件的选项,没有创建C语言文件的选项。但是这并不影响使用,我们在填写源文件名称时把后缀改为.c即可,编译器会根据源文件的后缀来判断代码的种类。
如果使用Visual C++ 2010编写大型的C语言应用程序,一般采用层次文件结构,如图2-1所示。
image.png
其中.sln类型的文件在Visual C++ 2010中是级别最高的,称为解决方案(solution)文件,一般与具体的应用系统相对应。在Visual C++ 2010中,应用程序是以工程(project,也称为项目)文件的形式存在的,文件的扩展名为.vcxproj。一个解决方案文件中可以包含多个工程文件,由解决方案文件对它们进行统一协调和管理。每个工程文件中包含若干头文件和源文件。头文件(.h)包含的主要是函数、数据类型的说明和符号常量的定义等内容;源文件(.c)为实现文件,该文件包含的主要是函数的实现代码。在程序结构层面,每个工程文件由很多函数组成,但必须且只能有一个主函数main()。

2.2建立C语言应用程序

利用Visual C++ 2010提供的控制台操作方式,可以建立C语言应用程序。Win32控制台程序(Win32 Console Application)是一类Windows程序,它不使用复杂的图形用户界面,程序与用户交互是通过一个标准的正文窗口。下面我们通过编写简单的C语言应用程序,初步介绍Visual C++ 2010的使用。

2.2.1安装和启动

运行Visual Studio 2010 Express软件中的setup.hta程序,选择安装Visual C++ 2010学习版,然后按照安装程序的指导完成安装过程。
安装完成后,在“开始”菜单的“程序”子菜单中有Microsoft Visual Studio 2010项,选择其中的Microsoft Visual C++ 2010 Express即可运行(也可在Windows桌面上建立一个快捷方式,双击即可运行)。
Visual C++ 2010默认安装完成后,为了在执行程序时出现“结果窗口”,需要进行手动设置。详细操作参考2.5节。

2.2.2创建项目

用Visual C++ 2010系统建立C语言应用程序,首先要创建一个项目,用来存放C程序的所有信息。创建一个项目的操作步骤如下:
1)进入Visual C++ 2010环境后,在上方菜单栏中选择“文件 → 新建 → 项目”命令(如图2-2所示),或者按下Ctrl+Shift+N组合键。
image.png
2)屏幕上出现如图2-3所示的“新建项目”对话框后,选择“Win32”模板,选择“Win32控制台应用程序”(如果你安装的是英文版,那么对应的项目类型是“Win32 Console Application”),填写好项目名称,选择好存储位置,单击“确定”按钮。
image.png
3)屏幕上出现如图2-4所示的向导,然后单击“下一步”按钮继续。
image.png
4)屏幕上出现如图2-5所示的Win32应用程序向导2,先取消“预编译头”,再勾选“空项目”,然后单击“完成”按钮就创建了一个新的项目。
image.png

2.2.3添加C源程序文件

添加一个C源程序文件的操作步骤如下:
1)选择主菜单“文件”中的“项目→添加新项”命令,或在解决方案资源管理器的“源文件”处右击鼠标,在弹出的菜单中选择“添加 → 新建项”(或者按下Ctrl+Shift+A组合键),如图2-6所示。
image.png
2)选定“C++ 文件(cpp)”项,在“名称”栏中填入新添加的源文件名,如“hello.c”,在“位置”栏中指定文件路径,选择存放在项目文件夹内可以不必输入,单击“添加”按钮,如图2-7所示。
注意:填入C源文件名一定要加上扩展名“.c”,否则系统会为文件添加默认的C++源文件,扩展名自动变成“.cpp”,编译器会根据源文件的后缀来判断代码的种类。
image.png
3)在文件编辑区输入源程序,如图2-8所示。
image.png

2.2.4编译、连接和运行

系统提供了一种快捷的方式,可以一键完成编译、连接、运行,有三种方法:
1)单击“生成”工具栏中的“开始执行(不调试)”图标;
2)单击菜单栏中的“调试”按钮,选择“开始执行(不调试)”命令;
3)按下Ctrl+F5组合键。
系统首先进行编译过程,输出窗口将显示编译过程中检查出的错误或警告信息,在错误信息处双击鼠标左键或单击鼠标右键再选“转到”命令,可以使输入焦点跳转到引起错误的源代码处大致位置以进行修改。如图2-9所示:输出窗口中提示“error C2143: 语法错误 : 缺少‘;’”,同时在程序窗口标注出出错语句的大致位置。在“printf("hello everybody!n")”的后面加一个分号后再编译一次即可。
image.png
如果程序没有语法错误,自动开始连接和运行,此时将会出现一个新的用户窗口,按照程序输入要求正确输入数据后,程序即正确执行,用户窗口显示运行的结果。
程序编译完成后生成的目标文件(.obj)、连接后生成的可执行文件(.exe)存放在当前项目所在文件夹的“Debug”子文件夹中。编译完成后,打开项目目录(d:c language myproject-1Debug)文件夹,会看到经过编译产生的目标文件(Object File)hello.obj、最终生成的可执行文件myproject-1.exe。

2.3编辑C语言应用程序

2.3.1打开项目/解决方案

选择主菜单“文件→打开→项目/解决方案”命令,在“打开项目”对话框中找到并选择要打开的项目/解决方案文件“MyProject-1.sln”,单击“确定”按钮,打开后,在左侧的“解决方案资源管理器”窗口,打开要编辑的C源程序进行编辑和修改,如图2-10所示。
image.png

2.3.2在项目中添加已经存在的文件

首先选中项目名,然后单击鼠标右键,在弹出的快捷菜单中单击“添加 → 现有项”命令,或者单击选择主菜单“项目 → 添加现有项”命令,在“打开项目”对话框中找到已经存在的C源程序文件,单击“添加”按钮完成添加,如图2-11所示。

2.3.3在解决方案中添加新项目

首先在解决方案管理器内选择解决方案名,单击鼠标右键,在弹出的快捷菜单中单击“添加 → 新建项目”命令,在“添加新项目”对话框中选择“Win32控制台应用程序”,选择位置,填写项目名,单击“确定”按钮完成添加,如图2-12所示。
image.png
image.png

2.3.4设置启动项目

如果一个解决方案中有多个项目,只能有一个是当前活动项目,该项目当前正在编译运行,需要设置成为启动项目。方法是在解决方案管理器内选中该项目,单击鼠标右键激活快捷菜单,选择“设为启动项目”命令,如图2-13所示。
image.png

2.4调试程序

在编写较长的程序时,能够一次成功绝非易事。对于程序中的错误,系统提供了易用且有效的调试手段。调试是一个程序员最基本的技能,这里我们介绍一些初级的调试方法。

2.4.1调试程序环境介绍

  1. 进入调试程序环境
    选择“调试”主菜单中提供的调试命令,或者在菜单区空白处单击鼠标右键,在弹出的菜单中选中“调试”项激活调试工具条,选择需要的调试命令,系统将会进入调试程序界面,同时提供多种窗口监视程序运行,如图2-14所示。
  2. 监视窗口
    单击底部的“监视1”按钮,或把光标移动到“监视1”按钮上,下方出现一个观察窗口。

系统支持查看程序运行到当前指令语句时变量、表达式和内存的值。所有这些观察都必须在中断的情况下进行。
在该窗口中输入变量或者表达式,就可以观察变量或者表达式的值。注意:表达式不能有副作用,例如“++”和“--”运算符绝对禁止用于表达式中,因为这两个运算符将修改变量的值,导致程序的逻辑被破坏。
还可以在调试状态下单击鼠标右键,选择“快速监视”命令,弹出一个对话框,来观看变量和计算表达式的值。
image.png

  1. “局部变量”窗口
    单击底部的“局部变量”按钮,或把光标移动到“局部变量”按钮上,下方出现一个观察窗口,显示当前窗口所有可见的变量的值,特别是当前指令语句涉及的变量值,以红色显示。
  2. 自动窗口
    单击底部的“自动窗口”按钮,或把光标移动到“局部变量”按钮上,下方出现一个观察窗口,显示所有当前执行的上下文中可见的变量的值,特别是当前指令语句涉及的变量值,以红色显示。

2.4.2单步执行

系统提供了多种单步执行调试程序的方法:可以通过单击调试工具条上的按钮或按快捷键的方式选择多种单步执行命令。表2-1中列出了常用的调试命令。
1)单步跟踪进入子函数(逐语句,F11),每按一次F11快捷键或单击调试工具条上的按钮,程序执行一条无法再进行分解的程序行,如果涉及子函数,进入子函数内部。
2)单步跟踪跳过子函数(逐过程,F10),每按一次F10快捷键或单击调试工具条上的按钮,程序执行一行;监视窗口可以显示变量名及其当前值,在单步执行的过程中,可以在监视窗口中加入所需观察的变量,辅助进行监视,以便随时了解变量当前的情况,如果涉及子函数,不进入子函数内部。
image.png
3)单步跟踪跳出子函数(跳出,Shift+F11),按Shift+F11组合键或单击调试工具条上的按钮后,程序运行至当前函数的末尾,然后从当前子函数跳到上一级主调函数。
4)悬停鼠标查看表达式值。观看变量的值的最简单方法,是把光标移动到变量上,停留一会儿就可以看到变量的值。

2.4.3设置断点调试程序

对于较大规模程序的跟踪,断点是最常用的技巧。断点是调试器设置的一个代码位置,当程序运行到断点时,程序中断执行,回到调试器。调试时只有设置了断点并使程序回到调试器,才能对程序进行在线调试。如图2-15所示。
image.png

  1. 设置断点的方法
    可以通过下述方法设置一个断点:首先把光标移动到需要设置断点的代码行上,然后按F9快捷键,断点处所在的程序行的左侧会出现一个红色圆点;把光标移动到需要设置断点的代码行的左边框上然后单击鼠标左键,断点处所在的程序行的左侧也会出现一个红色圆点;用右键菜单的“插入断点”命令。如图2-15和表2-1所示。

系统提供了多种类型的断点:
条件断点:可以为断点设置一个条件,这样的断点称为条件断点。对于新加的断点,可以单击“条件”按钮,为断点设置一个表达式。当这个表达式的值发生改变时,程序就被中断。
数据断点:数据断点只能在“断点”对话框中设置。在编辑框中输入一个表达式,当这个表达式的值发生变化时,到达数据断点。一般情况下,这个表达式应该由运算符和全局变量构成。

  1. 程序运行到断点
    选择主菜单“调试”中的“启动调试”或按F10快捷键,程序执行到第一个断点处后将暂停执行,该断点处所在的程序行的左侧红色圆点上会添加一个黄色箭头,此时,用户可方便地进行变量观察。继续执行该命令,程序运行到下一个相邻的断点。如图2-15所示。
  2. 取消断点
    只需在代码处再次按F9键,或者把光标移动到需要取消断点的代码行的左边框上然后单击鼠标左键,或者打开“断点”对话框后按照界面提示去掉断点。
  3. 结束程序调试,返回程序编辑环境
    选择主菜单“调试”中的“停止调试”命令,或者单击调试工具条上的按钮,或者按Shift+F5组合键,都可结束程序调试,返回程序编辑环境。

2.5修改用户界面设置

Visual C++ 2010默认安装完成后,为了在执行程序时出现结果窗口,需要进行如下设置:
单击菜单栏上的“视图”命令,在下拉菜单中选择“工具栏”命令,在级联菜单中选择“生成”选项。如图2-16所示。
此时将在工具栏中出现“生成”工具栏,可拖动该工具栏上的移动条改变其位置。如图2-17所示。
用鼠标指向“生成”工具栏右下角的箭头图标,出现“生成”工具栏选项的提示。单击该箭头图标,出现“添加或移除按钮”项,在级联菜单中选择“自定义”选项。如图2-18所示。
image.png
image.png
image.png
出现“自定义”对话框,在“命令”选项卡中单击“添加命令”按钮。出现“添加命令”对话框。如图2-19所示。
选择“开始执行(不调试)”命令,单击“确定”按钮,在“生成”工具栏中会出现“开始执行(不调试)”命令按钮。
在运行程序时,单击该按钮,程序执行后会出现结果窗口。
image.png

2.6有关联机帮助

Visual C++ 2010提供了详细的帮助信息,用户通过选择“帮助”菜单下的“帮助目录”命令就可以进入帮助系统。在源文件编辑器中把光标定位在一个需要查询的单词处,然后按F1键也可以进入Visual C++ 2010的帮助系统。
此外,在编程的过程中,将光标移至函数名的上面,系统会自动提供该函数的原型说明。

相关文章
|
9月前
|
安全 C语言 C++
比较C++的内存分配与管理方式new/delete与C语言中的malloc/realloc/calloc/free。
在实用性方面,C++的内存管理方式提供了面向对象的特性,它是处理构造和析构、需要类型安全和异常处理的首选方案。而C语言的内存管理函数适用于简单的内存分配,例如分配原始内存块或复杂性较低的数据结构,没有构造和析构的要求。当从C迁移到C++,或在C++中使用C代码时,了解两种内存管理方式的差异非常重要。
295 26
|
编译器 C++ 开发者
【C++篇】深度解析类与对象(下)
在上一篇博客中,我们学习了C++的基础类与对象概念,包括类的定义、对象的使用和构造函数的作用。在这一篇,我们将深入探讨C++类的一些重要特性,如构造函数的高级用法、类型转换、static成员、友元、内部类、匿名对象,以及对象拷贝优化等。这些内容可以帮助你更好地理解和应用面向对象编程的核心理念,提升代码的健壮性、灵活性和可维护性。
|
存储 C语言 C++
【C++数据结构——栈与队列】顺序栈的基本运算(头歌实践教学平台习题)【合集】
本关任务:编写一个程序实现顺序栈的基本运算。开始你的任务吧,祝你成功!​ 相关知识 初始化栈 销毁栈 判断栈是否为空 进栈 出栈 取栈顶元素 1.初始化栈 概念:初始化栈是为栈的使用做准备,包括分配内存空间(如果是动态分配)和设置栈的初始状态。栈有顺序栈和链式栈两种常见形式。对于顺序栈,通常需要定义一个数组来存储栈元素,并设置一个变量来记录栈顶位置;对于链式栈,需要定义节点结构,包含数据域和指针域,同时初始化栈顶指针。 示例(顺序栈): 以下是一个简单的顺序栈初始化示例,假设用C语言实现,栈中存储
817 77
|
12月前
|
存储 监控 算法
基于 C++ 哈希表算法的局域网如何监控电脑技术解析
当代数字化办公与生活环境中,局域网的广泛应用极大地提升了信息交互的效率与便捷性。然而,出于网络安全管理、资源合理分配以及合规性要求等多方面的考量,对局域网内计算机进行有效监控成为一项至关重要的任务。实现局域网内计算机监控,涉及多种数据结构与算法的运用。本文聚焦于 C++ 编程语言中的哈希表算法,深入探讨其在局域网计算机监控场景中的应用,并通过详尽的代码示例进行阐释。
236 4
|
存储 C++
【C++数据结构——树】哈夫曼树(头歌实践教学平台习题) 【合集】
【数据结构——树】哈夫曼树(头歌实践教学平台习题)【合集】目录 任务描述 相关知识 测试说明 我的通关代码: 测试结果:任务描述 本关任务:编写一个程序构建哈夫曼树和生成哈夫曼编码。 相关知识 为了完成本关任务,你需要掌握: 1.如何构建哈夫曼树, 2.如何生成哈夫曼编码。 测试说明 平台会对你编写的代码进行测试: 测试输入: 1192677541518462450242195190181174157138124123 (用户分别输入所列单词的频度) 预
530 14
【C++数据结构——树】哈夫曼树(头歌实践教学平台习题) 【合集】
|
C++ 芯片
【C++面向对象——类与对象】Computer类(头歌实践教学平台习题)【合集】
声明一个简单的Computer类,含有数据成员芯片(cpu)、内存(ram)、光驱(cdrom)等等,以及两个公有成员函数run、stop。只能在类的内部访问。这是一种数据隐藏的机制,用于保护类的数据不被外部随意修改。根据提示,在右侧编辑器补充代码,平台会对你编写的代码进行测试。成员可以在派生类(继承该类的子类)中访问。成员,在类的外部不能直接访问。可以在类的外部直接访问。为了完成本关任务,你需要掌握。
315 19
|
存储 人工智能 算法
【C++数据结构——图】最短路径(头歌教学实验平台习题) 【合集】
任务描述 本关任务:编写一个程序,利用Dijkstra算法,实现带权有向图的最短路径。 相关知识 为了完成本关任务,你需要掌握:Dijkst本关任务:编写一个程序,利用Dijkstra算法,实现带权有向图的最短路径。为了完成本关任务,你需要掌握:Dijkstra算法。带权有向图:该图对应的二维数组如下所示:Dijkstra算法:Dijkstra算法是指给定一个带权有向图G与源点v,求从v到G中其他顶点的最短路径。Dijkstra算法的具体步骤如下:(1)初始时,S只包含源点,即S={v},v的距离为0。
220 15
|
存储 编译器 数据安全/隐私保护
【C++面向对象——类与对象】CPU类(头歌实践教学平台习题)【合集】
声明一个CPU类,包含等级(rank)、频率(frequency)、电压(voltage)等属性,以及两个公有成员函数run、stop。根据提示,在右侧编辑器补充代码,平台会对你编写的代码进行测试。​ 相关知识 类的声明和使用。 类的声明和对象的声明。 构造函数和析构函数的执行。 一、类的声明和使用 1.类的声明基础 在C++中,类是创建对象的蓝图。类的声明定义了类的成员,包括数据成员(变量)和成员函数(方法)。一个简单的类声明示例如下: classMyClass{ public: int
512 13
|
Java C++
【C++数据结构——树】二叉树的基本运算(头歌实践教学平台习题)【合集】
本关任务:编写一个程序实现二叉树的基本运算。​ 相关知识 创建二叉树 销毁二叉树 查找结点 求二叉树的高度 输出二叉树 //二叉树节点结构体定义 structTreeNode{ intval; TreeNode*left; TreeNode*right; TreeNode(intx):val(x),left(NULL),right(NULL){} }; 创建二叉树 //创建二叉树函数(简单示例,手动构建) TreeNode*create
456 12
|
C++
【C++数据结构——树】二叉树的性质(头歌实践教学平台习题)【合集】
本文档介绍了如何根据二叉树的括号表示串创建二叉树,并计算其结点个数、叶子结点个数、某结点的层次和二叉树的宽度。主要内容包括: 1. **定义二叉树节点结构体**:定义了包含节点值、左子节点指针和右子节点指针的结构体。 2. **实现构建二叉树的函数**:通过解析括号表示串,递归地构建二叉树的各个节点及其子树。 3. **使用示例**:展示了如何调用 `buildTree` 函数构建二叉树并进行简单验证。 4. **计算二叉树属性**: - 计算二叉树节点个数。 - 计算二叉树叶子节点个数。 - 计算某节点的层次。 - 计算二叉树的宽度。 最后,提供了测试说明及通关代
245 10

推荐镜像

更多
  • DNS