C语言程序设计实验指导书(试用版)华中科技大学计算机学院年月编写说明C语言程序设计的上机实验是进一步深刻了解C语言的语法、语义,掌握用C语言进行初步程序设计所需要的方法和技能的一个重要环节。优秀的程序员毫无例外的都是在机器上“摸爬滚打”出来的。C语言的创始人DennisM.Ritchie是如此,C++的创始人BjarneStroustrup也是如此。这些语言大师们都是在机器上使用现行语言遇到巨大障碍的情况下才产生了发明新的计算机语言灵感和动力。DennisM.Ritchi直到上世纪90年代还在它的386机器上编程。因此作为C语言的初学者一定要要重视实验。学习C语言与学习和使用任何一门其它程序设计语言一样。首先要理解程序设计语言的语法和语义;然后通过上机熟悉该语言集成开发环境,掌握编辑、修改、编译、链接、跟踪、调试程序等方面的技巧。最后还要熟悉语言编译系统提供的库函数或类库,以便快速实现程序的设计与开发。上机实验就是学习和掌握上面三个环节的重要途径。“预则立,不预则费”。上机实验前一定要预先编好有关程序,把上机的重点放到程序的编辑、修改、编译、链接、跟踪、调试程序方面来。放到观察程序运行过程中的中间结果和运行完毕后的运行结果方面来。最终使自己的大脑变成一台“计算机”,能够在脑袋中运行自己的程序,判断各种情况下程序的走向等等。从而提高上机的效率和程序设计的准确性。优秀的程序员往往不轻易“出手”,但出手往往令人拍案叫绝!因此,“预”是培养编程者养成一种深思熟虑的好的编程习惯。由于时间仓促,本实验指导书仅仅是试用版,先供大家参考。希望同学们在参考使用过程中多提宝贵意见,以便今后逐步加以完善。实验指导书中实验1由王涛老师编写,实验1由李开老师编写,实验4和实验9由王天江老师编写,实验5和实验8由卢萍老师编写,实验4由王天江老师编写,实验3、实验6、实验7和其余部分由曹计昌老师和研究生张斌、邱鹏、李纯编写。并由曹计昌老师对实验指导书统稿。参编的老师们衷心希望自己的学生将来能够成为编程高手,成为计算机领域的优秀人才!目录实验1TurboC2.0集成开发环境及简单程序设计......................................4实验2基本数据类型和运算程序设计................................................................15实验3C程序流程控制实验.........................................................................................18实验4C函数程序设计...................................................................................................20实验5数组程序设计..................................................................................................21实验6指针程序设计.......................................................................................................22实验7函数、数组、指针及其应用程序设计..................................................26实验8结构与联合程序设计..................................................................................30实验1TurboC2.0集成开发环境及简单程序设计一、实验目的编写简单的C程序(顺序结构的程序),熟悉TurboC2.0集成开发环境,学会在集成开发环境中运行和调试程序的方法。我们将通过一个简单的例子演示操作步骤,有关TurboC2.0开发环境的详细信息请参阅教材的附录D。二、实验任务输入三角形三边a,b,c的值,计算并输出三角形的面积。三角形面积公式为:))()((csbsassareas=(a+b+c)/2(平方根函数的调用形式为sqrt(x),x和函数值均为浮点类型,sqrt所需的系统头文件为math.h。)源程序如下:#includestdio.h#includemath.hmain(){floata,b,c,s,t;scanf(%f%f%f,&a,&b,&c);/*Line8*/s=(a+b+c)/2/*Line9*/t=s*(s-a)*(s-b)*(s-c);/*Line10*/area=sqrt(t);/*Line11*/print(area=%d\n,area);/*Line12*/}三、实验步骤(一)设置编译环境1.创建自己的目录为了避免将不同的人、不同性质和用途的程序混放在一起,每个学生设一个专用的子目录,源程序文件和编译生成的目标文件都可以存放在此子目录中。在本例中创建自己的目录D:\WT2.进入TCTC的执行程序tc.exe本身也是一个DOS程序,如果在Windows中运行tc.exe,则首先转到MS-DOS环境,然后执行下列操作系统命令:cd\tc(将当前目录指定为TC目录,该目录下有tc.exe)c:\tctc(执行tc.exe进入TC)退出TC有两种方式:一种是ALT-X(终止退出),终止退出后必须执行tc.exe才能重新进入TC;另一种是FILE/OSSHELL(驻留退出),驻留退出时用EXIT返回TC(不能用tc.exe)。3.设置目录路径选择Options/Directories,会弹出一个窗口,如图1所示。图1第1行Includedirectories指“包含文件”所在的目录,系统显示出默认的子目录C:\TC\INCLUDE。第2行Librarydirectories指库文件所在的目录,系统显示出默认的子目录C:\TC\LIB。第4行TurboCdirectory指TurboC系统文件所在的目录,系统显示的是安装时的默认目录C:\TC。如果你的“包含文件”、库文件和系统文件存放的目录与缺省路径不相同,就作相应的修改。第3行Outputdirectory指定输出文件(.obj文件和.exe文件)存放的目录,需要用户指定。如果用户不指定,系统就会就会将它保存在当前工作目录中。现在我们想指定输出文件目录为我们自己的目录,在选中第3行Outputdirectory后,按回车键,就会弹出一个“输出文件目录”对话框,在此框内输入D:\WT,见图2,它表示要将.obj文件和.exe文件保持在D:\WT子目录中。图2在进行了以上设置后,还应当把这些信息保存起来。方法是:在上述设置完毕后按Esc键返回Options菜单,然后选择SaveOptions菜单项,将对环境的重新设置保存到配置文件(tcconfig.tc)中。(二)运行程序1.编辑和存盘输入新程序:FILE/NEW,此时光标处于空白的编辑窗口(Edit区)等待用户输入。将本实验中第二部分的源程序照原样输入。保存新文件:FILE/WRITETO,输入带路径的文件名。在本例中输入d:\wt\area.c,将源文件area.c保存到自己的目录d:\wt中,见图3。图3装入已存在的程序(老程序):FILE/LOAD,或F3,此时可输入要装入的源程序文件名(或直接按回车,然后从列表框中选取)。保存老文件:FILE/SAVE,或F2。2.编译、连接和运行2.1编译和连接过程中发现错误在本例中,输入源程序后,按Ctrl+F9键,屏幕上的显示如图4所示。图4从中间的窗口可以看到在编译中发现了2个警告和2个错误。所谓“警告(Warning)”是指较轻微的错误,系统对此能够容忍,仍然把有警告的程序生成目标文件和可执行文件,可以执行程序,但不保证程序的运行结果正确。而“错误(Errors)”是指严重的错误,系统不能容忍任何一个错误,编译系统对有错误的程序不生成目标文件和可执行文件,必须改正后再重新编译和连接。按任何一个键后,中间的编译信息窗口消失,在屏幕下部的Message窗口中,显示了具体的出错信息,见图5。图5该窗口的第1行显示的是编译的文件名。第2行是出错信息,告诉用户在编译的源文件中的第10行出现了一个错误,错误的内容是:Statementmissing;infunctionmain(主函数中的语句漏了一个分号)。从图5可以看到该行是以高亮度显示的。与此相应,在上部Edit窗口中的源程序第10行也是以高亮度显示的,这样便于用户对照检查。我们可以发现是第9行的末尾漏了一个分号,而不是第10行漏了分号。为什么会显示是第10行漏了分号呢?这是由于编译系统在检查第9行时,发现语句末尾没有分号,但这时还不能判定该语句有错,因为C语言允许把一个语句分写在两行上。因此,编译系统接着检查第10行,看第10行的开头有无分号。当发现第10行的开头没有分号时才判定出错,但此时的位置已是第10行了,所以报错的行数为第10行。所以,在看到出错信息时,不能只简单地从系统显示的出错行数去找错,应该连同上下行一起检查。在按回车键后,激活了上面的编辑窗口,光标自动停留在第10行上,以便用户修改,两个窗口中的高亮度显示行已恢复为正常显示。在编辑窗口顶部用红色显示刚才观察的出错信息,以便用户对照检查修改,见图6。图6我们在第9行末尾加上一个分号,然后再分析第2个错误。先按F6键以激活Message窗口,用和键使第2条出错信息用高亮度显示,见图7。图7Message窗口中的第2个出错信息行告诉我们:源程序第11行有错误,错误的内容是:Undefinedsymbol‘area’infunctionmain(符号area在主函数中未被定义)。可以看到编辑窗口中源程序第11行也是以高亮度显示的,经检查发现变量area未定义,应当修改。按回车键,激活编辑窗口,光标停留在第11行上,同时在编辑窗口顶部显示出错信息行。将程序第6行改为:floata,b,c,s,area;作了以上的修改后,再按Ctrl+F9键,屏幕上的显示如图8所示。图8从中间的窗口可以看到在连接中发现了1个错误。按任何一个键后,中间的连接信息窗口消失,在屏幕下部的Message窗口中,显示了具体的出错信息,见图9。图9第3行是出错信息,内容是:Undefinedsymbol‘_print’inmodulearea.c(符号print在area.c文件中未被定义),经检查发现库函数的名字写错了,应当修改。按F6键,激活编辑窗口,将程序第11行的print改为printf。再按Ctrl+F9键,这次程序就可以开始运行了。2.2在TC集成环境中运行在编辑窗口完成一个源程序的编辑后,如果经过检查认为没有问题,就可以直接按Ctrl+F9键。这时TurboC将一次完成从编译、连接到运行的全过程。这是运行TurboC程序最简便常用的方法。如果在编译或连接中有错,就将停下来,显示出错信息,等用户改正后再按Ctrl+F9键重新编译、连接;如不出错,就自动开始运行。程序运行时,如有键盘输入语句,屏幕显示会切换到用户屏,此时用户可从键盘输入数据。在本例中,按Ctrl+F9键以后,屏幕显示切换到用户屏,要求输入数据,用户可从键盘输入:345见图10。图10按回车键后,屏幕的显示又从用户屏切换回TC窗口,因此用户看不到运行结果。如果想看运行结果,可按Alt+F5键,此时屏幕显示切换到用户屏。程序运行的结果显示在用户屏上。用户在看完运行结果后,如想回到编辑窗口继续对源程序进行编辑修改,可按任一键即回到TC窗口。下面把最常用的功能键的有关操作简要列出:Ctrl+F9:编译、连接、运行Alt+F5:观看运行结果按任一键:从用户屏切换回TC窗口2.3在DOS环境