C语言程序设计上机指导资料.docx
- 文档编号:8211904
- 上传时间:2023-01-29
- 格式:DOCX
- 页数:18
- 大小:989.25KB
C语言程序设计上机指导资料.docx
《C语言程序设计上机指导资料.docx》由会员分享,可在线阅读,更多相关《C语言程序设计上机指导资料.docx(18页珍藏版)》请在冰豆网上搜索。
C语言程序设计上机指导资料
C语言程序设计
上机指导
2015年3月
北京交通大学
刘湘黔
1.启动VisualC++6.0集成开发环境
VisualC++6.0是微软公司1998年推出的visualstudio系列产品之一,它提供了强大的编译能力以及良好的界面操作性。
能够对Windows下的C++程序设计提供完善的编程环境。
同时它对网络、数据库等方面的编程也提供相应的环境支持。
使用VisualC++6.0编制并运行程序也是编辑(把程序代码输入)、编译(成目标程序文件)、连接(成可执行程序文件)、运行(可执行程序文件)四个步骤,其中第一步的编辑工作是最繁杂而又必须细致地由人工在计算机上来完成,其余几个步骤则相对简单,基本上由系统自动完成。
确认你所使用的计算机是否已经安装VisualC++6.0,若已经安装,则执行“开始”→“程序”→“MicrosoftVisualStudio”→“VisualC++6.0”命令即可启动VisualC++6.0,否则,则应先安装VisualC++6.0。
启动VisualC++6.0,进入到它的集成开发环境窗口,其具体窗口式样如图2-1所示。
图1-1VisualC++6.0集成开发环境式样
图中所示VisualC++6.0的窗口从大体上可分为四部分。
上部是菜单和工具条;左边是工作区显示窗口,这里将显示处理过程中与项目相关的各种文件种类等信息;右边是视图区,这里显示和编辑程序文件的操作区;下边是输出窗口区,程序调试过程中,进行编译、链接、运行时输出的相关信息将在此处显示。
2.创建工程
使用VisualC++6.0编制并处理C++程序时要创建工程,因此必须先要了解VisualC++6.0的工程(有的资料也翻译成项目)的概念,而工程又与工程工作区相关联。
实际上,VisualC++6.0是通过工程工作区来组织工程及其各相关元素的,就好像是一个工作间,以后程序所牵扯到的所有的文件、资源等元素都将放入到这一工作间中,从而使得各个工程之间互不干扰,使编程工作更有条理。
这种思想反应到实现上就是一个工作区对应于一个独立的文件夹。
简单的情况下,一个工作区中用来存放一个工程,代表着某一个要进行处理的程序。
如果需要,一个工作区中也可以用来存放多个工程,其中可以包含该工程的子工程或者与其有依赖关系的其他工程。
创建工程工作区之后,系统将创建出一个相应的工作区文件,后缀为“.dsw”,用来存放与该工作区相关的信息;另外还将创建出的其他几个相关文件是:
工程文件(后缀是“.dsp”)以及选择信息文件(后缀是“.opt”)等。
在Windows环境下通过双击工作区文件或工程文件都可以打开相应的工程。
VisualC++6.0已经预先为用户准备好了近20种不同的工程类型以供选择,选定不同的类型意味着让VisualC++6.0系统帮着提前做某些不同的准备以及初始化工作(例如,事先为用户自动生成一个所谓的底层程序框架,并进行某些隐含设置,如隐含位置、预定义常量、输出结果类型等)。
工程类型中,其中有一个为“Win32ConsoleApplication”的类型,称之为控制台应用,它是我们首先要掌握的、用来编制运行C++程序方法中最简单的一种。
此种类型的程序运行时,将出现并使用一个类似于DOS的窗口,这个类似于DOS的窗口就是控制台,通过它提供对字符模式的各种处理与支持。
实际上,用此种类型的工程开发的应用程序是具有字符界面的应用程序。
此种类型的工程小巧而简单,并且足以解决并支持本课程中涉及到的面向对象编程内容与技术,使我们把重点放在面向对象思想的理解及程序的设计,而并非界面处理等方面,至于VisualC++6.0支持的其他工程类型,我们在今后的学习和工作中遇到再逐渐了解、掌握与使用。
创建工程的步骤为:
首先,选择“File”→“New”→“Projects”命令,会弹出如图2-2所示的对话框,从左侧选项中选择“Win32ConsoleApplication”项,在右侧“Location”文本框中填入存放与工程工作区相关的所有文件及其相关信息的文件夹的路径及名称,当然也可通过点击其右部的“…”按钮去选择并指定这一文件夹即子目录位置。
在“Projectname”文本框中填入工程名,注意,此时VisualC++6.0会自动在其下的Location文本框中用该工程名建立一个同名的子目录,随后的工程文件以及其他相关文件都将存放在这个目录下。
图1-2VisualC++6.0新建工程对话框
然后,单击OK进入下一个对话框,如图2-3所示。
图1-3新建控制台工程类型选择对话框
从图中可以看到有四种类型的控制台工程可供选择:
若选择“Anemptyproject”项将生成一个空的工程,工程内不包括任何东西。
若选择“Asimpleapplication”项将生成包含一个空的main函数和一个空的头文件的工程。
若选“A"HelloWorld!
"application”项将生成包含一个有显示出“HelloWorld!
”字符串的输出语句的main函数和一个空的头文件的工程。
若选择“AnapplicationthatsupportsMFC”项的话,可以利用VisualC++6.0所提供的基础类库来进行编程。
选择“Finish”,系统自动建立一个基于控制台的工程。
建立好工程的VisualC++6.0系统界面如图2-4所示。
图1-4建立控制台工程后的系统界面
补充说明:
1、如果在创建工程的时候若选择“Asimpleapplication”项,创建的工程中含有两个源文件(proj1.cpp和StdAfx.cpp)和一个头文件(StdAfx.h),并且proj1.cpp源文件中有一个不做任何操作的main函数。
其中proj1.cpp是你给源文件起的名字。
2、若选“A"HelloWorld!
"application”项,创建的工程中也含有两个源文件(proj1.cpp和StdAfx.cpp)和一个头文件(StdAfx.h),但proj1.cpp源文件中的main函数有一条输出Hello,World!
字符的printf语句。
其中proj1.cpp是你给源文件起的名字。
3、若选择“AnapplicationthatsupportsMFC”项,创建了支持MFC类库(VisualC++6.0所提供的基础类库)的工程。
MFC类库由微软开发,使用MFC类库可以加快程序开发的速度。
3.编辑源程序
工程建好之后,下一步要做的工作就是在工程中建立一个源程序并编辑它。
选择时“Project”→“AddToProject”→“New”命令,打开新建对话框,在“Files”标签下选择“C++SourceFile”类型,在右边的“File”文本框中填入源程序的文件名,单击“OK”按钮完成源程序的创建。
界面如图2-5所示。
图1-5新建源程序的对话框界面
建立好源程序后会在VisualC++6.0右边的视图区打开并显示该源程序,在这里我们可以键入代码,编辑源程序,如图2-6所示。
图1-6编辑源程序的界面
4.编译、连接、运行程序
源程序编辑完成后,首先选择执行“Build”菜单中的“Compile”项,对源程序进行编译。
若编译中发现错误或警告,将在Output窗口中显示出它们具体的出错或警告信息以及所在的行,可以通过这些信息的提示来修改程序中的错误或警告。
编译通过后,可以选择菜单的第二项Build来进行链接生成可执行程序。
在链接中出现的错误也将显示到Output窗口中。
最后就可以运行程序,选择Execute项,VisualC++6.0将运行已经编好的程序,执行后将出现一个结果界面,如图2-7所示。
其中的“pressanykeytocontinue”是由系统产生的,使得用户可以浏览输出结果,直到按下了任一个键盘按键时再返回到编辑界面。
图1-7程序运行的界面
这些编译、生成、执行这些操作也可以通过单击工具条上的相应的命令按钮来快捷的完成。
另外,如果源程序编辑后没有编译就单击了“执行”按钮,系统会自动的进行编译、连接和执行操作;如果源程序已经编译过了,即上次运行后没有编辑源程序,这时单击“执行”按钮,系统就不再编译和连接而是直接执行上次生成的可执行程序了。
5. 打开已存在的项目文件
可用两种方法打开已存在的项目文件:
(1)选择“File”菜单中的“Openworkspace”命令,然后在弹出的对话框中选择要打开的项目文件。
(2)选择“File”菜单中的“Recentworkspaces”命令,然后再选择相应的项目文件。
特别提醒:
在调试一个应用程序时,VisualC++集成环境一次只能打开一个项目文件。
当一个程序调试完成后,要开始输入另一个程序时,必须先关闭当前的项目文件,然后为新源程序建立一个新的项目文件。
否则将出现不可预测的错误。
关闭当前的项目文件的方法是:
选择“File”菜单中的“Closeworkspace”命令。
6. 退出VisualC++集成环境
选择“File”菜单中的“Exit”命令,可以退出集成环境。
7.程序调试实例
在开发程序的过程中,需要不断地调试自己的程序,或检查错误,或测试程序的稳定性,这就需要借助调试工具来进行。
选择一个好的调试工具并能够熟练地使用它,将会使程序开发变得更加容易,从而大大提高程序开发的效率。
目前有许多调试工具,集成在VisualC++中的调试工具便具有相当强大的功能。
下面以一个例子讲解如何调试程序。
第一步,编写源代码
作为例子,我们编写了一个输出"HelloWorld"的程序。
该程序将连续输出10遍该字符串,并且在每一次输出前首先打印一个序号。
第二步,打开“编译”工具栏
这一步并非是必要的。
如果编译工具栏已经打开,或者您决定通过菜单而不是工具来进行操作,并没有必要打开工具栏。
菜单命令和工具栏快捷按钮一般是可以替代的。
使用鼠标右键单击工具栏的空白处,在弹出的菜单中选中“Build(编译)”一项,就可以打开编译工具栏。
在该工具栏中,我们可以选择"Debug"模式,或者"Release"模式进行编译。
在调试程序的过程中,我们一般选择Debug模式。
第三步,编译
我们可以通过菜单或者工具栏按钮进行编译。
如果使用菜单,可以选择:
Build-->BuildDemoQuestion.exeF7
或者:
Build-->RebuildAll
如果使用工具栏,可以选择如下图中的按钮:
如果编译完全成功,会显示"0error(s),0warning(s)"。
另外,即便有一些warning,也可能编译成功。
Warning表示该代码可能会影响程序运行,虽然可以运行,但有可能存在潜在的问题,编译器不推荐这么写。
第四步,除错
一般情况下,代码在编写过程中必然会发生各种错误。
编译器检查出来的错误会被显示在VC6.0环境的Build窗口。
如下图所示,编译器提示:
在Question.c的第10行,发生了C2065错误,变量j从没有被声明就被使用了。
我们发现上面的错误是因为误把i写成了j,只要改回来,这个错误就被修改好了。
运行程序
单击Build工具栏中的红色感叹号按钮,就可以运行一个编译好的程序:
如果该程序在上一次被编译后又被修改,下面窗口将会弹出,问我们是否要把最新的代码重新编译。
我们一般都选择"Yes"。
随后该程序就会在一个新弹出的窗口中被运行。
调试程序-设置断点
设置断点是跟踪程序实际运行流程的最好方法。
在Debug模式下,程序可以在断点处停止,我们可以让程序单步执行,来确认程序是否在按照我们所预想的方式在运行。
第一步,设置断点
将鼠标停留在要被暂停的那一行,选择工具栏按钮"Insert/RemoveBreakpoint(F9)",就可以添加一个断点。
如果该行已经被设置了断点,那么该断点会被删除。
第二步,开始调试
如下图所示,选择菜单"Go(F5)",就可以开始调试程序。
VC环境会进入调试模式,并且目标程序会在断点处被暂停。
第三步,单步运行
选择菜单或者工具栏的"StepOver(F10)"按钮,可以进行程序单步运行。
不断选择"F10",程序会一步一步地被执行。
调试程序-动态察看变量的值
单步调试程序的过程中,我们可以在Watch窗口中动态地察看变量的值。
第一种,自动查看
在Variables子窗口中会自动显示当前运行上下文中的变量的值。
第二种,添加变量到Watch列表
如果本地变量比较多,自动显示的窗口比较混乱,您可以在Watch列表中添加自己想要监控的变量名。
例如,下图中我们在Watch1子窗口中添加了变量"i":
添加结束后,该变量的值会被显示出来。
并且随着单步调试的进行,我们会看到变量i的值逐渐递增。
结束调试
要结束调试,可以按shift+F5或者选择菜单Debug|StopDebugging。
当结束调试后,所
有调试窗口会自动关闭,Debug菜单也会自动还原为Build菜单。
8.VC最常见的VC++编译和链接错误信息
下面是最常见的编译错误信息,供同学们参考。
1、atalerrorC1010:
unexpectedendoffilewhilelookingforprecompiledheaderdirective。
寻找预编译头文件路径时遇到了不该遇到的文件尾。
(一般是没有#include"stdafx.h")
2、fatalerrorC1083:
Cannotopenincludefile:
'R…….h':
Nosuchfileordirectory
不能打开包含文件“R…….h”:
没有这样的文件或目录。
3、errorC2011:
'C……':
'class'typeredefinition
类“C……”重定义。
4、errorC2018:
unknowncharacter'0xa3'
不认识的字符'0xa3'。
(一般是汉字或中文标点符号)
5、errorC2057:
expectedconstantexpression
希望是常量表达式。
(一般出现在switch语句的case分支中)
6、errorC2065:
'IDD_MYDIALOG':
undeclaredidentifier
“IDD_MYDIALOG”:
未声明过的标识符。
7、errorC2082:
redefinitionofformalparameter'bReset'
函数参数“bReset”在函数体中重定义。
8、errorC2143:
syntaxerror:
missing':
'before'{'
句法错误:
“{”前缺少“;”。
9、errorC2146:
syntaxerror:
missing';'beforeidentifier'dc'
句法错误:
在“dc”前丢了“;”。
10、errorC2196:
casevalue'69'alreadyused
值69已经用过。
(一般出现在switch语句的case分支中)
11、errorC2509:
'OnTimer':
memberfunctionnotdeclaredin'CHelloView'
成员函数“OnTimer”没有在“CHelloView”中声明。
12、errorC2511:
'reset':
overloadedmemberfunction'void(int)'notfoundin'B'
重载的函数“voidreset(int)”在类“B”中找不到。
13、errorC2555:
'B:
:
f1':
overridingvirtualfunctiondiffersfrom'A:
:
f1'onlybyreturntypeorcallingconvention
类B对类A中同名函数f1的重载仅根据返回值或调用约定上的区别。
14、errorC2660:
'SetTimer':
functiondoesnottake2parameters
“SetTimer”函数不传递2个参数。
15、warningC4035:
'f……':
noreturnvalue
“f……”的return语句没有返回值。
16、warningC4553:
'==':
operatorhasnoeffect;didyouintend'='?
没有效果的运算符“==”;是否改为“=”?
17、warningC4700:
localvariable'bReset'usedwithouthavingbeeninitialized
局部变量“bReset”没有初始化就使用。
18、errorC4716:
'CMyApp:
:
InitInstance':
mustreturnavalue
“CMyApp:
:
InitInstance”函数必须返回一个值。
19、LINK:
fatalerrorLNK1168:
cannotopenDebug/P1.exeforwriting
连接错误:
不能打开P1.exe文件,以改写内容。
(一般是P1.Exe还在运行,未关闭)
20、errorLNK2001:
unresolvedexternalsymbol"public:
virtual__thiscallC……:
:
~C……(void)"
连接时发现没有实现的外部符号(变量、函数等)。
21、errorLNK2001:
unresolvedexternalsymbol_main
缺少main函数。
看看main的拼写或大小写是否正确。
22、errorLNK2005:
_mainalreadydefinedinxxxx.obj
直接的原因是该程序中有多个(不止一个)main函数。
这是初学C++的低年级同学在初次编程时经常犯的错误。
这个错误通常不是你在同一个文件中包含有两个main函数,而是在一个project(项目)中包含了多个cpp文件,而每个cpp文件中都有一个main函数。
引发这个错误的过程一般是这样的:
你写完成了一个C++程序的调试,接着你准备写第二个C++文件,于是你可能通过右上角的关闭按钮关闭了当前的cpp文件字窗口(或者没有关闭,这一操作不影响最后的结果),然后通过菜单或工具栏创建了一个新的cpp文件,在这个新窗口中,程序编写完成,编译,然后就发生了以上的错误。
原因是这样的:
你在创建第二个cpp文件时,没有关闭原来的项目,所以你无意中新的cpp文件加入你上一个程序所在的项目。
切换到“FileView”视图,展开“SourceFiles”节点,你就会发现有两个文件。
在编写C++程序时,一定要理解什么是Workspace、什么是Project。
每一个程序都是一个Project(项目),一个Project可以编译为一个应用程序(*.exe),或者一个动态链接库(*.dll)。
通常,每个Project下面可以包含多个.cpp文件,.h文件,以及其他资源文件。
在这些文件中,只能有一个main函数。
初学者在写简单程序时,一个Project中往往只会有一个cpp文件。
Workspace(工作区)是Project的集合。
在调试复杂的程序时,一个Workspace可能包含多个Project,但对于初学者的简单的程序,一个Workspace往往只包含一个Project。
当完成一个程序以后,写另一个程序之前,一定要在“File”菜单中选择“CloseWorkspace”项,已完全关闭前一个项目,才能进行下一个项目。
避免这个错误的另一个方法是每次写完一个C++程序,都把VC6彻底关掉,然后重写打开VC6,写下一个程序。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言程序设计 上机 指导 资料
![提示](https://static.bdocx.com/images/bang_tan.gif)