《C语言程序设计》实验指导书_第1页
《C语言程序设计》实验指导书_第2页
《C语言程序设计》实验指导书_第3页
《C语言程序设计》实验指导书_第4页
《C语言程序设计》实验指导书_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、C/C+程序设计实验指导书2010年6月1日前言学习计算机程序设计的最好方法是上机实践,只有通过足够的上机编程训练才能获得程序设计的技能。为了提高同学们上机实践练习程序设计的效果,我们编写了C+程序设计实验指导书。本实验指导书描述了在Visual C+6.0 开发环境中用C语言开发控制台应用程序(Win32 Console Application)的步骤,并介绍了Visual C+6.0中的调试工具和使用方法。每个实验题目都给出了实验目的、实验基本要求和实验内容。帮助读者掌握C程序设计方法和技巧,进一步加深对C程序设计课程主要内容的理解。目录Visual C+6.0 开发环境使用入门1实验1

2、在屏幕上显示一串字符程序10实验2 编写有字符输入输出函数程序11实验3 输入三个整数,输出其中最大数11实验4 找出素数的程序13实验5 输入一组数找出最大数13实验6 数排序14实验7 编写移动指针和比较指针程序15实验8 用递归方法求斐波纳契级数15实验9 数组名做实参函数调用16实验10 文件读写操作17Visual C+6.0 中的调试工具使用入门18VC+编译、链接常见错误和警告信息中英文对照24Visual C+6.0 开发环境使用入门一、 点击File菜单项,选择New命令新建一个项目(new project), 如图1所示。新建命令图1 文件File菜单中的New新建命令出现

3、图2的新建对话框,在确定了项目名称,项目类型,项目存放位置三个选项后点击OK按钮。这里提供了17个项目类型选项我们选择Win32 Console Application控制台应用类型项目存放位置项目名称图2 Visual C+6.0的新建对话框的项目标签然后出现如图3的对话框,选择An empty project(空项目),点击Finish按钮,图3 控制台应用对话框然后出现如图4的新建项目信息对话框,点击OK按钮完成项目的创建。图4 新建项目信息对话框二、 点击File菜单项,选择New命令,新建一个C源程序文件,(或者编辑一个已有的C源程序文件),出现如下对话框:文件名文件类型图5 新建对

4、话框的文件标签确定文件类型和文件名后,点击OK按钮出现文本编辑窗口,在文本编辑窗口输入源程序,如图6所示。点击此处可以显示文件视图窗口(FileView)这是文件视图窗口(FileView)此为文本编辑窗口图6 文本编辑窗口在文本编辑窗口输入C源程序代码,如图7所示:输入的C源程序代码文件视图窗口分类显示本项目中的文件名图7 C源程序文件的输入和编辑三、 点击Build命令按钮,编译、链接程序Build命令按钮(编译、链接程序)图8 C源程序文件的编译、链接编译、链接完成后,观察编译信息显示窗口出现的提示信息,如果没有出现错误,下一步就试运行程序。编译和链接信息显示窗口图9 编译和链接信息显示

5、窗口四、 如图10,点击Execute Program按钮或者按键盘(Ctrl+F5), 运行程序Execute Program按钮(执行程序按钮)图10 执行程序五、 观察程序的运行结果是否正确。如图11所示,是上例程序的运行结果:按任意键后,该窗口关闭。这是一个控制台应用程序窗口图11 程序运行结果输出窗口实验1 在屏幕上显示一串字符程序1. 实验目的熟悉Visual C+6.0开发环境,学会利用Visual C+6.0 开发环境创建控制台应用程序。学习编写简单的C程序,并掌握C程序的基本格式与规范,理解C程序结构的特点,以及C程序基本输出操作。学习并实践创建、编译和运行简单的C程序。2.

6、 实验要求编写、调式程序,实现在屏幕上输出一字符串3. 实验内容(1) 熟悉VC+6.0开发环境(2) 创建工程(3) 编写程序,在程序中printf()函数进行输出。(4) 编译和调试程序,如有错误,则进行修改,直到排除所有错误。(5) 运行程序实验2 编写有字符输入输出函数程序1. 实验目的熟悉和掌握常量和变量的使用,以及字符输入、输出函数的使用2. 实验要求编写、调式程序,实现字符的输入、输出。3. 实验内容(1) 定义字符变量(2) 使用getchar()得到字符并赋值给字符变量(3) 使用putchar()函数输出字符变量值(4) 编译和调试程序,如有错误,则进行修改,直到排除所有错

