《(茅院)C语言程序设计实验指导书.doc》由会员分享,可在线阅读,更多相关《(茅院)C语言程序设计实验指导书.doc(42页珍藏版)》请在三一办公上搜索。
1、高级语言程序设计实验实验指导书暨实验报告 信 息 科 学 与 技 术 学 院2011年8月说 明本实验指导书是为茅以升学院大学本科一年级学生的计算机程序设计基础课实验教学而编写的,实验指导教师在每个实验项目进行中应检查学生实验预习情况,在每个实验项目结束时学生应上交实验报告内容,以作为评定实验成绩的依据之一。本书中难免有错误和疏忽之处,敬请广大老师和同学多提宝贵意见。信息科学与技术学院 20118 上机实验注意事项1实验前必须根据实验指导书的内容进行预习,对实验指导书中要求在实验前做好的内容,要事先写在实验指导书上。2上实验课不得迟到、早退,更不得缺席。3实验时要听从实验指导教师的安排,在老师
2、使用多媒体教学设备进行教学时,学生不得操作计算机,必须认真听讲。4实验时每人按指定的机位就座,在实验课结束前应提前将需要保存的文件存盘,下机时应养成自觉关闭主机和显示器的习惯。5课后应根据实验要求写好实验报告,并按规定的时间和方式提交。6对需要在上机时检查的任务,必须在老师规定的期限内进行检查并由指导教师作记录。7实验时必须做和实验内容有关的操作,禁止玩游戏。目 录说 明2上机实验注意事项3C语言程序设计实验的目的和要求5实验一Turboc C 的集成开发环境7实验二数据类型、运算符、表达式以及简单程序设计9实验三分支程序设计12实验四循环程序设计(一)14实验五循环程序设计(二)17实验六一
3、维数组的应用20实验七多维数组的应用23实验八函数(一)26实验九函数(二)28实验十指针应用30实验十一构造类型32实验十二链表*34实验十三文件36实验十四程序设计综合练习(选做)39计算机程序设计基础实验的目的和要求学习C语言程序设计课程必须重视实践环节,即独立编写出程序,独立上机调试程序。学习本课程必须保证有足够的上机实验时间,应该至少有60小时的上机时间,对于初次学习程序设计的人来说,应该拿出更多的时间上机调试程序。上机的目的,绝不仅是为了验证教材和讲课的内容或者验证自己所编的程序正确与否。被誉为“教授计算技术的大师,普及现代科技之巨擎”的谭浩强先生将学习程序设计、上机实验的目的总结
4、为:一、加深对讲授内容的理解,尤其是一些语法的规定,光靠课堂讲授,既枯燥无味又难以记住,但它们都很重要。通过多次上机,就能自然地、熟练地掌握。通过上机来掌握语法规则是行之有效地方法。二、熟悉所用地计算机系统地操作方法,也就是了解和熟悉C语言程序开发地环境。一个程序必须在一定地外部环境下才能运行,所谓“环境”,就是指所用的计算机系统硬件和软件条件。使用者应该了解为了运行一个C程序,需要哪些必要的外部条件(例如硬件配置、软件配置),可以利用哪些操作系统的功能来帮助自己开发程序。每一种计算机系统的功能和操作方法不完全相同,但只要熟练掌握一、二种计算机系统的使用,再遇到其他的系统时便会触类旁通,很快地
5、学会。三、学习上机调试程序。也就是善于发现程序中的错误,并且能很快地排除这些错误,使程序能正确运行。经验丰富的程序员,当编译时出现“出错信息”时,能很快地判断出错误所在,并改正之。而缺乏经验的人,即使在明确的出错提示下也往往找不出错误而需要求助于别人。计算机技术是实践性很强的技术,要求从事这一领域的人不仅能了解和熟悉有关理论和方法,还要求自己动手实现。对程序设计来说,要求会编程序并上机调试通过。因此调试程序本身是程序设计课程的一个重要内容和基本要求,应给予充分的重视。调试程序的经验固然可以借鉴他人的现成经验,但更重要的是通过自己的直接实践来累积,而且有些经验是只能“意会”难以“言传”的。因此,
6、在实验时千万不要在程序通过后就认为万事大吉、完成任务了,而应该在已通过的程序基础上作一些改动(例如修改一些参数、增加程序一些功能、改变输入数据的方法等),再进行编译、链接和运行。甚至于“自设障碍”即把正确的程序改为有错的(例如用scanf函数输入变量时,漏写“&”符号;或者使数组下标出界;使整数溢出等),观察和分析所出现的情况。这样的学习才会有真正的收获,是灵活主动地学习而不是呆板被动地学习。上机一般应包括以下几个步骤:(1)准备好上机所需的程序。手工编程序应书写整齐,并经人工检查无误后才能上机,以提高上机效率。对程序中自己有疑问的地方,应作出记号,以便在上机时给予注意。初学者切忌不编程序或抄
7、袭别人程序去上机,应从一开始就养成严谨的科学作风。(2)上机输入和调试自己所编的程序。应该一人一组,独立上机。上机过程中出现的问题,除了是系统的问题外,一般应自己独立处理,不要轻易举手问教师。尤其对“出错信息”,应善于自己分析判断。这是学习调试程序的良好机会。在使用键盘时,最好采用正确的指法击键,为今后正确使用键盘打下基础。在程序调试通过后,打印输出程序清单和运行结果,在运行时要注意在输入不同数据时所得到的不同结果(例如解方程ax2+bx+c=0时,不同的a、b、c组合对应得到实根、复根的不同结果)。此时应运行几次,分别检查在不同情况下程序是否正确。(3)上机结束后,应整理出实验报告,实验报告
8、应包括以下内容: 题目; 程序清单(计算机打印出的程序清单); 运行结果(必须是上面程序清单所对应打印输出结果); 对运行情况所作的分析以及本次调试程序所取得的经验。如果程序未能通过,应分析其原因。实验一Turboc C 的集成开发环境 实验目的1掌握在Turbo C的集成开发环境里如何编辑、编译、连接和运行一个C程序,以及各常用命令的快捷键。 2通过运行简单的C程序,初步了解C源程序的特点,熟悉TurboC的集成开发环境。 3掌握编辑组合键Ctrl+KB、Ctrl+KK、Ctrl+KH、Ctrl+KY、Ctrl+KV、Ctrl+KC等的使用。 4能初步理解出错信息的含义。 实验步骤进入编程环
9、境:编写简单程序,熟悉各菜单的使用,了解用什么命令进行编译、连接和运行的,编译和连接后所得到的目标程序的后缀上是什么形式?了解如何在运行时间向程序变量输入数据,如何查看程序运行时的输出结果。 实验内容1 输入下面程序,并编译运行:通过“User Screen”查看程序运行的结果。# include main() int a,b,result;printf (This is a C program. n);printf(“Input a:”);scanf(“%d”,&a);printf(“n”);printf(“Input b:”);scanf(“%d”,&b);printf(“n”);resu
10、lt=a+b;printf(“the result is %dn”,result); 2.按“F7”键,单步运行1中的程序,注意观察每运行一步“User Screen”的变化,将每一步运行时屏幕上的输出内容记录在下面的表格中。运行步骤屏幕输出结果12345673.输入下面程序,并调试、编译、运行。#include “stdio.h” /*编译预处理 */main()int a,b,c,d; * 指定a,b,c,d为整型变量 *unsigned u; * 指定为无符号整型变量* /clrscr();a=12;b=-24;u=10;c=a+u;d=b+u;printf(c=%d d=%d,c,d)
11、;实验二数据类型、运算符、表达式以及简单程序设计 实验目的1 掌握C语言数据类型,熟悉如何定义一个整型、字符型、实型变量,以及对它们赋值的方法,了解以上类型数据输出时所用的格式转换符。2 学会使用C语言的有关算术运算符,以及包括这些运算符的表达式。特别是自加(+)和自减(-)等C语言特有的运算符的使用。3 学会用C语言的输入、输出函数编写顺序简单程序。4 掌握调试程序的基本步骤和方法5 进一步熟悉C程序的编辑、编译、连接和运行的过程。 实验步骤进入编程环境;按照题目要求编写简单程序,自行调试使程序可以正确运行。 实验内容1 输入以下程序,并编译、调试、运行,观察执行后结果;只更改变量的类型,看
12、看结果有何不同,思考为什么没有得到预期结果。# include #define PI 3.1415926main()float s,r,l;r=10.;l=2.0*PI*r;s=PI*r*r;printf(l=%f s=%fn,l,s);printf(PI=%fn,PI);2 写出以下程序的运行结果,然后调试、编译并运行,检查自己的结果是否正确。# include #include main()int a=1,b=4,c=2; float x=10.5,y=4.0.z ; z=(a+b)/c+sqrt(double)y)*1.2/c+x;printf(“%fn”,z);请将输出结果填入下表:3
13、 分析下面程序:程序一:如果下面变量都是 int 型. sum = pad = 5; pad = sum + +, pad + +, + + pad; printf (“%d”, pad);将上述程序段补写完整。并将输出结果填入下表,然后上机验证:程序二:#include main ( ) printf(“ ab ct derftgn”); printf(htibbj k); 将上述程序的输出结果填入下表。再上机调试、编译、运行,验证结果是否正确:程序三:main ( )char c1,c2; c1a;c2=b; c1=c1-32;c2=c2-32; printf(”c c”,c1,c2);
14、将上述程序的输出结果填入下表。再上机调试、编译、运行,验证结果是否正确:实验三分支程序设计 实验目的1 学习使用分支语句,掌握分支语句的特点;2 掌握逻辑表达式的表示;3 编写单分支程序和多重分支程序;实验步骤进入编程环境;在实验前先按照题目要求编写程序以备实验指导教师检查,实验时调试使程序可以正确运行,按照实验指导教师的要求检查,注意选择使用最优的分支语句。实验内容1、输入一个字符,判别它是否是大写字母,如果是,将它转换成小写字母;如果不是,不转换。然后输出最后得到的字符。自己编写的源程序:#include”stdio.h”main()char ch;scanf(“%c”,&ch);if(c
15、h=A&ch=Z)printf(“%c”,ch+32);else printf(“%c”,ch);2、输入3个整数,判断他们能否构成一个三角形。若不能,输出“No”,若能,则计算三角形面积并输出。自己编写的源程序:#include”stdio.h”#include”math.h”main()int a,b,d;float s,c;scanf(“%d%d%d”,&a,&b,&d);if(a+b)d)printf(“NOn”);elsec=(a+b+d)/2;s=sqrt(c*(c-a)*(c-b)*(c-d);printf(“YESnThe area is:%f”,s);3、 输入一个百分制成绩
16、,要求输出该成绩等级ABCDE。95A自己编写的源程序:#includestdio.hmain()float a;while(a)scanf(%f,&a);if(a=60&a=75&a=85&a=95) printf(A);printf(n);实验四循环程序设计(一) 实验目的1 掌握循环结构的使用;2 学习使用循环语句编写程序简单循环程序; 实验步骤进入编程环境;按照题目要求编写程序,自行调试使程序可以正确运行,按照实验指导教师的要求检查。 实验内容1.计算300400中既不能被3整除也不能被4整除的所有整数之和。自己编写的源程序:#include”stdio.h”main()int i,s
17、=0;for(i=300;i=0&ch=A&ch=a&chz|(ch+4Z&chZ)printf(%c,ch-22);else printf(%c,ch+4);else printf(%c,ch);4下面这个程序打印出以下这个三角形,请将程序补写完整。0112223333444445555556666666777777778888888889999999999#include void main() int i,j;for(i=0;i=_10_;i+) for(j=0;j_i_;j+) printf(“%d”,j);6输入一个十进制整数,将其转化成八进制格式输出(需用数制转换实现)。自己编写的
18、源程序:#include”stdio.h”main()int a;scanf(“%d”,&a);printf(“%o”,a);实验五循环程序设计(二) 实验目的1. 学习使用循环语句;2. 掌握多重循环程序的设计;3. 掌握循环变量的使用,以及break和continue语句的使用4. 编写较为复杂的程序 实验步骤进入编程环境:按照题目要求编写程序,自行调试使程序可以正确运行,按照实验指导教师的要求检查。 实验内容1 用户输入一个整数作为行数,打印如下图形(行数由键盘输入):* * * * * * * * * * * * * * * * *自己编写的源程序:#includestdio.hmai
19、n()int a,i,j;scanf(%d,&a);for(i=0;i0;j-)printf(* );for(j=0;j0;j-)printf(* );printf(n);2由用户输入一个小写字母后,打印如下图形。例如:输入d则打印 a b b c c c d d d d注意:下行只比上行多一个字母。自己编写的源程序:#includestdio.hmain()char ch,ch0,ch1,ch2;scanf(%c,&ch);for(ch0=a;ch0=ch0;ch1-)printf( );for(ch2=a;ch2=n)a=m;b=n;else a=n;b=n;for(i=b;i0;i-)i
20、f(m%i=0&n%i=0)printf(The greatest common divisor is:%dn,i);break;for(j=a;j+)if(j%m=0&j%n=0)printf(The least common multiple is:%dn,j);break;4 有30个男女小孩同在一家小饭馆进餐,共花了50先令,其中每位男宾3先令,每位女宾2先令,每位小孩1先令,问男女小孩各多少?自己编写的源程序:#include”stdio.h”main()int m,w,c;for(m=1;m10;m+)w=20-2*m;c=30-m-w;printf(“man:%d woman:%
21、d child:%dn”,m,w,c);5模拟菜单功能。等待用户键入H或B或E(exit)。键入H时,输出“hello”;键入B时,输出“BYE BYE”;键入E时,退出程序。(注意程序只有当用户键入E时,才退出)自己编写的源程序:#includestdio.hmain()char ch;doprintf(please enter a word:);scanf(%c,&ch);switch(ch)case H:printf(hellon);break;case B:printf(BYE BYEn);break;while(ch!=E);实验六一维数组的应用 实验目的1 使用一维数组进行程序设计
22、,体会数组与单个变量在使用上的异同;2 掌握数组元素排序的一般方法; 实验步骤进入编程环境;按照题目要求编写程序,自行调试使程序可以正确运行,按照实验指导教师的要求检查。 实验内容1. 程序改错。# include main ( ) int a3=1; int i; for(i=0;i3;i+)scanf (“%d”, &ai ); for ( i=1; i3; i+) a0=a0+ai;printf (“a0=%dn”, a0);21 求一个整型一维数组中的最大值和最小值。自己编写的源程序:#includestdio.hmain()int a10,max,min,i;for(i=0;i10;
23、i+)scanf(%d,&ai);max=a0;min=a0;for(i=0;imax)max=ai;if(aimin)min=ai;printf(max=%d min=%d,max,min);3任意输入一组整数,存入一个一维数组中,用冒泡法排序后,存放在原数组中,输出排序后的数组。自己编写的源程序:#include”stdio.h”main()int a10,i,j,m;for(i=0;i10;i+)scanf(“%d”,&ai);for(i=0;i10;i+)for(j=0;jaj+1)m=aj;aj=aj+1;aj+1=m;for(i=0;i10;i+)printf(“%d”,ai);4
24、随意输入字符串数组,调整其位置,使字母、符号、数字分别存放在一起,输出调整后的数组。自己编写的源程序:#include”stdio.h”main()char ch10,ch210,ch0;int i,j=0,k=9;for(i=0;i=A&chi=a&chi=0&chi=9)n=chi;chk=chi;k-5从键盘输入n个实数(n从键盘输入)将其存放到一个一维数组,按降序排列数组元素后,从键盘读入一个待插入的实数,将其插入到数组中合适的位置。例如:输入n=4,原数组为:5 4 3 1 插入:2.1插入后的数组为:5 4 3 2.1 1自己编写的源程序:#includestdio.hmain()
25、float a20,m,in;int i,j,N;printf(please input N:);scanf(%d,&N);printf(please input a:);for(i=0;iN;i+)scanf(%f,&ai);for(i=0;iN;i+)for(j=0;jN-1;j+)if(ajaj+1)m=aj;aj=aj+1;aj+1=m;printf(please input the number you want to insert:);scanf(%f,&in);for(i=0;iai)break;for(j=N+1;ji;j-)aj=aj-1;ai=in;for(i=0;iN+1
26、;i+)printf(%.2f ,ai);实验七多维数组的应用 实验目的使用多维数组进行程序设计,学习使用数组进行较为复杂的应用 实验步骤进入编程环境;按照题目要求编写程序,自行调试使程序可以正确运行,按照实验指导教师的要求检查。 实验内容1 现有数组a10和b10,数组a中的元素从键盘存入,计算数组a中相邻两元素的平均值,并放于数组b中,且以每行三个元素的格式输出b数组。请改正下列程序中的错误,以便得到正确的结果。输入数组a中数据格式为:1 62 73 84 95 10输出数组b中元素为:1.5 2.5 3.54.5 5.5 6.57.5 8.5 9.5程序:main()int a10,b1
27、0;int i;for(i=0;i5;i+)scanf(“%d,%d”,ai,ai+5);for(i=0;i10;i+)bi=(ai+ai+1)/2;for(i=0;ih+60*p-m+p-s;void SecToTime(long n,struct TimeTp *p)p-h=n/3600;p-m=n/60%60;p-s=n%60;void DiffTime(t1,t2,dt)struct TimeTp * pt1, *pt2,*dt;long n,n1,n2;n1=TimeToSec(pt1); n2=TimeToSec(pt2);n=n1-n2; if(n0) n=-n;SecToTim
28、e(n,dt);void main()printf(“Input time 1(h:m:s)=”);scanf(“%d:%d:%d”,&t1.h,&t1.m,&t1.s);printf(“Input time 2(h:m:s)=”);scanf(“%d:%d:%d”,&t2.h,&t2.m,&t2.s);DiffTime(&t1,&t2,&t);Printf(“Difference Time=%d:%d:%dn”,t.h,t.m,t.s);实验十二链表* 实验目的练习链表建立以及对它的各种操作 实验步骤进入编程环境;按照题目要求编写程序,自行调试使程序可以正确运行,按照实验指导教师的要求检查。 实验内容1 从键盘输入一