1、C程序设计实验指导书C语言程序设计实 验 指 导 书班级: 学号: 姓名: 实验一 Turbo C的使用一、目的和要求1、熟悉所用计算机系统的基本操作方法。2、 掌握语言程序的书写格式和语言程序的结构。3、 学习Turbo C 2.0的使用方法,掌握程序编辑、编译、连接、运行及查看运行结果的方法。4、 要求同学必须在上机前将程序编好(写在草纸上,调试后写在下面)二、实验内容1、熟悉使用的计算机系统的基本操作,创建自己的工作目录,掌握Turbo C 2.0的启动方法1)单击开始运行输入COMMAND按ENTER键2)进入TURBOC所在目录3)输入TC后回车,进入TC环境 2、熟悉Turbo C
2、 2.0的系统菜单组成及功能。学习使用功能键和快捷键调用菜单项的方法。掌握文件建立、编辑、修改和保存的方法。落实文件的存储位置是否是你的工作目录,如果不是,回第二步重新设置。了解编译、连接和运行命令在屏幕菜单项的位置和调用方法。按F10进入菜单选择File 处理文件(包括装入、存盘、选择、建立、换名写盘),目录操作(包括列表、改变工作目录),退出系统及调用DOS 。Edit 建立、编辑源文件。Run 控制运行程序。如果程序已经编译连接好,且Debug/Source Debugging以及Option/Compiler/Code generation/OBJ Debug Information开
3、关置为On,则可以用此菜单初始化调试阶段。Compile 编译并生成目标程序与可执行文件。Options 可以选择集成环境任选项(如存储模式、编译时的任选项、诊断及连接任选项)及定义宏;也可以记录Include Output及Library文件目录,保存编译任选项和从配置文件加载任选。Break/Watch 增加、删除、编辑监视表达式,及设置、清除、执行至断点。特别要指出的是,除了Edit项外,每一个菜单又有对应的子菜单。而选择Edit项目后,只是进入编辑器。为了从主菜单中选择所需要的功能,可以用以下两种方式之一:(1)按F10键后,可以看到屏幕上部主菜单中有反白显示,此时,利用左、右光标移动
4、键(与)选择需要的菜单,然后按回车(Enter)键。(2)直接按Alt+主菜单条目中的首字母(分别为F,E,R,C,P,O,D,B),此时就会出现相应的子菜单。例如,按Alt+F表示选择文件子菜单(File)。当出现子菜单时,其中某个条目是高亮度的,此时可以利用上、下光标移动键(与)来移动该高亮度线,从而选择所需要的功能。在菜单调用时,按Esc键后将直接返回到活动窗口。3、输入并运行下面最简单的C程序使用File菜单的New命令创建一个新文件。在编辑区输入下面程序: #include mian() printf( Hello World!n) 按功能键F9进行编译和连接,观察屏幕显示的编译信息
5、。如果出现出错信息,信息窗口中将显示错误内容及定位错误时的语句行号,修改错误,再进行编译。如果编译无错,按Ctrl+F9运行程序,按Alt+F5切换到用户屏,观察运行结果。改变源程序中双引号内的字符串内容,重新编译和连接,并查看运行结果。保存文件,查看你的工作目录下是否有该文件。编译连接的中间文件应该在Output设置的目录中。如果没有设置Output目录,中间文件应该在当前工作目录中。4、输入并运行下面一个需要在运行时输入数据的程序,程序要求从键盘输入三个浮点数,输出它们的和。 #include mian() float a,b,c,sum; printf( input a,b,c: ) s
6、canf(%f %f %f,&a,&b,&c); sum=a+b+c; printf(n sum=%fn,sum); 输入该程序,然后进行编译和连接,如果出错,仔细检查并修改错误,再进行编译连接,直到没有错误为止。按Ctrl+F9运行程序,按照屏幕提示输入a、b、c三个变量的值,变量值之间用空格分隔,输入完毕按回车键【Enter】。查看运行结果,判断结果正确与否。保存文件,查看你的工作目录下是否有该文件。5、指出下列程序中的错误,并编译,查看给的出错信息,并改正错误,运行程序给出结果。1)#include “stdio.h”main(); / *main function * /float r
7、,s; /*/*r is radius*/,/*s is area of circular*/*/r=5.0 ;s=3.1419*r*r;printf(“%fn”,s)2)#include “stdio.h”main /*main function */float a,b,c,v; /*a,b,c are sides,v is volume of cube */a=2.0; b=3.0; c=4.0;v=a*b*c;printf(“%fn”,v)三、分析与讨论1记下在调试过程中所发现的错误、系统给出的出错信息和对策。分析讨论对策成功或失败的原因。2 总结程序的结构和书写规则。3 实验中遇到的问
8、题与解决的办法实验二 表达式与输出函数 一、目的和要求1掌握C语言基本数据类型的概念,理解数据类型与运算的关系。2熟悉简单变量的定义和赋值方法,掌握不同类型数据之间赋值的规律。3学习C语言运算符优先级和结合性的概念,掌握算术表达式的计算方法及表达式计算中的类型转换方法。4掌握数学表达式的程序表示方法。5掌握printf()函数的使用6进一步熟悉C程序的编辑、编译、连接和运行的过程。二、实验内容1输入下面程序并运行#include main() int a,b,c; a=getchar(); b=getchar(); c=getchar(); printf(a=%d b=%d c=%dn,a,b
9、,c); printf(a=%c b=%c c=%cn,a,b,c);输入: 1【Enter】 ab【Enter】分析本题程序的输出结果,解释scanf函数的工作过程,试用其他输入数据验证你的分析结果。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)
10、 将一个大于32767的长整型数赋给整型变量,会得到什么结果。(2) 将一个负整数赋给一个无符号的变量,会得到什么结果。(3) 将一个字符型变量赋给一个整型变量,会得到什么结果。程序如下:#include main() int a,b; long d,e; unsigned f,g; a=100; b=-100; d=50000; e=32767; printf(%d,%dn,a,b); printf(%ld,%ldn,d,e); f=a; g=b; printf(%u,%un,f,g); a=c; printf(%dn,a); a=d; b=e; printf(%d,%dn,a,b);5分析
11、下程序,写出运行结果,再输入计算机运行,将得到的结果与你分析得到的结果比较对照。main() int i , j , m , n ;i=8; j=10;m=+i; n=j+;printf(“%d,%d,%d,%d”,i,j,m,n);分别作以下改动之后,先分析再运行:1)将第四行改为:m=i+; n= + j;2)程序改为:main() int i , j ;i=8; j=10;printf(“%d,%d”, i+, j+);3)在2)的基础上,将printf语句改为:printf(“%d,%d”, + i, + j );4)再将printf语句改为:printf(“%d,%d,%d,%d”,
12、i,j,i+,j+);5)程序改为:main()int i , j , m=0 , n=0 ;i=8; j=10;m+= i +; n -= -j;printf(“i=%d,j=%d,m=%d,n=%d”,i,j,m,n);6求下面算术表达式的值。(1)x+a%3*(int)(x+y)%2/4设x=2.5,a=7,y=4.7(2)(float)(a+b)/2+(int)x%(int)y设a=2,b=3,x=3.5,y=2.5先自己分析,再试着用程序求解,看得到的结果是否一致。7写出下面表达式运算后a的值,设原来a=10。设a和n已定义成整型变量。(1)a+=a (2)a-=2(3)a*=2+3
13、 (4)a/=a+a(5)a%=(n%=2),n的值等于5 (6)a+=a-=a*=a先自己分析,再试着用程序求解,看得到的结果是否一致。8输入x,y,编写程序求z=x+|y|的值。实验步骤与要求:(1)程序中用scanf函数输入x和y的值,请分析以下两个语句scanf(“%f%f”,x,y);scanf(“%f%f”,&x,&y);哪一个是正确的,分别运行之,分析程序运行结果。如果scanf函数改为scanf(“%f,%f”,&x,&y);应该怎样输入数据。9编写程序,使用格式输入函数,从键盘按顺序输入下列数据,再将其用合适的格式分类输出到屏幕上。注意scanf函数的格式要求。a、15、c、
14、100、20.6、60000、3500、32768、450.34、126.345556810输入并编辑下面的程序main()int a,b;float c,d;long e,f;unsigned int u,v;char c1,c2;scanf(“%d,%d”,a,b);scanf(“%f,%f”,c,d);scanf(“%ld,%ld”,e,f);scanf(“%o,%o”,u,v);scanf(“%c,%c”,c1,c2);printf(“n”);printf(“a=%7d,b=%7dn”,&a,&b);printf(“c=%10.2f,d=%10.2fn”,&c,&d);printf(“
15、e=17ld,f=%17ldn”,&e,&f);printf(“u=%o,d=%on”,&u,&v);printf(“c1=%c,d=%cn”,&c1,&c2);这个程序有语法错误吗?为什么?(1)调试上述程序无语法错误后,用下面的测试数据,对程序进行测试:a=123,b=456,c=17.6,d=71837.65,e=70000,f=2174506,u=62000,v=58765,c1=a,c2=b分析运行结果。特别注意输入c1,c2的值是什么?什么原因?(2)将输入e和f的语句改为:scanf(“%d,%d”,&e,&f);再用上述测试数据测试并分析结果。(3)将输入u、v的语句改为:sc
16、anf(“%d,%d”,&u,&v);再用上述测试数据测试并分析结果。(4)将输出e,f的语句改为:printf(“e=%17d,f=%17dn”,e,f); 再用上述测试数据测试并分析结果。(5)将输出u、v的语句改为:printf(“u=%u,v=%un”,u,v);或printf(“u=%d,v=%dn”,u,v);再用上述测试数据测试并分析结果。(6)请读者自己修改程序和改变数据输入的形式,分析各种情况下的输入与输出。在scanf(“%c,%c”,&c1,&c2);语句之前加一个语句:getchar();(7)验证转义字符n 与 r的意义有何不同。三、分析与讨论1数学表达式与C语言表达
17、式的区别是什么?在进行转换时应注意什么问题?2学过的运算符的优先级别是什么顺序?3自加(自减)运算符的前缀表达式与后缀表达式有什么区别?4浮点型数据与整型数据在进行除法运算时,有什么区别?(例如5.0/3和5/3有什么区别)5printf()函数的有哪些格式符?怎样使用?6scanf()函数的输入格式符中的字符与printf()函数中的格式符有何不同?在输入数据时,需要注意哪些问题?(例如scanf(“d,f:d”&a,&b,&c)在输入数据时应该怎样输入?)7总结在printf函数中格式符C的使用,并给出样例。8 总结在printf函数中可以使用的各转义字符及其功能。9用putchar()和
18、getchar()函数有哪些注意事项?10在scanf()函数中,特别是数值型数据与字符型的混合输入时,应注意哪些问题?举例说明。11实验中遇到的问题与解决的办法。实验三 顺序结构一、 实验目的与要求1熟练掌握格式输入与格式输出函数的使用,理解scanf函数的工作过程。2熟练掌握赋值语句的使用方法。3进一步体会C程序的结构组成,体会主函数main的作用。4熟悉顺序结构的程序设计方法二、 实验内容1编写输入三角形的三边长a、b、c,求三角形面积area的程序。实验步骤与要求:(1)输入前要加提示语句。(2)输出结果前要有必要的文字说明。(3)输入一组数据3,4,5,观察运算结果。(4)输入另外一
19、组数据3,4,8,观察运算结果,分析这个运算结果是否有效。4编写程序,输入两个整数:1500和350,求出它们的商数和余数并进行输出。5编写程序,读入三个整数a,b,c,然后交换它们中的数,把a中原来的值给b,把b中原来的值给c,把c中原来的值给a。6编程计算半径r=2.5的圆面积、圆周长、球体积及球表面积。如果高h=4.5,计算圆柱体的表面积和体积。显示结果保留两位小数。7编写程序,输入一行字符(用回车结束),输出每个字符以及与之对应的ASCII码,每行输出3对。8 编写程序,输入一行输字字符(用回车结束),每个数字字符的前后都有空格,编程实现把这一行数字转换成一个整数。例如:2 4 6 8
20、(CR)输出:2468三、 分析与讨论1以下C程序的功能是:从键盘依次输入4个整数,计算并输出这4个数的平均值。#include main() int a,b,c,d,av; printf( Input a,b,c,d: ); scanf( %d,%d,%d,%d,&a,&b,&c,&d); av=(a+b+c+d)/4; printf(av=%fn,av);观察运行结果,想一想为什么,将最后一句中的“%f”改为“%d”,观察结果有什么变化,如果想使计算结果为实数,如何修改程序?如果想计算4个实数的平均数,如何修改程序?2在实验过程中遇到的问题及解决的办法。实验四 选择结构 一、 实验目的1理
21、解C语言表示逻辑量的方法,学会正确使用逻辑运算符和逻辑表达式。2掌握利用if结构实现选择结构的方法。3掌握利用switch结构实现多分支选择结构。4掌握若干简单算法。5学习选择结构程序的调试。二、实验内容和步骤1 用scanf函数输入一个年份year,计算这一年2月份的天数days,然后用输出函数printf输出days。实验步骤与要求:(1)有变量定义为整型。(2)输入前要加提示语句。(3)输出结果前要有必要的文字说明。说明:(1)闰年的条件是:year能被4整除但不能被100整除,或者year能被400整除。(2)如果year是闰年,则2月份的天数为29天,不是闰年则为28天。2编写程序计
22、算下面分段函数的值: 2x+5 (x0) f(x) = x2-x+3 (0xc&b= =c(2) a|b+c&b-c(3) !(ab)&!c|1(4) !(x=a)&(y=b)&0(5) !(a+b)+c-1&b+c/23对于多分支选择结构何时使用if语句的嵌套,何时使用switch语句?4在实验过程中遇到的问题及解决的办法。实验五 循环结构(一)一、目的和要求1练习并掌握利用while语句、do_while语句实现循环结构的方法。 2掌握循环结构的程序设计方法。3调试和修改循环结构的程序。二、实验内容1求5! 2 编写程序,分别用while循环和do_while循环计算12+22+.+n2的
23、值。比较三个程序在循环控制上的特点。3 计算两个数的最大公约数与最小公倍数。(先求出最大公约数,再求最小公倍数。根据最大公约数的定义求:能同时被这两个数整除的最大数)4 判断m是否是素数。(根据素数的定义来判断:除了1和它本身以外,不能被其他的数整除)5 编写程序,求135799101的值。四、 分析与讨论1 如何正确地设定循环条件,以及如何控制循环的次数。2 While循环和dowhile循环的区别3 在实验中遇到的问题及解决的办法。四、思考题1如果一个数恰好等于它的所有因子(包括1但不包括自身)之和,则称之为“完数”。例如6的因子是1,2,3,且6=1+2+3,因此6是完数。编写程序找出1
24、000之内的所有完数及这些完数的和。 实验步骤与要求:(1) 要求使用for循环(2) 输出形式为:完数1+完数2.=和值算法说明:(1) sum=0,m=2(2) 当m=1000时,反复执行(2.1)(2.2)(2.3)(2.4),否则转(3)(2.1)k=m/2,n=0,j=1(2.2)当j=k时,反复执行(2.2.1)(2.2.2) ,否则转(2.3)(2.2.1) if j是m的因子则执行n=n+j(2.2.2) j+ (2.3) if m=n 则输出完数m, sum=sum+m(2.4)m+(3)输出m值2给一个不多于5位的正整数,要求:a. 求出它是几位数;b. 分别打出每一位数字
25、;c. 按逆序打出各位数字,例如原数为321,应输出123。实验六 循环结构(二)一、 实验目的1练习并掌握三种循环语句的应用。2. 练习多重循环的设计方法3. 练习控制语句break、continue、goto语句的使用方法。4. 练习调试与修改程序二、实验内容1 输入并运行下面的程序,观察程序的运行结果。#includestdio.hmain( )int n;while (1)printf(Enter a number:);scanf(%d,&n);if (n%2=1)printf(I said);continue;break;printf(Thanks. I needed that!);
26、2 观察下面的C程序。main()int i ,j;long sum=0;for(i=1,i=20,i+) for(j=1;j=3;j+) sum=sum+(i+1)*(i+1)*(j+2)printf(“sum is :%dn”,sum);(1) 将上述程序中的和分别做什么样修改,能使程序按如下要求运行:.不循环;.外循环1次,不进入内循环;.外循环,内循环各1次;.外循环1次,内循环2次; .外循环 2次, 内循环1次;.外循环19次,内循环3次;.外循环20次,内循环2次;.外循环21次,内循环3次。(2) 试修改程序,以便能知道控制表达式 i=1;j=20;i+和j=1;j3;j+=各
27、执行了多少次?(3)内循环与外循环的控制表达式进行对换,观察程序的执行结果有无变化,并且观察对换后的外循环与内循环控制表达式执行的总次数有无变化?(4)将(3)中程序写为main()int i,j,k;long sum=0;for (j=1.j=3.j+)k=j+2;for(i=1;i=20;i+)sum=sum+(i+1)*(i+1)*k; printf(“sum is :%dn”,sum);观察程序的执行结果有无变化?(5)将(3)中程序改写为main() int I,j,m,n; long sum=0; for(j=1;j=3;j+) m=j+2; for(I=1;j=20;I+) n=I+1; sum=sum+m*m*k; printf(“sum is :%dn”,sum);观察程序的执行结果有无变化?(6)在(5)的程序中,若将外循环控制表达式分别做如下修改:.j=1;j=3;j+.j=1;j3;j+.j=1;j3;j-.j=1;j3;j+.j=0;j=3;j+=.j=0;j3
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1