7、误。(5) 编程比较getchar()、getche()、getch()、putchar()putche()、putch()函数之间的区别实验3 输入三个整数,输出其中最大数1. 实验目的熟悉和掌握运用分支结构进行程序设计。2. 实验要求编写、调式程序,实现题目功能。3. 实验内容(1) 画出程序流程图(2) 使用if语句编写程序,(3) 编译程序,如有错误,则进行修改,直到排除所有错误。实验4 找出素数的程序1. 实验目的熟悉和掌握运用循环语句进行程序设计。2. 实验要求编写、调式程序,找出100以内的素数。3. 实验内容(1) 使用二重for语句编写程序。(2) 编译和调试程序,如有错误,

8、则进行修改,直到排除所有错误。(3) 运行程序,获得正确的结果实验5 输入一组数找出最大数1. 实验目的熟悉和掌握运用数组的基本概念,并进行较简单的程序设计。2. 实验要求编写、调式程序,找出10数中的最大值。3. 实验内容(1) 定义数组(2) 使用for语句对数组进行初始化(3) 输出数组中的值(4) 使用for语句实现求最大值算法(5) 编译和调试程序,如有错误,则进行修改,直到排除所有错误。(4) 运行程序,获得正确的结果实验6 数排序1. 实验目的熟悉和掌握运用数组进行较复杂程序设计。2. 实验要求编写、调式程序,找出10数中的最大值。3. 实验内容(1) 定义数组下标变量(2) 定

9、义数组(3) 使用for语句对数组进行初始化(4) 输出数组中的值(5) 设计排序算法(6) 使用for语句实现数组值的排序(7) 编译和调试程序,如有错误,则进行修改,直到排除所有错误。(8) 运行程序,获得正确的结果实验7 编写移动指针和比较指针程序1. 实验目的熟悉和掌握指针的基本概念,并进行简单的指针程序设计。2. 实验要求编写、调式程序,进行指针移动和比较。3. 实验内容(1) 定义一个数组和两个指针变量(2) 使用数组的两个地址分别赋值给两个指针变量(3) 修改指针变量的值,使指针移动(4) 对两个指针变量进行比较,输出其较大者。实验8 用递归方法求斐波纳契级数1. 实验目的熟悉和

10、掌握函数的定义和调用,并了解递归函数的编程方法。 2. 实验要求编写、调式程序并能正确运行。3. 实验内容(1) 写出斐波纳契级数公式为:f(n)=f(n-1)+f(n-2),其中f(1)=1和f(2)=1。(2) 编写斐波纳契级数的递归函数(3) 编写main()函数,并调用递归函数(4) 输出斐波纳契级数的第5项(5) 编译程序,如有错误,则进行修改,直到排除所有错误。实验9 数组名做实参函数调用1. 实验目的熟悉和掌握函数的参数传递,特别是数组作为实参。2. 实验要求编写、调式程序并能正确运行。3. 实验内容(1) 编写一个带两个形参的函数,其中一个参数是指针p,另一个参数是整型n(2)

11、 其函数实现得到n个数中的最大值(3) 编写main()函数(4) 在main()函数中定义一个数组(5) 调用已编写的函数,把数组名传递给p,把数组长度传递给n(6) 编译程序,如有错误,则进行修改,直到排除所有错误。实验10 文件读写操作1. 实验目的熟悉和掌握文件的基本概念和文件的基本读写方法。2. 实验要求编写、调式程序并能正确运行。3. 实验内容(1) 在文件夹中新建一个文件(2) 定义字符串数组a和b,以及一个文件指针fp,并为a赋初值(3) 打开一个文件,(4) 把字符串数组值写到文件中(5) 打开上述文件(6) 读出文件的内容到数组b(7) 在屏幕上显示数组b的字符串(8) 编

12、译程序,如有错误,则进行修改,直到排除所有错误。Visual C+6.0 中的调试工具使用入门一、程序开发过程中出现的错误类型我们在进行程序设计时,不可避免地会犯错误。程序中的错误可以分为三类:编译错误、运行时错误和逻辑错误。编译错误(Compile errors)又称为编译时错误(Compiling-time errors): 是由于错误的编码产生的。例如关键字拼写错误、将中文标点符号当成英文符号使用、遗漏了某些必要的标点符号或者使用了一个没有定义的标识符。编译错误一般都是语法错误,当编译器对程序进行语法检查时,都能发现这些错误,并能够指出产生错误的位置(标出行号)。我们可以根据编译出错信息

