1、C语言程序设计实验指导书华中师范大学信息技术系二0一0年十一月目录项目一:熟悉C语言的运行环境及简单程序设计1实验一 熟悉C语言的运行环境1实验二 c程序初步2实验三 数据类型及输入输出4实验四 运算符与表达式7项目二:流程控制、指针、数组、模块化程序设计8实验五 分支程序设计8实验六 循环程序设计9实验七 函数10实验八 数组11实验九 指针12项目三:综合程序设计竞赛编排及优胜排序14(注:每个项目应包含实验学习目标、实验内容、实验原理、实验设备、实验步骤、实验注意事项或实验思考等内容。基本型实验应有明确的实验学习目标、详细的过程和具体的结果;综合设计型实验应有明确的实验学习目标、可参考的
2、过程和实验结果评价标准)实验基本要求1、每次实验前,学生必须预习实验内容,实验程序必须自行编制、自行调试。2、每次实验,学生都必须提交实验报告,内容包括实验目的、实验内容、实验程序、实验过程(软件的使用、程序的调试)等,见下面的实验报告模版。3、学生第一次上机时,应在教师机指定文件夹下建立以自己学号+姓名的子文件夹,例如学号为2005683001的学生张三,应在教师机指定文件夹下建立“2005683001张三”的子文件夹,此文件夹就是学生张三存放本课程实验全部文档的文件夹,也是教师评价学生饰演成绩的主要依据。4、学生每次实验完毕后,都应将实验报告、实验程序等文档上传到教师机自己建立的子文件夹中
3、。5、学生每次实验,都应该在考勤表上签到。附 华中师范大学信息技术系C程序设计实验报告姓名:成绩:班级:地点:实验名称:实验日期:2010 年 月 日 节实验性质:(验证性或设计性)实验实验目的: 1熟悉TC的菜单和快捷键,定制TC环境2了解如何在该计算机系统上编辑、编译、连接和运行一个C语言程序。 3通过运行简单的C语言程序,初步了解C语言源程序的特点。实验设备(包括软件):实验内容:1运行课本第一章的例1.1、1.2。 2编写一个程序,, x=5.0 ,求y。实验过程:1.设计算法,写出程序(上机前做好,含N-S图及源程序代码)2.在Turbo C2.0 下编辑,得到源程序(.C)3.编译
4、、连接、调试程序(含编译及调试中出现的问题及解决方法)4.运行程序实验程序及实验结果: 实验体会:- 14 -项目一:熟悉C语言的运行环境及简单程序设计实验一 熟悉C语言的运行环境一、 实验学习目标1.熟悉Turbo C 2.0集成环境的界面设置及基本使用方法。2了解如何在该计算机系统上编辑、编译、连接和运行一个C语言程序。3.了解用计算机解决实际问题的基本步骤。二、实验内容1运行课本第一章的例1.1、1.2。 2编写一个程序,, x=5.0 ,求y。三、实验原理计算机系统上通过编辑、编译、连接和运行一个C语言程序四、实验设备微型计算机、TurboC 2.0语言环境或者其它编程语言环境。五、实
5、验步骤1、基本步骤(1)打开TurboC(2)输入并运行课本第一章的例1.1、1.2。(实验报告写明操作步骤、实验数据及运行结果)(3)编写一个程序,, x=5.0 ,求y的值并将其输出。在turboC中单步运行,调试该程序,用开发工具中的调试按钮查看变量x和y的值。2.实验程序实例main( ) int a,b,sum; /* 定义变量 */ a=123; /* 变量赋值 */ b=456; sum=a+b; /* 求和 */printf(“sum is %dn”,sum); /* 输出结果 */3.实验结果:sum is 5794.实验出错:在实验中,可能出错的地方有:(1)Printf的
6、格式出错,改正通过;(2)在每一个语句结束时忘记输入“;”六、实验总结通过本次实验,我熟悉Turbo C 2.0集成环境的界面设置及基本使用方法。知道在计算机上运行一个c程序要经过编辑、编译、连接和运行。实验二 c程序初步一、实验目的:1. 学会使用TurboC2.0进行程序的跟踪和调试。2. 了解顺序结构的程序的运行过程及特点。3. 掌握if语句的简单应用。4. 掌握语言程序的书写格式和语言程序的结构。二、实验内容. 编写程序,1输入一个整数,打印出它是奇数还是偶数。2. 下面的程序的目的是计算两个整数的积。请输入下面的程序,进行编译,记录编译时所出现的信息,分析出现这些错误信息的原因。按照
7、自己的分析改正错误后,再进行编译、链接和运行。#include main()a=3,b=5;c=a*b;printf(“The product is:”,c)3. 某程序源代码代码如下,试运行该程序:main() int x,y,z,t; scanf(%d%d%d,&x,&y,&z); if (xy) t=x;x=y;y=t; if(xz) t=z;z=x;x=t; if(yz) t=y;y=z;z=t; printf(%d %d %dn,x,y,z);画出该程序的N-S图,并说明该程序的功能。三、实验原理1、C语言程序的书写格式和C语言程序的结构2、顺序结构的程序的运行过程四、实验设备微型计
8、算机、TurboC 2.0语言环境或者其它编程语言环境。五、实验步骤1.基本步骤(1)设计算法,写出程序(上机前做好,含N-S图及源程序代码)(2)在Turbo C2.0 下编辑,得到源程序(.C)(3)编译、连接、调试程序(含编译及调试中出现的问题及解决方法)2.实验程序实例main() int x,y,z,t; scanf(%d%d%d,&x,&y,&z); if (xy) t=x;x=y;y=t; if(xz) t=z;z=x;x=t; if(yz) t=y;y=z;z=t; printf(%d %d %dn,x,y,z);3.实验结果:输入:4 2 6输出:4.实验出错:在实验中,可能
9、出错的地方有:(1).在输入数据的时候,两个数据之间的格式,例如:输入4 2 6两个数据之间有一个空格。(2).scanf 的格式出错,改正通过。六、实验总结通过这次实验,我知道了(1)c程序是由函数构成的,一个c程序至少包括一个main函数,也可以包括一个main函数和若干个其他的函数。(2)if语句的应用:在执行if语句时先对表达式求解,若表达式的值是真,执行指定的语句。实验三 数据类型及输入输出一、实验学习目标1、了解语言中数据类型的意义。2、 掌握输入输出函数的使用方法3、 掌握不同的类型数据之间赋值的规律二、 实验内容1. 掌握C语言的数据类型熟悉如何定义一个整型、字符型和实型的变量
10、,以及对它们赋值的方法。输入以下程序,并编译、运行,分析运行结果:#include “stdio.h”Void main()char c1,c2;c1=97;c2=98;printf(%c,%c,c1,c2);(1)在程序中加一个printf语句,并编译、运行,观察两种输出有什么区别。printf(%d,%d,c1,c2);(2)再将第二行改为:int c1,c2;再编译运行该程序,再观察在输出上有什么变化。(3)再将第三行改为:c1=300;c2=400;再编译运行一次,分析为什么会有这种结果。2.掌握不同的类型数据之间赋值的规律。 输入并运行以下程序:#include void main(
11、)int a,b;unsigned c,d;long e,f;a=100;b=-100;e=50000;f=32767;c=a;d=b;printf(“%d,%dn”,a,b);printf(“%u,%un”,a,b);printf(“%u,%un”,c,d);c=a=e;d=b=f;printf(“%d,%dn”,a,b);printf(“%u,%un”,c,d);请对照程序和运行结果分析3. 阅读并运行下面程序,分析运行结果。#include void main() fprintf(”t*n”);printf(”tb*n”); printf(tbb*n); 4.已知圆半径为362,圆柱高6
12、,求圆周长、圆球表面积和圆柱体积。用scanf输入数据,用printf输出计算结果,输出时要求有文字说明,取小数点后两位数字。5.用getchar函数读入两个字符给变量c1、c2,然后分别用putchar函数和printf函数输出这两个字符。三、 实验原理1、输入输出函数的使用2、不同的类型数据之间赋值的规律四、 实验设备微型计算机、TurboC 2.0语言环境或者其它编程语言环境。五、 实验步骤1.基本步骤(1).设计算法,写出程序(源程序代码,本次程序不需N-S图)(2).在Turbo C2.0 下编辑,得到源程序(.C)(3).编译、连接、调试程序(含编译及调试中出现的问题及解决方法)2
13、.实验程序实例#include void main()int a,b;unsigned c,d;long e,f;a=100;b=-100;e=50000;f=32767;c=a;d=b;printf(“%d,%dn”,a,b);printf(“%u,%un”,a,b);printf(“%u,%un”,c,d);c=a=e;d=b=f;printf(“%d,%dn”,a,b);printf(“%u,%un”,c,d);3.实验结果4.实验出错:在实验中,可能出错的地方有:(1)输入和输出函数的使用过程中在格式控制的地方可能会出现错误。要严格按照格式控制的形式输入和输出数据。(2)不同的数据类型
14、的取值范围不同,所以在不同数据类型之间相互复制可能会出现错误六、 实验总结通过这次实验,对数据类型的意义有了一定的了解:因为数据的类型决定了数据在内存中的存储空间。会使用输入输出函数进行数据的正确输入和输出。实验四 运算符与表达式一、实验学习目标1.理解常用运算符的意义;2.掌握C语言算术、赋值、自增、自减运算符及相应表达式;3.学会根据表达式,编写相应程序,验证表达式结果的方法。4.注意各个运算符的运算优先级和结合性;二、实验内容 1.整数除危险性分析下面三个表达式的值,再设计测试程序,进行比较和分析int a=5,b=7,c=100,d,e,f;d=a/b*c;e=a*c/b;f=c/b*
15、a;2.分析下面的程序试比较x+与+x之间的区别#includemain()int a=5,b=8;printf(“a+=%d”,a+);printf(“a=%d”,a);printf(“+b=%d”,+b);printf(“b=%d”,b);3. 分析下列表达式的值编写测试程序对这些表达式的值时行比较,并使各表达式在相同的初始条件下执行b+a+ab+(a+)+ab+a+(+a)b+a+a+三、实验原理1.丰富的运算符和表达式使语言功能十分完善。2.自增运算使单个变量的值增,自减运算使单个变量的值减3.运算符具有不同的优先级和结合性。4.结合性是其它高级语言的运算符所没有的,因此也增加了语言的
16、复杂性。四、实验设备微型计算机、TurboC 2.0语言环境或者其它编程语言环境五、实验步骤1.设计算法,写出程序(源程序代码,本次程序不需N-S图)2.在Turbo C2.0 下编辑,得到源程序(.C)3.编译、连接、调试程序(含编译及调试中出现的问题及解决方法)4.记录并分析上述程序的运行结果。5.实验程序实例: main()int a=2,b=3;float x=3.9,y=2.3; float r; r=(float)(a+b)/2+(int)x%(int)y; printf(%fn,r);6.实验结果:输出:3.500000六、实验总结通过本次实验我学会了编写程序来验证表达式的结果。
17、赋值转换原则:赋值号右边的数据类型转化为赋值号左边的数据类型,然后赋值给赋值号左边的变量。项目二:流程控制、指针、数组、模块化程序设计实验五 分支程序设计一、 实验学习目标1. 掌握分支程序的设计方法。2. 进一步掌握关系表达式和逻辑表达式的使用。3. 熟悉选择结构程序设计。4. 熟练使用if语句进行程序设计。5. 使用switch语句实现多分枝选择结构。二、 实验内容1从键盘上输入一个百分制成绩score,按下列原则输出其等级:score90,等级为A;80score90,等级为B;70score80,等级为C;60score70,等级为D;score60,等级为E。2任意输入三个数,判断能
18、否构成三角形?若能构成三角形,是等边三角形(equalateral triangle)、等腰三角形(isosceles triangle)还是其它三角形(other triangle)? (不能:输出no triangle) 三、 实验原理1. 程序if语句的结构和嵌套的结构。2. 构成三角形的基本原理:两边之和大于大三边,两边之差小于第三边;以及等边三角形、等腰三角形的特性。四、 实验设备微型计算机、TurboC 2.0语言环境或者其它编程语言环境五、 实验步骤1.设计算法,写出程序(上机前做好,含N-S图及源程序代码)2.在Turbo C2.0 下编辑,得到源程序(.C)3.编译、连接、调
19、试程序(含编译及调试中出现的问题及解决方法)六、 实验总结通过本次实验进一步熟悉C语言程序的基本结构,回顾学过的程序结构形式,明白其中的原理,上机实际操作,运行实现结果,同时训练一种编程的基本思想。真正懂的分支程序设计的结构。实验六 循环程序设计一、实验学习目标1. 掌握循环程序的设计方法。2. 掌握while语句、do-while语句和for语句实现循环的方法。3. 理解循环结构程序段中语句的执行过程。4. 进一步掌握循环结构程序的应用。二、 实验内容1 有一个分数序列:,求出这个序列的前20项之和。2 用牛顿迭代法求方程的近似解,误差范围e由键盘输入。3. 有100匹马,驮100担货,大马
20、驮3担,中马驮2担,两匹小马驮1担,问大、中、小马各有几只?设计求解该问题的C语言程序。三、 实验原理1. 总结推导公式设计程序方案。2. 牛顿迭代法的基本原理。四、实验设备微型计算机、TurboC 2.0语言环境或者其它编程语言环境。五、实验步骤1.设计算法,写出程序(上机前做好,含N-S图及源程序代码)2.在Turbo C2.0 下编辑,得到源程序(.C)有一个分数序列:2/1, 3/2, 5/3, 8/5, 13/8, 编写程序求出这个序列的前n项之和3.编译、连接、调试程序(含编译及调试中出现的问题及解决方法)六、 实验总结通过本次实验进一步熟悉C语言程序的基本结构,回顾学过的程序结构
21、形式,明白其中的原理,上机实际操作,运行实现结果,同时训练一种编程的基本思想。掌握循环程序设计的几种基本结构形式。实验七 函数一、实验学习目标1. 掌握函数的定义、声明及调用的方法。2. 了解函数调用时参数传递的本质。二、实验内容1.计算s=22!+32!本题可编写两个函数,一个是用来计算平方值的函数f1,另一个是用来计算阶乘值的函数f2。主函数先调f1计算出平方值,再在f1中以平方值为实参,调用 f2计算其阶乘值,然后返回f1,再返回主函数,在循环程序中计算累加和。2. 在main()函数中输入正方体的长宽高l,w,h。编写函数Vs(int l,int w,int h)求体积及三个面x*y,
22、x*z,y*z的面积并在main()函数输出计算结果。(提示:三个面积可定义为全局变量。)3.运行以下程序,并对其结果作出分析,为什么两个k会得到不同的值。 main() int i=2,j=3,k; k=i+j; int k=8; printf(%dn,k); printf(%dn,k);三、 实验原理1. 阶乘的基本原理:5!=5*4*3*2*1。2. 函数编写的基本思想,类似数学公式,即自己自定义通用的函数式子再利用C语言的结构进行编写四、 实验设备微型计算机、TurboC 2.0语言环境或者其它编程语言环境。五、 实验步骤1.设计算法,写出程序(源程序代码,本次程序不需N-S图)2.在
23、Turbo C2.0 下编辑,得到源程序(.C)3.编译、连接、调试程序(含编译及调试中出现的问题及解决方法)六、 实验总结通过本次实验上机操作,理解函数了的使用方法,训练函数的编写思想,综合练习了函数的应用及c语言各种程序结构的使用。实验八 数组一、实验学习目标1.熟练掌握一维数组和二维数组的定义、赋值、引用和输入输出的方法。2.掌握字符数组的定义、初始化和引用,并掌握字符串函数的使用。3.掌握与数组有关的插入、删除、排序、查找等常用算法。二、实验内容1.将10个实数存储在一个数组中,设计一个程序输出这个数组的最大值和最小值。2.输入一行字符,统计其中大写字母出现的次数。3.输入若干有序数放
24、在数组中。然后输入一个数,插入到此有序数列中,插入后,数组中的数仍然有序。请对以下三种情况运行你的程序,以便验证你的程序是否正确。 (1)插在最前 (2)插在最后 (3)插在中间三、实验原理1.比较数组中的数据,取出最大值、最小值。2.判断字符的大小写并计数。3.比较数组中数据在适当的位置插入。四、实验设备微型计算机、TurboC 2.0语言环境或者其它编程语言环境五、实验步骤1.设计算法,写出程序(源程序代码,本次程序不需N-S图)2.在Turbo C2.0 下编辑,得到源程序(.C)3.编译、连接、调试程序(含编译及调试中出现的问题及解决方法)六、实验总结通过本次试验熟练掌握了数组的定义、
25、引用、输入输出的方法。了解字符、字符串和字符数组之间的关系。并能编程实现数组有关的插入、删除、排序、查找操作。实验九 指针一、实验学习目标1.掌握指针的概念,会定义和使用指针变量。2.基本掌握指针的C程序设计。3.巩固所学的理论知识,培养锻炼进行复杂C程序设计的能力。二、实验内容1.调试下面的程序,指出出错的原因main() int x=10,y=5,*px,*py; px=py; px=&x; py=&y; printf(“*px=%d,*py=%d”,*px,*py);2.下面的程序试图有如下运行结果。which style you want to:capital (c) or uncap
26、tial(u):cCOMPUTERwhich style you want to:capital (c) or uncaptial(u):ucomputer请调试下面的程序,使其有如上执行结果。#include main() char *s; char c; printf(“which style you want to:1n”);printf(“capital (c) or uncaptial(u):”);三、实验原理1、指针变量的定义与引用;2、使用指针编写应用程序;四、实验设备微型计算机、TurboC 2.0语言环境或者其它编程语言环境五、实验步骤1.设计算法,写出程序(源程序代码,本次
27、程序不需N-S图)2.在Turbo C2.0 下编辑,得到源程序(.C)3.编译、连接、调试程序(含编译及调试中出现的问题及解决方法)4.实验程序实例:从键盘输入两个整数,按由小到大的顺序输出,用指针实现。main() int p,*p1,*p2; int a,b; scanf(%d,%d,&a,&b);p1=&a; p2=&b; if(ab)p=*p1;*p1=*p2;*p2=p; printf(a=%d,b=%d,a,b);printf(min=%d,max=%d,*p1,*p2);5.实验结果:输入:10 5 输出:a=5,b=10 min=5,max=10六、实验总结通过本次实验进一步
28、熟悉C语言程序熟悉了指针变量的使用,分清了指针变量和指针变量所指向的变量两个概念。项目三:综合程序设计竞赛编排及优胜排序任务:世界杯足球赛决赛阶段N个队参加,每个队有如下属性:(1)所属州(2)是否种子,共有2*M个种子队;(3)队伍的当前积分排序。共分为M组,每组K人,已知K*M=N。一、 请设计程序,输出分组方案,规则如下:(1) 每组分配2名种子队;(2) 每组同州的球队不超过3支;(3) 每组球队的积分排序尽可能平均。二、 设计程序,记录每队的小组赛结果,每一轮比赛后输出排名结果,排名的规则按以下先后次序进行:(1) 积分,胜队3分,平1分,负0分;(2) 净胜球;(3) 进球数;(4) 两队之间的胜负关系;(5) 原积分排序;(6) 随机。