- C语言程序设计实训教程与水平考试指导
- 肖捷 陈雪芳
- 1472字
- 2025-02-24 09:50:57
1.1 C语言程序的上机步骤
按照C语言语法规则编写的程序称为源程序,由字母、数字及其他符号等构成的字符序列,并保存在扩展名为.c的文件中(注意:C++的源程序文件的扩展名为.cpp)。源程序无法直接被计算机运行,需要把源程序翻译成机器指令,然后才能被计算机运行。
源程序翻译过程由两个步骤实现:编译与连接。编译就是把每一条语句用若干条机器指令来实现,以生成由机器指令组成的目标程序(扩展名为.obj的文件),计算机还不能直接运行目标程序。连接就是把“库函数”的处理过程连接到经编译生成的目标程序中,生成可执行程序(扩展名为.exe的文件),交由计算机运行,最终得到结果。C语言程序的调试、运行步骤可以用图1-1表示。

图1-1 C语言程序的调试、运行步骤
在图1-1中,虚线表示当某一步骤出现错误时的修改路线。无论是出现语法错误、连接错误,还是运行错误,都需要修改源程序,并对它重新编译、连接和运行,直至将程序调试正确为止。
程序中的错误大致可分为3类:语法错误、连接错误和运行错误。
语法错误:也称编译错误,编译程序时检查出来的错误。通常是编程者违反了C语言的语法规则,如保留字输入错误、大括号不匹配、语句少分号等。
连接错误:连接程序时检查出现的错误。一般由于未定义或未指明要连接的函数,或者函数调用不匹配等因素引起,对系统函数的调用必须通过include说明。
对于语法错误和连接错误,C语言系统会提供出错信息,包括出错位置(行号)、出错提示信息。编程者可以根据这些信息,找出相应错误所在。有时系统提示的一大串错误信息,并不表示真的有这么多错误,而是由前面的一两个错误带来的。所以纠正了几个错误后,不妨再编译连接一次,然后根据最新的出错信息继续纠正。对初学者来说,最好的办法是每次只改正第1个错误,再重新编译和连接,根据最新的出错信息继续纠正。
运行错误:也称语义错误或逻辑错误,在执行程序过程中出现了结果错误。有些程序通过了编译连接,并能够在计算机上运行,但得到的结果不正确,这类在程序执行过程中的错误往往最难改正。错误的原因多种多样,可能是程序书写错误产生的,也可能是程序的算法不正确,解题思路不对造成的,这就需要编程者调试程序。
调试程序就是找出错误所在位置并纠正错误的过程。解决运行错误的首要步骤是错误定位,即找到出错的位置,才能予以纠正。通常先设法确定错误的大致位置,然后通过C语言提供的调试工具找出真正的错误。为了确定错误的大致位置,可以先把程序分成几大块,并在每一块的结束位置,手工计算一个或几个阶段性结果,然后用调试方法运行程序,到每一块结束时,检查程序运行的实际结果与手工计算是否一致,通过这些阶段性结果来确定各块是否正确。对于出错的程序块,可逐条仔细检查各语句,找出错误所在。如果出错块程序较长,难以一下子找出错误,可以进一步把该块细分成更小的块,按照上述步骤进一步检查。在确定了大致出错位置后,如果无法直接看出错误,可以通过单步运行相关位置的几条语句,逐条检查,一定能找出错误的语句。
当程序出现计算结果有时正确有时不正确的情况时,其原因一般是算法对各种数据处理情况考虑不全面。解决办法最好多选几组典型的输入数据进行测试,除普通的数据外,还应包含一些边界数据和不正确的数据。比如确定正常的输入数据范围后,分别以最小值、最大值、比最小值小的值和比最大值大的值,多方面运行检查自己的程序。
下面以VC++ 6.0为上机平台,对C程序编译、连接和调试作简单介绍。建议一开始学习上机时,把注意力放在程序的编译、连接和运行,以能运行为目标,而把调试部分放到学习了第5章后再看,只有具有一定的程序语句量,调试才有作用。