13、指出的行号找到对应的源代码行改正错误,重新编译源程序。只有当所有的编译错误被改正后,才能通过编译检查,产生目标代码文件。改正编译错误的关键是要能正确理解编译器给出的编译错误信息。VC+环境中的编译、链接错误信息是用英文表示的。对于英文基础薄弱的读者,可以参考本实验指导书后面的“VC+编译、链接常见错误和警告信息中英文对照”。通常情况下,一个语法错误可能产生多条编译错误信息,这是由于株连错误造成的,建议读者在处理编译错误时,找到第一个出现错误的位置改正后重新编译。这样能够避免被株连错误迷惑。值得指出的是,现在大部分编译器对错误的定位不精确,如果在编译器指出的行没有发现错误,应该向前查找错误。例如

14、,当提示第10行发生错误时,如果在第10行没有发现错误,请从第10行开始往前查找错误并修改之。运行时错误(Run-time errors)是在程序的运行阶段出现的,当运行环境检测到程序的某些操作无法执行,例如除数为零时,就会出现运行时错误。当运行环境检测到程序的某些操作是被禁止的,也会产生运行时错误。例如,访问数组时超越数组的边界,空指针引用(NULL pointer assignment,空指针赋值,即有指针未赋具体地址就使用了)等等。逻辑错误(Logic errors):当程序没有按照程序员的意图执行时,就表明程序中存在逻辑错误。一个应用程序可能既没有语法错误,运行时也没有执行任何无效的操

15、作,但是有可能产生错误的结果,这种错误结果一般都是程序内部的逻辑错误造成的。只有通过测试应用程序并分析它产生的结果,我们才能核实应用程序是否正确地执行了。当然,如果输入了错误的或者无效的数据,执行程序后肯定也得不到正确的结果。软件行业中有一句名言“输入的是垃圾,输出也是垃圾。(Garbage in, garbage out.)”因此,一般的实用程序还需要对输入数据的正确性和有效性进行检验。很显然,必须找出并改正程序中的错误,才能得到正确的执行结果。对于语法错误,我们可以根据编译错误信息指出的位置和错误原因来改正错误。请记住:编译器不能发现程序中的逻辑错误和运行时错误。我们可以通过仔细阅读源程序

16、来发现逻辑错误,还可以借助开发环境中提供的调试工具来查找程序中的逻辑错误和运行时错误。所谓调试(debug)就是定位程序中的错误并改正错误的过程。为了帮助程序员找出并改正程序中的错误,微软公司在Visual C+6.0环境中集成了调试器(debugger), 调试器就是调试工具(debugging tools)。下面我们将介绍Visual C+6.0中的调试工具及其使用方法。二、Visual C+6.0 中的调试工具简介Visual C+6.0环境中的调试工具功能十分强大,既可以支持C+语言源代码级的调试,也可以支持汇编语言级和机器语言级的调试。我们在此仅介绍C+语言源代码级的调试。Visua

17、l C+6.0中的调试器允许我们在程序中设置断点(breakpoint),单步运行程序(step),运行到光标处(run to cursor),监视(watch)变量值等等。断点是我们通过调试器在源程序中设置的一个位置。当运行到断点时,程序中断执行,这样我们可以观察断点处各个相关变量的值,通过变量的值分析、判断到断点处时程序的执行是否符合我们的期望。断点是最常用、最基本的技巧。在Visual C+6.0中设置断点的最简单方法就是通过点击Build工具条上的插入断点按钮(手掌形状按钮)或者按键盘上的功能键F9。如图13所示,按功能键F9也能在当前行插入断点小红点表示断点插入/移去断点按钮图13

18、在源程序中设置断点开始调试程序按钮图14 开始调试程序一次可以设置多个断点,设置了断点之后,就可以通过点击Build工具条上的开始调试程序按钮或者按键盘上的功能键F5开始调试程序。如图14所示,在断点暂停处可以通过Watch(监视)窗口观察有关变量的值程序运行至断点处暂停图15 程序运行至断点处暂停当程序运行至断点处会暂停,我们可以在断点暂停处通过Watch窗口观察有关变量的值,如图15所示。如果Watch窗口没有显示我们所关心的变量,可以自行添加。另外还有一个更简单的观看变量的值方法:当程序运行到断点时,把鼠标光标移动到源程序中的某个变量上,停留一秒钟就可以看到这个变量的值。移去断点:把键盘

