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

本文涉及的产品
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介: 本书首先介绍了计算机程序设计实验的一般方法以及在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的帮助系统。
此外,在编程的过程中,将光标移至函数名的上面,系统会自动提供该函数的原型说明。

相关文章
|
1月前
|
安全 编译器 C语言
C++入门1——从C语言到C++的过渡
C++入门1——从C语言到C++的过渡
59 2
|
1月前
|
C语言 C++
C 语言的关键字 static 和 C++ 的关键字 static 有什么区别
在C语言中,`static`关键字主要用于变量声明,使得该变量的作用域被限制在其被声明的函数内部,且在整个程序运行期间保留其值。而在C++中,除了继承了C的特性外,`static`还可以用于类成员,使该成员被所有类实例共享,同时在类外进行初始化。这使得C++中的`static`具有更广泛的应用场景,不仅限于控制变量的作用域和生存期。
54 10
|
2月前
|
算法 机器人 C语言
ROS仿真支持C++和C语言
ROS仿真支持C++和C语言
69 1
|
1月前
|
C语言 C++
实现两个变量值的互换[C语言和C++的区别]
实现两个变量值的互换[C语言和C++的区别]
20 0
|
1月前
|
程序员 编译器 数据处理
【C语言】深度解析:动态内存管理的机制与实践
【C语言】深度解析:动态内存管理的机制与实践
|
1月前
|
Serverless 编译器 C语言
【C语言】指针篇- 深度解析Sizeof和Strlen:热门面试题探究(5/5)
【C语言】指针篇- 深度解析Sizeof和Strlen:热门面试题探究(5/5)
|
2月前
|
C语言
C语言程序设计核心详解 第四章&&第五章 选择结构程序设计&&循环结构程序设计
本章节介绍了C语言中的选择结构,包括关系表达式、逻辑表达式及其运算符的优先级,并通过示例详细解释了 `if` 语句的不同形式和 `switch` 语句的使用方法。此外,还概述了循环结构,包括 `while`、`do-while` 和 `for` 循环,并解释了 `break` 和 `continue` 控制语句的功能。最后,提供了两道例题以加深理解。
|
2月前
|
存储 C语言
C语言程序设计核心详解 第十章:位运算和c语言文件操作详解_文件操作函数
本文详细介绍了C语言中的位运算和文件操作。位运算包括按位与、或、异或、取反、左移和右移等六种运算符及其复合赋值运算符,每种运算符的功能和应用场景都有具体说明。文件操作部分则涵盖了文件的概念、分类、文件类型指针、文件的打开与关闭、读写操作及当前读写位置的调整等内容,提供了丰富的示例帮助理解。通过对本文的学习,读者可以全面掌握C语言中的位运算和文件处理技术。
|
2月前
|
存储 C语言
C语言程序设计核心详解 第七章 函数和预编译命令
本章介绍C语言中的函数定义与使用,以及预编译命令。主要内容包括函数的定义格式、调用方式和示例分析。C程序结构分为`main()`单框架或多子函数框架。函数不能嵌套定义但可互相调用。变量具有类型、作用范围和存储类别三种属性,其中作用范围分为局部和全局。预编译命令包括文件包含和宏定义,宏定义分为无参和带参两种形式。此外,还介绍了变量的存储类别及其特点。通过实例详细解析了函数调用过程及宏定义的应用。
|
2月前
|
C语言
C语言程序设计核心详解 第三章:顺序结构,printf(),scanf()详解
本章介绍顺序结构的基本框架及C语言的标准输入输出。程序从`main()`开始依次执行,框架包括输入、计算和输出三部分。重点讲解了`printf()`与`scanf()`函数:`printf()`用于格式化输出,支持多种占位符;`scanf()`用于格式化输入,需注意普通字符与占位符的区别。此外还介绍了`putchar()`和`getchar()`函数,分别用于输出和接收单个字符。

推荐镜像

更多
下一篇
无影云桌面