《C程序设计基础》实验指导实验1C程序的设计环境和运行方法【实验目的】1.熟悉所用计算机系统的基本操作方法。2.学习TurboC2.0的使用方法,掌握程序编辑、编译、连接、运行及查看运行结果的方法。3.掌握C程序的基本结构。【实验内容】1.熟悉使用的计算机系统的基本操作,创建自己的工作目录,参照附录中介绍的方法,掌握TurboC2.0的启动方法(一种或多种),了解TurboC2.0系统的安装路径和结构。2.进入TurboC2.0的工作环境,参照附录设置环境,用File/Changedir…设置当前工作目录、用Options/Directories设置系统的安装路径、包含文件路径、标准库文件路径、输出文件路径和源文件路径。3.熟悉TurboC2.0的系统菜单组成及功能。学习使用功能键和快捷键调用菜单项的方法。掌握文件建立、编辑、修改和保存的方法。落实文件的存储位置是否是你的工作目录,如果不是,回第二步重新设置。了解编译、连接和运行命令在屏幕菜单项的位置和调用方法。4.输入并运行下面最简单的C程序①使用File菜单的New命令创建一个新文件。②在编辑区输入下面程序:#includestdio.hmian(){printf(HelloWorld!\n)}③按功能键F9进行编译和连接,观察屏幕显示的编译信息。如果出现出错信息,信息窗口中将显示错误内容及定位错误时的语句行号,修改错误,再进行编译。④如果编译无错,按Ctrl+F9运行程序,按Alt+F5切换到用户屏,观察运行结果。⑤改变源程序中双引号内的字符串内容,重新编译和连接,并查看运行结果。⑥保存文件,查看你的工作目录下是否有该文件。编译连接的中间文件应该在Output设置的目录中。如果没有设置Output目录,中间文件应该在当前工作目录中。5.输入并运行下面一个需要在运行时输入数据的程序,程序要求从键盘输入三个浮点数,输出它们的和。#includestdio.hmian(){floata,b,c,sum;printf(inputa,b,c:)scanf(%f%f%f,&a,&b,&c);sum=a+b+c;printf(\nsum=%f\n,sum);}①输入该程序,然后进行编译和连接,如果出错,仔细检查并修改错误,再进行编译连接,直到没有错误为止。②按Ctrl+F9运行程序,按照屏幕提示输入a、b、c三个变量的值,变量值之间用空格分隔,输入完毕按回车键【Enter】。③查看运行结果,判断结果正确与否。④保存文件,查看你的工作目录下是否有该文件。实验2数据类型和表达式计算【实验目的】1.掌握C语言基本数据类型的概念,理解数据类型与运算的关系。2.熟悉简单变量的定义和赋值方法,掌握不同类型数据之间赋值的规律。3.学习C语言运算符优先级和结合性的概念,掌握算术表达式的计算方法及表达式计算中的类型转换方法。4.掌握数学表达式的程序表示方法。5.进一步熟悉C程序的编辑、编译、连接和运行的过程。【实验内容】1.编程计算下面数学表达式的值(1)54241200(2)c×ba22(3)lnln(103.5+2)2.下面表达式计算中,哪些地方会发生类型转换?各个转换从什么类型转换到什么类型?表达式计算的结果是什么?试编程进行验证。(1)2.5+2*7%2/4(2)4*(2L+6.5)-12(3)10/(5*3)(4)2*10.0/(5*3)3.设:x=2.7,a=8,y=4.5,编程计算下面表达式的值:y+a%5*(int)(x+y)/2%44.输入并运行下面程序,对照程序分析运行结果:(1)将一个大于32767的长整型数赋给整型变量,会得到什么结果。(2)将一个负整数赋给一个无符号的变量,会得到什么结果。(3)将一个字符型变量赋给一个整型变量,会得到什么结果。程序如下:#includestdio.hmain(){inta,b;longd,e;unsignedf,g;charc;a=100;b=-100;c='a';d=50000;e=32767;printf(%d,%d\n,a,b);printf(%ld,%ld\n,d,e);printf(%c,%d\n,c,c);f=a;g=b;printf(%u,%u\n,f,g);a=c;printf(%d,%d\n,a,c);a=d;b=e;printf(%d,%d\n,a,b);}实验3顺序结构程序设计【实验目的】1.熟练掌握格式输入与格式输出函数的使用,理解scanf函数的工作过程。2.熟练掌握赋值语句的使用方法。3.进一步体会C程序的结构组成,体会主函数main的作用。4.使用顺序结构解决几个简单的计算问题。【实验内容】1.编写程序,使用格式输入函数,从键盘按顺序输入下列数据,再将其用合适的格式分类输出到屏幕上。注意scanf函数的格式要求。‘a’、15、‘c’、100、20.6、60000、3500、32768、450.34、126.34555682.编程计算半径r=2.5的圆面积、圆周长、球面积、球体积及球表面积。如果高h=4.5,计算圆柱体的表面积和体积。显示结果保留两位小数。3.输入下面程序并运行#includestdio.hmain(){inta,b,c;a=getchar();b=getchar();c=getchar();printf(a=%db=%dc=%d\n,a,b,c);printf(a=%cb=%cc=%c\n,a,b,c);}输入:1【Enter】ab【Enter】分析本题程序的输出结果,解释scanf函数的工作过程,试用其他输入数据验证你的分析结果。4.以下C程序的功能是:从键盘依次输入4个整数,计算并输出这4个数的平均值。#includestdio.hmain(){inta,b,c,d,av;printf(Inputa,b,c,d:);scanf(%d,%d,%d,%d,&a,&b,&c,&d);av=(a+b+c+d)/4;printf(av=%f\n,av);}观察运行结果,想一想为什么,将最后一句中的“%f”改为“%d”,观察结果有什么变化,如果想使计算结果为实数,如何修改程序?如果想计算4个实数的平均数,如何修改程序?实验4选择结构程序设计【实验目的】1.理解C语言表示逻辑量的方法,学会正确使用逻辑运算符和逻辑表达式。2.掌握利用if结构实现选择结构的方法。3.掌握利用switch结构实现多分支选择结构。4.掌握若干简单算法。5.学习选择结构程序的调试。【实验内容】1.编写程序计算下面分段函数的值:2x+5(x0)f(x)=x2-x+3(0≤x10)x3-7x(x≥10)具体要求如下:(1)用if语句实现分支,自变量和函数值均用双精度类型。(2)自变量用scanf函数输入,给一些输入提示。(3)分别输入三种区间中x的值,检查输出函数值是否正确。2.编写程序,用scanf函数输入一个年份,计算该年2月份有多少天。闰年的条件为:年份能被4整除但不能被100整除,或者年份能被400整除。3.下面的程序,按颜色代码和颜色名称的对应关系,根据输入的颜色号,输出对应的颜色名称:0--Black,1--Blue,2--Green,3--Red,4--Yellow#includestdio.hmain(){intcolor;/*用整型数表示颜色号*/printf(Entercolornumber:);scanf(%d,&color);switch(color){case0:printf(Black\n);break;case1:printf(Blue\n);break;case2:printf(Green\n);break;case3:printf(Red\n);break;case4:printf(Yellow\n);break;default:printf(ErrorInput\n);}运行程序,使用TurboC中跟踪执行功能(功能键F8)查看程序执行过程。体会break语句的作用。去掉若干个break语句,观察运行结果有什么变化。并试着将程序结构改为嵌套if结构。运行并查看结果。4.scanf函数输入一个百分制成绩,输出成绩等级A、B、C、D、E,其中90~100分为A,80~89分为B,70~79分为C,60~69分为D,60分以下分为E。要求百分制成绩用整数输入,在输入前要有提示,输入后要判断成绩的合理性,对不合理的成绩,应输出出错信息。输出结果中应包括百分制和等级成绩,并要有文字说明。使用if语句和switch语句分别实现。实验5循环结构程序设计【实验目的】1.练习并掌握利用while语句、for语句、do_while语句实现循环结构的方法。2.掌握循环结构和选择结构的嵌套设计方法。3.掌握多重循环的设计方法,掌握控制语句break、continue、goto语句的使用方法。4.调试和修改循环结构的程序。【实验内容】1.编写程序,分别用while循环、for循环和do_while循环计算12+22+...+n2的值。比较三个程序在循环控制上的特点。2.用迭代法求方程x3-x-1=0在x=1.5附近的根。要求:首先把方程变换为迭代公式:x=31x,用1.5作迭代的初值,结束条件为两次近似解之差的绝对值小于0.0001。参考程序如下:#includestdio.h#includemath.hmain(){floatx1,x=1.5;do{x1=x;x=pow((x+1),1.0/3.0);}while(fabs(x-x1)=0.0001);printf(x=%6.2f\n,x);}3.编写程序,计算菲波那契数列第n项的值。注意数列项的数据类型,应考虑足够大项的数据表示要求。4.以下程序,输出下三角形状的乘法九九表。#includestdio.hmain(){inti,j;for(i=1;i=9;i++)/*打印表头*/printf(%4d,i);printf(%c,'\n');for(i=0;i=50;i++)printf(%c,'_');printf(%c,'\n');for(i=1;i=9;i++)/*循环体执行一次,打印一行*/{for(j=1;j=i;j++)printf(%4d,i*j);/*循环体执行一次,打印一个数据*/printf(%c,'\n');/*每行尾换行*/}printf(%c,'\n');}输入并执行该程序,观察输出结果,试着修改程序打印上三角形状的乘法九九表。实验6模块化程序设计【实验目的】1.掌握C语言中定义函数的方法2.掌握函数嵌套调用和递归调用的方法。3.掌握通过“值传递”调用函数的方法。4.理解变量作用域和存在期的概念,掌握全局变量和局部变量,动态变量和静态变量的定义、说明和使用方法。5.学习多文件程序的组织方法【实验内容】1.编写程序,设计一个判别素数的函数,在主函数中输入一个整数,调用这个判别函数,并输出是否为素数的信息。参考例4.7相应程序,准备5个以上测试数据。验证程序执行结果是否正确。2.编写程序,计算下面公式并输出结果。!)!(!mmnnCmn要求:(1)编写一个函数计算n!(2)编写主函数,由键盘输入n和m,调用(1)中的函数完成计算。(3)输入n和m要给出提示,并检查n和m的合理性,不合理的输入应输出错误信息,并不再进行计算。(4)运行程序并计算C58、C27、C18、C77、C08。3.将一个正整数n以相反的顺序输出的递归算法可以如下描述:如果要输出的整数只有一位则输出该整数否则输出整数的个位数字反向输出除个位以外的全部数字结束据此算法设计的递归算法如下:voidprintn(intn){if((n=0)&&(n=9))printf(%d,n);else{printf(%d,n%10);printn(n/10);}}请编写主程序,调用上述算法,反向输出正整数n。如输入123,则输出321。4.按步骤完成多文件程序的设计过程,掌握多文件程序的设计方法。(1)输入源文件file1.