资源描述
《C语言程序设计》
实
验
指
导
书
华中师范大学信息技术系
二0一0年十一月
目录
项目一:熟悉C语言的运行环境及简单程序设计 1
实验一 熟悉C语言的运行环境 1
实验二 c程序初步 2
实验三 数据类型及输入输出 4
实验四 运算符与表达式 7
项目二:流程控制、指针、数组、模块化程序设计 8
实验五 分支程序设计 8
实验六 循环程序设计 9
实验七 函数 10
实验八 数组 11
实验九 指针 12
项目三:综合程序设计——竞赛编排及优胜排序 14
(注:每个项目应包含实验学习目标、实验内容、实验原理、实验设备、实验步骤、实验注意事项或实验思考等内容。
基本型实验应有明确的实验学习目标、详细的过程和具体的结果;综合设计型实验应有明确的实验学习目标、可参考的过程和实验结果评价标准)
实验基本要求
1、每次实验前,学生必须预习实验内容,实验程序必须自行编制、自行调试。
2、每次实验,学生都必须提交实验报告,内容包括实验目的、实验内容、实验程序、实验过程(软件的使用、程序的调试)等,见下面的实验报告模版。
3、学生第一次上机时,应在教师机指定文件夹下建立以自己学号+姓名的子文件夹,例如学号为2005683001的学生张三,应在教师机指定文件夹下建立“2005683001张三”的子文件夹,此文件夹就是学生张三存放本课程实验全部文档的文件夹,也是教师评价学生饰演成绩的主要依据。
4、学生每次实验完毕后,都应将实验报告、实验程序等文档上传到教师机自己建立的子文件夹中。
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.运行程序
实验程序及实验结果:
实验体会:
- 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语言环境或者其它编程语言环境。
五、实验步骤
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 %d\n”,sum); /* 输出结果 */
}
3.实验结果:
sum is 579
4.实验出错:
在实验中,可能出错的地方有:
(1)Printf的格式出错,改正通过;
(2)在每一个语句结束时忘记输入“;”
六、实验总结
通过本次实验,我熟悉Turbo C 2.0集成环境的界面设置及基本使用方法。知道在计算机上运行一个c程序要经过编辑、编译、连接和运行。
实验二 c程序初步
一、实验目的:
1. 学会使用TurboC2.0进行程序的跟踪和调试。
2. 了解顺序结构的程序的运行过程及特点。
3. 掌握if语句的简单应用。
4. 掌握C语言程序的书写格式和C语言程序的结构。
二、实验内容. 编写程序,
1输入一个整数,打印出它是奇数还是偶数。
2. 下面的程序的目的是计算两个整数的积。请输入下面的程序,进行编译,记录编译时所出现的信息,分析出现这些错误信息的原因。按照自己的分析改正错误后,再进行编译、链接和运行。
#include <stdio.h>
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 (x>y)
{t=x;x=y;y=t;}
if(x>z)
{t=z;z=x;x=t;}
if(y>z)
{t=y;y=z;z=t;}
printf("%d %d %d\n",x,y,z);
}
画出该程序的N-S图,并说明该程序的功能。
三、实验原理
1、C语言程序的书写格式和C语言程序的结构
2、顺序结构的程序的运行过程
四、实验设备
微型计算机、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 (x>y)
{t=x;x=y;y=t;}
if(x>z)
{t=z;z=x;x=t;}
if(y>z)
{t=y;y=z;z=t;}
printf("%d %d %d\n",x,y,z);
}
3.实验结果:
输入:4 2 6
输出:
4.实验出错:
在实验中,可能出错的地方有:
(1).在输入数据的时候,两个数据之间的格式,例如:输入4 2 6两个数据之间有一个空格。
(2).scanf 的格式出错,改正通过。
六、实验总结
通过这次实验,我知道了
(1)c程序是由函数构成的,一个c程序至少包括一个main函数,也可以包括一个main函数和若干个其他的函数。
(2)if语句的应用:在执行if语句时先对表达式求解,若表达式的值是真,执行指定的语句。
实验三 数据类型及输入输出
一、实验学习目标
1、了解C语言中数据类型的意义。
2、 掌握输入输出函数的使用方法
3、 掌握不同的类型数据之间赋值的规律
二、 实验内容
1. 掌握C语言的数据类型
熟悉如何定义一个整型、字符型和实型的变量,以及对它们赋值的方法。输入以下程序,并编译、运行,分析运行结果:
#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 <stdio.h>
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,%d\n”,a,b);
printf(“%u,%u\n”,a,b);
printf(“%u,%u\n”,c,d);
c=a=e;
d=b=f;
printf(“%d,%d\n”,a,b);
printf(“%u,%u\n”,c,d);
}
请对照程序和运行结果分析
3. 阅读并运行下面程序,分析运行结果。
#include<stdio.h>
void main()
{
fprintf(”\t*\n”);
printf(”\t\b***\n”);
printf("\t\b\b*****\n");
}
4.已知圆半径为3.62,圆柱高6,求圆周长、圆球表面积和圆柱体积。用scanf输入数据,用printf输出计算结果,输出时要求有文字说明,取小数点后两位数字。
5.用getchar函数读入两个字符给变量c1、c2,然后分别用putchar函数和printf函数输出这两个字符。
三、 实验原理
1、输入输出函数的使用
2、不同的类型数据之间赋值的规律
四、 实验设备
微型计算机、TurboC 2.0语言环境或者其它编程语言环境。
五、 实验步骤
1.基本步骤
(1).设计算法,写出程序(源程序代码,本次程序不需N-S图)
(2).在Turbo C2.0 下编辑,得到源程序(.C)
(3).编译、连接、调试程序(含编译及调试中出现的问题及解决方法)
2.实验程序实例
#include <stdio.h>
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,%d\n”,a,b);
printf(“%u,%u\n”,a,b);
printf(“%u,%u\n”,c,d);
c=a=e;
d=b=f;
printf(“%d,%d\n”,a,b);
printf(“%u,%u\n”,c,d);
}
3.实验结果
4.实验出错:
在实验中,可能出错的地方有:
(1)输入和输出函数的使用过程中在格式控制的地方可能会出现错误。要严格按照格式控制的形式输入和输出数据。
(2)不同的数据类型的取值范围不同,所以在不同数据类型之间相互复制可能会出现错误
六、 实验总结
通过这次实验,对数据类型的意义有了一定的了解:因为数据的类型决定了数据在内存中的存储空间。会使用输入输出函数进行数据的正确输入和输出。
实验四 运算符与表达式
一、实验学习目标
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*a;
2.分析下面的程序
试比较x++与++x之间的区别
#include<stdio.h>
main()
{int a=5,b=8;
printf(“a++=%d”,a++);
printf(“a=%d”,a);
printf(“++b=%d”,++b);
printf(“b=%d”,b);
3. 分析下列表达式的值
编写测试程序对这些表达式的值时行比较,并使各表达式在相同的初始条件下执行
b+a+++a
b+(a++)+a
b+a+(++a)
b+a+++a++
三、实验原理
1.丰富的运算符和表达式使C语言功能十分完善。
2.自增运算使单个变量的值增1,自减运算使单个变量的值减1
3.运算符具有不同的优先级和结合性。
4.结合性是其它高级语言的运算符所没有的,因此也增加了C语言的复杂性。
四、实验设备
微型计算机、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("%f\n",r);
}
6.实验结果:
输出:3.500000
六、实验总结
通过本次实验我学会了编写程序来验证表达式的结果。赋值转换原则:赋值号右边的数据类型转化为赋值号左边的数据类型,然后赋值给赋值号左边的变量。
项目二:流程控制、指针、数组、模块化程序设计
实验五 分支程序设计
一、 实验学习目标
1. 掌握分支程序的设计方法。
2. 进一步掌握关系表达式和逻辑表达式的使用。
3. 熟悉选择结构程序设计。
4. 熟练使用if语句进行程序设计。
5. 使用switch语句实现多分枝选择结构。
二、 实验内容
1.从键盘上输入一个百分制成绩score,按下列原则输出其等级:score≥90,等级为A;80≤score<90,等级为B;70≤score<80,等级为C;60≤score<70,等级为D;score<60,等级为E。
2.任意输入三个数,判断能否构成三角形?若能构成三角形,是等边三角形(equalateral triangle)、等腰三角形(isosceles triangle)还是其它三角形(other triangle)? (不能:输出no triangle)
三、 实验原理
1. 程序if语句的结构和嵌套的结构。
2. 构成三角形的基本原理:两边之和大于大三边,两边之差小于第三边;以及等边三角形、等腰三角形的特性。
四、 实验设备
微型计算机、TurboC 2.0语言环境或者其它编程语言环境
五、 实验步骤
1.设计算法,写出程序(上机前做好,含N-S图及源程序代码)
2.在Turbo C2.0 下编辑,得到源程序(.C)
3.编译、连接、调试程序(含编译及调试中出现的问题及解决方法)
六、 实验总结
通过本次实验进一步熟悉C语言程序的基本结构,回顾学过的程序结构形式,明白其中的原理,上机实际操作,运行实现结果,同时训练一种编程的基本思想。真正懂的分支程序设计的结构。
实验六 循环程序设计
一、实验学习目标
1. 掌握循环程序的设计方法。
2. 掌握while语句、do-while语句和for语句实现循环的方法。
3. 理解循环结构程序段中语句的执行过程。
4. 进一步掌握循环结构程序的应用。
二、 实验内容
1. 有一个分数序列:,求出这个序列的前20项之和。
2. 用牛顿迭代法求方程的近似解,误差范围e由键盘输入。
3. 有100匹马,驮100担货,大马驮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语言程序的基本结构,回顾学过的程序结构形式,明白其中的原理,上机实际操作,运行实现结果,同时训练一种编程的基本思想。掌握循环程序设计的几种基本结构形式。
实验七 函数
一、实验学习目标
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,x*z,y*z的面积并在main()函数输出计算结果。(提示:三个面积可定义为全局变量。)
3.运行以下程序,并对其结果作出分析,为什么两个k会得到不同的值。
main()
{
int i=2,j=3,k;
k=i+j;
{
int k=8;
printf("%d\n",k);
}
printf("%d\n",k);
}
三、 实验原理
1. 阶乘的基本原理:5!=5*4*3*2*1。
2. 函数编写的基本思想,类似数学公式,即自己自定义通用的函数式子再利用C语言的结构进行编写
四、 实验设备
微型计算机、TurboC 2.0语言环境或者其它编程语言环境。
五、 实验步骤
1.设计算法,写出程序(源程序代码,本次程序不需N-S图)
2.在Turbo C2.0 下编辑,得到源程序(.C)
3.编译、连接、调试程序(含编译及调试中出现的问题及解决方法)
六、 实验总结
通过本次实验上机操作,理解函数了的使用方法,训练函数的编写思想,综合练习了函数的应用及c语言各种程序结构的使用。
实验八 数组
一、实验学习目标
1.熟练掌握一维数组和二维数组的定义、赋值、引用和输入输出的方法。
2.掌握字符数组的定义、初始化和引用,并掌握字符串函数的使用。
3.掌握与数组有关的插入、删除、排序、查找等常用算法。
二、实验内容
1.将10个实数存储在一个数组中,设计一个程序输出这个数组的最大值和最小值。
2.输入一行字符,统计其中大写字母出现的次数。
3.输入若干有序数放在数组中。然后输入一个数,插入到此有序数列中,插入后,数组中的数仍然有序。请对以下三种情况运行你的程序,以便验证你的程序是否正确。
(1)插在最前 (2)插在最后 (3)插在中间
三、实验原理
1.比较数组中的数据,取出最大值、最小值。
2.判断字符的大小写并计数。
3.比较数组中数据在适当的位置插入。
四、实验设备
微型计算机、TurboC 2.0语言环境或者其它编程语言环境
五、实验步骤
1.设计算法,写出程序(源程序代码,本次程序不需N-S图)
2.在Turbo C2.0 下编辑,得到源程序(.C)
3.编译、连接、调试程序(含编译及调试中出现的问题及解决方法)
六、实验总结
通过本次试验熟练掌握了数组的定义、引用、输入输出的方法。了解字符、字符串和字符数组之间的关系。并能编程实现数组有关的插入、删除、排序、查找操作。
实验九 指针
一、实验学习目标
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 uncaptial(u):c
COMPUTER
which style you want to:
capital (c) or uncaptial(u):u
computer
请调试下面的程序,使其有如上执行结果。
#include <stdio.h>
main()
{
char *s;
char c;
printf(“which style you want to:1n”);
printf(“capital (c) or uncaptial(u):”);
}
三、实验原理
1、指针变量的定义与引用;
2、使用指针编写应用程序;
四、实验设备
微型计算机、TurboC 2.0语言环境或者其它编程语言环境
五、实验步骤
1.设计算法,写出程序(源程序代码,本次程序不需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(a>b)
{
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
六、实验总结
通过本次实验进一步熟悉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) 随机。
展开阅读全文