实验一C语言运行环境一、实验目的1.了解TC环境的组成。2.学习TC环境的使用方法。3.了解C语言程序从编辑、编译、连接到运行并得到运行结果的过程。二、实验内容1.了解TC环境的组成。开机后进入WINDOWS系统的资源管理器,找到TC环境所在的文件夹。一般情况下,TC环境都安装在名为TC的子目录下,具体存于硬盘的哪个分区请询问实验室管理员。查看在TC目录下的以字母TC开头的文件,是否包括了TC.EXE、TCC.EXE、TLINK.EXE、TCCONFIG.TC等文件;查看INCLUDE、LIB两个子目录下的文件。复习这些文件的作用。2.进入、退出和定制TC环境。运行TC目录下的TC.EXE文件,就可进入TC环境。在WINDOWS环境下运行文件的方法是用鼠标双击要运行的文件名,或在桌面上双击快捷图标;在DOS环境下进入到TC子目录,用命令方式运行TC.EXE程序。进入TC环境后屏幕上显示出TC环境的主画面。退出TC环境,可在FILE菜单下选择QIUT菜单项,或用热键Alt+X,计算机返回到操作系统的控制下。在程序开发的过程中,有时需要返回到操作系统界面下观察程序的运行情况,但是又要保留运行的TC环境,操作方法是:选择File菜单下的OSshell菜单项返到DOS操作系统界面,用EXIT命令可重新进入TC环境;用Alt+空格键返到WINDOWS界面,TC环境缩小为屏幕下方任务条上的一图标,用鼠标单击该图标重新进入TC环境。注意此时是返到操作系统,TC环境没有真正退出,如果此时再次运行TC.EXE文件,刚才是返到WINDOWS环境时,会重新打开一个TC窗口,返到DOS环境时会给出一个错误提示:Programtoobigtofitinmemory,这是因为DOS操作系统只管理640K的内存,放不下两个TC环境。WINDOWS操作系统对TC环境是作为一个窗口进行管理的,因此WINDOWS窗口的一些属性也是有效的。从TC环境返回WINDOWS系统时会出现一个快捷菜单(在任务条的TC图标上单击鼠标右键也可以出现快捷菜单),选择属性菜单项,屏幕出现一个名为TC属性的窗口,在该窗口里选择屏幕一页,在用法一项里选中屏幕单选钮,单击应用按钮,关闭TC属性的窗口,TC环境以WINDOWS窗口形式出现。在窗口上方出现工具条,可以对窗口进行定制,注意全屏幕和中文两个工具钮的作用。TC环境下的Options菜单下可对TC环境进行设置,初学者要了解Directories的作用,一般不要改变系统的其它设置。关于Directories各项的作用和设置参阅本书关于TC环境的介绍,学会改变输出文件的目录。3.运行演示程序在TC目录下有一个名为BGIDEMO.C的源程序,这本是为TC图形函数提供的演示程序,运行这个演示程序。在File菜单下选Load项,在屏幕出现的LoadFileName窗口里输入BGIDEMO.C,该程序被装入编辑窗口,按Alt+R键,程序被编译、连接并运行。注意运行此程序需要图形库文件,一般被装在TC目录下,没有这个图形库文件就不能运行图形演示程序。4.编写自己的第一个程序按键盘Alt+E键,激活编辑窗口,录入如下C源程序:main(){printf(ThisisaCProgram\n)printf(Iamastudent\n);}按Alt+R键,编译、连接、运行程序。屏幕出现错误提示:statementmissing;infunctionmain通过提示,可以知道上面程序第二行的最后漏敲一个分号,改正后程序运行。按Alt+F5键观察输出结果。按F2键,程序存入硬盘,文件名自定(如:test1)。通过资源管理器观察当前目录下名为test1的几个文件,它们的扩展名分别是什么。改变Options菜单下Directories项下的输出文件目录,用F2键把程序再存一次并运行。在新设定的输出目录下观察名为test1的文件的存储情况。用File菜单下的Writeto项,把文件存在新设定的输出目录处,文件名仍为test1。录入如下程序:main(){printf(ThisisanotherCProgram\n);}按F2键并用test1文件名保存,然后运行这个程序。按Alt+F3键,屏幕出现刚才操作过的几个文件的名字,将刚才设定目录下的test1.c装入编辑器后运行它,我们观察到输出的仍是后来键入的程序的内容。这是因为TC编译系统在接收RUN命令后,对test1.c、test1.obj、test1.exe三个文件的建立时间进行比较,如果扩展名为.c的文件建立时间晚于.exe文件,它就认为源文件进行了修改,所以对源文件重新进行编译连接,如果.exe文件的时间晚于源文件的建立时间,就直接运行这个文件,不再重新编译连接。因为我们两次输入的程序名称都是test1,新设定目录中存放的是第一个程序的test1.c和第二个程序的test1.exe,就出现了现在的情况。5.分别编译、连接、运行程序Run命令是将编译、连接、运行一次完成,实际完成了三件工作,下面分别进行编译、连接和运行。用ALT+C命令打开Compile菜单,并选择Compiletoobject命令编译该源程序文件,然后选择Compile菜单的LinkEXEfile命令调用连接程序连接成可执行文件,最后用Run菜单的Run命令运行程序,用Run菜单的Userscreen命令查看运行结果。由于编译、连接、运行是分别进行的,所以编译系统不再对相关三个文件的建立时间进行比较,我们看到的就是编辑器里当前的程序输出结果。6.编写程序,实现求整数10、20和35的平均值。三、实验要求1.学习TC的基本操作,编写程序。2.运行程序并记录运行结果。3.将源程序、目标文件、可执行文件和实验报告存在服务器的指定文件夹中。实验二数据类型及顺序结构一、实验目的1.进一步熟悉TC环境的使用方法。2.学习C语言赋值语句和基本输入输出函数的使用。3.编写顺序结构程序并运行。4.了解数据类型在程序设计语言中的意义。二、实验内容1.编程序,输出如下图形:****************2.编写程序,实现下面的输出格式和结果(表示空格):a=5,b=7,a-b=-2,a/b=71%c1=COMPUTER,c2=COMP,c3=COMPx=31.19,y=-31.2,z=31.1900s=3.11900e+002,t=-3.12e+0013.编写程序,输入变量x值,输出变量y的值,并分析输出结果。⑴y=2.4*x-1/2⑵y=x%2/5-x⑶y=x10&&x100⑷y=x=10||x=1⑸y=(x-=x*10,x/=10)要求变量x、y是float型。4.调试下列程序,使之能正确输出3个整数之和及3个整数之积。main(){inta,b,c;printf(Pleaseenter3numbers:);scanf(%d,%d,%d,&a,&b,&c);ab=a+b;ac=a*c;printf(a+b+c=%d\n,a+b+c);printf(a*b*c=%d\n,a+c*b);}输入:40,50,60↙5.运行下述程序,分析输出结果。main(){inta=10;longintb=10;floatx=10.0;doubley=10.0;printf(a=%d,b=%ld,x=%f,y=%lf\n,a,b,x,y);printf(a=%ld,b=%d,x=%lf,y=%f\n,a,b,x,y);printf(x=%f,x=%e,x=%g\n,x,x,x);}从此题的输出结果认识各种数据类型在内存的存储方式。三、实验要求1.复习赋值语句和输入输出函数各种格式符的使用。2.复习数据类型和运算符的有关概念。3.编写程序,运行程序并记录运行结果。4.将源程序、目标文件、可执行文件和实验报告存在服务器的指定文件夹中。四、选做题输入圆半径(5)和圆心角(600),输出圆的周长、面积和扇形周长。实验三选择结构程序设计一、实验目的1.正确使用关系表达式和逻辑表达式表达条件。2.学习分支语句if和switch的使用方法。3.进一步熟悉TC集成环境的使用方法,学习TC环境提供的调试工具。二、实验内容1.调试下列程序,使之具有如下功能:输入a、b、c三个整数,求最小值。写出调试过程。main(){inta,b,c;scanf(%d%d%d,a,b,c);if((ab)&&(ac))if(bc)printf(min=%d\n,b);elseprintf(min=%d\n,c);if((ab)&&(ac))printf(min=%d\n,a);}程序中包含有一些错误,按下述步骤进行调试。⑴设置观测变量。按Alt+B键,屏幕弹出Addwatch窗口,在窗口中可输入要观察的变量或表达式,此处输入a,重复以上操作并分别输入b、c,在屏幕下方的message窗口显示变量名a、b、c,且变量名的后面有提示,如a的后面是undefinedsymbol'a',这是因为程序没有运行,变量没有登记,所以TC环境不知道a是什么。⑵单步执行程序。按F8键,屏幕上半部Edit窗口中的程序第一行程序的文字背景色变为兰色,表示此语句将被执行。连续按F8键,兰色条一句句下移。⑶通过单步执行发现程序中的错误。当单步执行到scanf()函数一句时,屏幕自动切换到DOS窗口,等待用户的输入,假定我们输入123,变量a、b、c接受后应在屏幕信息窗口显示出来,但是此时我们看到的却不是我们输入的数据。这时我们就要检查程序。发现在调用scanf()函数中变量名前面没有取地址运算符&。我们输入的数据没有正确存入到变量中。经改正后再单步运行,变量a、b、c的值被正确输入。继续单步执行,程序正确找到最小值并输出。⑷通过充分测试发现程序中的错误。虽然程序可以运行,并不能说程序就是正确的,因为编译系统检查程序没有语法错误就可运行了,但是编译系统不能发现程序中的逻辑错误。一个程序必须通过严格的测试,把可能存在的错误都找出来并改正。关于如何进行程序测试不在本书的讲述范围,此处仅对此例进行测试的一些原则进行介绍。刚才给出的输入是变量a为最小值,且a、b、c都不相等的情况,可能的合理输入还有:a为最小值且a、b、c相等,a为最小值且b、c相等,b为最小值且a、b、c互不相等,b为最小值且a、c相等,等等。严格说,在调试过程中对这些可能的情况都要进行测试,才能保证软件的质量。所以程序的调试、测试是一项非常烦琐的工作,也是非常重要的工作。对于初学者来说应该建立良好的习惯,在调试程序的时候,应该尽可能考虑到程序运行时各种可能,设计相应的用例。我们再次运行程序,输入为2,1,3,程序输出却是min=2。用单步执行的方法,马上发现变量a、b、c的值是不对的,原因是程序要求输入数据的分隔符是(还允许使用回车或Tab键。改正输入后,程序没有输出,还是用单步执行的方法,监视程序的执行过程,发现程序中条件设计有误,经过改正的程序如下:main(){inta,b,c;scanf(%d%d%d,&a,&b,&c);if((ab)&&(ac))printf(min=%d\n,a)elseif((ba)&&(bc))printf(min=%d\n,b);elseif((ca)&&(cb))printf(min=%d\n,c);elseprintf(Nofindminimum\n);}上述程序是按在三个数中仅有一个最小值时才称其为最小值进行设计的。另外,注意程序的书写格式,一定要采用缩进格式,即不同层次(分支)的语句左起的空格不同,这样可以有效地提高程序的可读性。2.编写程序,求解下列分段函数:3.某托儿所收2岁到6岁的孩子,2岁、3岁孩子进小班(Lowerclass);4岁孩子进中班(Middleclass);5岁、6岁孩子进大班(Higherclass)。编写程序(用switch语句),输入孩子年龄,输出年龄及进入的班号。如:输入:3,输出:ag