19、光标(插入符)移动到断点所在的行,再次按功能键F9就可以移去断点。也可以通过点击Build工具条上的插入/移去断点按钮(手掌形状按钮)取消断点。单步运行程序就是每一次只执行一条语句就暂停。Visual C+6.0中的调试工具提供三种单步运行方式:Step Into, Step Over, Step Out,如图16所示。Step Into命令的快捷键是功能键F11,Step Over命令的快捷键是功能键F10,Step Out命令的快捷键是功能键Shift+F9。Run to Cursor(运行到光标处)命令的快捷键是功能键Ctrl+F10。运行到光标处从当前函数调用中出来单步运行,不进入函数

20、内部单步运行,可以进入函数内部图16 单步运行每次单步运行一条语句后,都可以通过Watch(监视)窗口观察有关变量的值,或者将鼠标光标移动到源程序中的某个需要观察的变量上,停留一秒钟就可以看到这个变量的值,如图17所示。如果我们确认当前函数中没有错误时,可以使用Step Out命令快速地执行完毕当前的函数,暂停在该函数调用的下一条语句上。如果我们确认某一段源代码中没有错误时,可以将键盘光标(插入符)放置在这段代码的末尾处,使用Run to Cursor(运行到光标处)命令快速地执行完毕这一段代码,暂停在光标所在语句上。例如我们可以将键盘光标移动到main函数的结尾处,然后按功能键Ctrl+F1

21、0执行Run to Cursor命令。这样程序将运行到结束处停止。将鼠标光标停留在变量上一秒钟,就可以看到这个变量的值单步运行后,可以通过Watch (监视)窗口观察有关变量的值图17 单步运行后观察相关变量的值需要停止调试程序时,可以执行Stop Debugging(停止调试)命令,如图18所示。Stop Debugging命令的快捷键是功能键Shift+F5,Restart(重新开始调试程序)命令的快捷键是功能键Ctrl+Shift+F5。Go(开始调试程序)命令的快捷键是功能键F5。Go命令还可以使程序从当前语句运行到下一个断点处,如果后面没有断点,就运行到到程序的结尾。除了使用快捷键和

22、Debug(调试)菜单执行调试命令,还可以使用Debug工具条,如图19所示。使用工具条上的QuickWatch可以添加要观察的变量或者表达式。工具条上还有一些其他工具可以帮助我们查看CPU内部的寄存器(Registers)、内存单元(Memory)和堆栈(Stack)的情况。Visual C+6.0中的调试工具功能强大,在这里我们只介绍最基本的操作。当读者积累了一定的调试经验后可以继续学习调试工具的高级使用方法。最后要强调一点,当程序员对程序进行调试时,一定要理解程序的算法,熟悉程序的结构和流程,准确估计变量和表达式的期望值。这样才能做出正确的分析和判断。调试的过程实质上是一个思考的过程。开

23、始调试程序命令停止调试命令重新开始调试程序命令图18 停止调试命令等QuickWatch按钮调试工具条图19 调试工具条VC+编译、链接常见错误和警告信息中英文对照1、fatal error C1010: unexpected end of file while looking for precompiled header directive。寻找预编译头文件路径时遇到了不该遇到的文件尾。(一般是没有#include stdafx.h) 2、fatal error C1083: Cannot open include file: R.h: No such file or directory不能

24、打开包含文件“R.h”:没有这样的文件或目录。3、error C2011: C: class type redefinition类“C”重复定义。4、error C2018: unknown character 0xa3不认识的字符0xa3。(一般是汉字或中文标点符号)5、error C2057: expected constant expression希望是常量表达式。(一般出现在switch语句的case分支中)6、error C2065: IDD_MYDIALOG : undeclared identifier“IDD_MYDIALOG”:未声明过的标识符。7、error C2082:

25、redefinition of formal parameter bReset函数参数“bReset”在函数体中重定义。8、error C2143: syntax error: missing : before 句法错误:“”前缺少“:”。9、error C2146: syntax error : missing ; before identifier dc句法错误:在“dc”前丢了“;”。10、error C2196: case value 69 already used值69已经用过。(一般出现在switch语句的case分支中)11、error C2509: OnTimer : member function not declared in CHelloView成员函数“OnTimer”没有在“CHelloView”中声明。12、error C2511: reset: overloaded member function void (int) not found in B重载的函数

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论