《高级语言程序设计32+16》实验指导书.docx
- 文档编号:23485351
- 上传时间:2023-05-17
- 格式:DOCX
- 页数:17
- 大小:36.38KB
《高级语言程序设计32+16》实验指导书.docx
《《高级语言程序设计32+16》实验指导书.docx》由会员分享,可在线阅读,更多相关《《高级语言程序设计32+16》实验指导书.docx(17页珍藏版)》请在冰豆网上搜索。
《高级语言程序设计32+16》实验指导书
高级语言程序设计
实验指导书
东北林业大学信息与计算机工程学院
计算机科学与技术
目录
1实验目的与要求…………………………………………………………………1
2实验环境…………………………………………………………………………1
3TurboC环境的程序开发步骤…………………………………………………2
4实验一般步骤……………………………………………………………………3
5实验时数……………………………………………………………………4
6实验内容和要求…………………………………………………………………4
实验一数据及顺序结构程序设计………………………………………………4
实验二选择结构程序设计…………………………………………………………5
实验三循环程序设计………………………………………………………………6
实验四数组的应用………………………………………………………………7
实验五函数的应用………………………………………………………………8
实验六指针、位运算的应用……………………………………………………9
实验七结构体和简单链表的使用………………………………………………10
实验八文件的应用………………………………………………………………12
1实验目的与要求
上机操作是本课程必不可少的实践环节,主要目的是锻炼和培养学生实际操作技能和解决实际问题的能力。
要求学生掌握C语言程序的设计、调试和运行方法,悉用C语言进行程序设计和调试的全过程,获得用高级语言解题的实际体会,加深对C语言本身的理解,得到程序设计方法和技巧的实际训练,从而使学生能真正利用C语言解决编程问题。
(1)加深对讲授内容的理解,尤其是一些语法规定,光靠课堂讲授,既枯燥无味又难以记住,但它们都很重要。
通过多次上机,就能自然地、熟练地掌握。
通过上机来掌握语法规则是行之有效的方法。
(2)熟悉所用的计算机系统的操作方法,也就是了解和熟悉C语言程序开发的环境。
一个程序必须在一定的外部环境下才能运行,所谓“环境”,就是指所用的计算机系统的硬件和软件条件。
使用者应该了解为了运行一个C程序,需要哪些必要的外部条件(例如硬件配置、软件配置),可以利用哪些系统的功能来帮助自已开发程序。
每一种计算机系统的功能和操作方法不完全相同,但只要熟练掌握一、二种计算机系统的使用,再遇到其它的系统时便会触类旁通,很快地学会。
(3)学会上机调试程序。
也就是善于发现程序中的错误,并且能很快地排除这些错误,使程序能正确运行。
经验丰富的人,当编译时出现"出错信息"时,能很快地判断出错误所在,并改正之。
而缺乏经验的人即便在明确的出错提示下也往往找不出错误而求救于别人。
计算机技术是实践性很强的技术,要求从事这一领域的人不仅能了解和熟悉有关理论和方法,还要求自己动手实现。
对程序设计来说,要求会编程序并上机调试通过。
因此调试程序本身是程序设计课程的一个重要的内容和基本要求,应给予充分的重湘。
调试程序的经验固然可以借鉴他人的现成经验,但更重要的是通过自己的直接实践来累积,而且有些经验是只能"会意"难以"言传"。
因此,在实验时干万不要在程序通过后就认为万事大吉、完成任务了,而应当在已通过的程序基础上作一些改动(例如修改一些参数、增加程序一些功能、改变输入数据的方法等),再进行编译、连接和运行。
甚至于"自设障碍。
,即把正确的程序改为有错的(例如用scanf函数输入变量时,漏写"&"符号;使数组下标出界;使整数溢出等),观察和分析所出现的情况。
这样的学习才会有真正的收获,是灵活主动地学习而不是呆板被动的学习。
2实验环境
(1)计算机的硬件配置
PC系列微机,包括286、386、486、奔腾及各种兼容机,要求内存为64M以上,一个硬盘驱动器和一个软盘驱动器。
80列字符监视器。
配备鼠标器。
(2)计算机的软件配置
DOS6.22或Windows98、Windowsxp、Windows2000。
C语言的集成开发环境TurboCV3.0。
3TurboC环境的程序开发步骤
(1)调用TurboC程序只需打入:
tc
屏幕顶部出现一排“命令”行菜单,如图1所示。
FILEEdITRUNCOMPILEPROJECTOPTIONSDEBUG
图1TurboC命令行菜单
用键盘上的“←”和“→”键来移动屏幕上的光标,光标指到哪一个命令字时,按回车键就表示执行该命令。
开始时,光标指向“FILE”,表示对文件进行输入输出。
按回车键,屏幕上“FILE”下面出现一个窗口,见图2所示。
它是一个子菜单,提供多项选择。
用“↓”键或“↑”将光标移到“LOAD”或“New”处,按回车键。
表示要输入源程序。
屏幕又出现一个小窗口,见图3。
LoadF3
PickAlt-F3
New
SaveF2
Writeto
Directory
Changedir
OSshell
QuitAlt-x
图2文件操作菜单
LoadFileName
f.c
图3输入编辑文件名窗口
若指定文件名,可输入:
file1.c
如果原来不存在此文件名,则表示建立一个新文件。
如果已存在此文件,则将此文件调入并显示在屏幕上。
此时自动转为编辑(EDIT)状态。
(2)编辑源程序。
根据需要输入或修改源程序。
(3)编译源程序。
按“F9”键即可进行编译、连接,并在屏幕上显示有无错误和有几个错误。
当按任何一个键后,屏幕显示源程序,光标停留在出错之处。
在屏幕的下半部分显示出有错误的行和错误原因。
根据此信息修改源程序。
再按“F9”编译,如此反复进行到不出现错误为止。
(4)执行程序。
按“FlO”键,屏幕又出现命令行菜单,如图1所示。
用“→”和“←”键将光标移到“RUN”,按回车键,便执行已编译好的目标文件。
此时,屏幕上会显示出程序应输出的运行结果。
如果程序需要输入数据,则应在此时输入所需数据,然后接着执行程序,输出结果。
如果发现运行结果不对,要重新修改源程序,可以再按“FlO”键,并用“→”和“←”键使光标指到“EDIT”处,按回车键,即进入编辑状态,可以根据需要修改源程序,并重复上述2、3、4步,直到得到正确结果为止。
(5)可以用“Alt”和“X”键(同时按此二键),退出TurboC。
4实验一般步骤
(1)准备好实验所需的程序。
手编程序应书写整齐,并经人工检查无误后才能实验,以提高实验效率。
对程序中自己有疑问的地方,应作出记号,以便在上机时给予注意。
初学者切忌不编程序或抄别人程序去上机,应从一开始就养成严谨的科学作风。
(2)上机输入和调试自己所编的程序。
应该一人一组,独立实验。
上机过程中出现的问题,除了是系统的问题以外,一般应自已独立处理,不要轻易举手问教师。
尤其对“出错信息”,应善于自己分析判断。
这是学习调试程序的良好机会。
在使用键盘时,最好采用正确的指法击键,为今后正确使用键盘打下基础。
在程序调试通过后,打印输出程序清单和运行结果,在运行时要注意在输入不同数据时所得到的不同结果。
此时应运行几次,分别检查在不同情况下程序是否正确。
(3)实验结束后,提交实验报告,实验报告应包括以下内容:
1实验目的;
2实验内容;
③程序清单(手写或计算机打印出的程序清单);
④运行结果(必须是上面程序清单所对应打印输出的结果);
⑤结果分析:
对运行情况所作的分析以及本次调试程序所取得的经验。
如果程序未能通过,应分析其原因。
5实验时数
总实验时数不得少于16学时。
6实验内容和要求
目的要求:
本实验是计算机专业及理工科专业的《C语言程序设计》的配套实验指导书。
C语言程序设计上机实验不仅可以加强学生对理论知识的快速吸收,还有助于提高学生对实际问题抽象描述的理解能力;补充习题的安排遵循深入浅出、循序渐进的原则,从而突出C语言的实用性和灵活性。
实验一数据及顺序结构程序设计
一、目的要求:
1·掌握C语言数据类型,熟悉如何定义一个整型、字符型、实型变量,以及对它们赋值的方法,了解以上类型数据输出时所用的格式转换符;
2·了解在该系统上如何编辑、编译、连接和运行一个C程序;
3·通过运行简单的C程序,初步了解C源程序的特点。
4·学会使用C的有关算术运算符,以及包含这些运算符的表达式;特别是自加(++)和自减(--)运算符的使用;
5·掌握C语言中使用最多的一种语句--赋值语句的使用;
6·掌握数据的输入输出的方法,能正确使用各种格式转换符。
二、实验内容:
选作以下题目,编程序,然后上机调试运行,分析运行结果。
1.编写程序,把560分钟换算成用小时和分钟表示,然后进行输出。
2.编写程序,输入两个整数:
1500和350,求出它们的商数和余数并进行输出。
3.编写程序,读入三个双精度数,求它们的平均值并保留此平均值小数点后一位数,对小数点后第二位数进行四舍五入,最后输出结果。
4.编写程序,读入三个整数给a、b、c,然后交换它们中的数,把a中原来的值给b,把b中原来的值给c,把c中原来的值给a。
5.设圆半径r=1.5,圆柱高h=3,求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积。
用scanf输入数据,输出计算结果,输出时要求有文字说明,取小数点后二位数字。
请编程序。
6.编程序,用getchar函数读入两个字符给cl、c2,然后分别用putchar函数和printf函数输出这两个字符。
并思考以下问题,(l)变量cl、c2应定义为字符型或整型?
二者皆可?
(2)要求输出cl和c2值的ASCII码,应如何处理?
用putchar函数还是printf函数?
(3)整型变量与字符变量是否在任何情况下都可以互相代替?
如:
charc1,c2;
与intcl,c2;
是否无条件地等价?
编程序,输入输出现在的时间、今天的日期及星期几。
实验二选择结构程序设计
一、目的要求
1·了解C语言表示逻辑量的方法(以0代表"假",以l代表"真");
2·学会正确使用关系运算符和关系表达式,逻辑运算符和逻辑表达式;
3·熟练掌握if语句和switch语句;
二、实验内容
选作以下题目,编程序,然后上机调试运行,分析运行结果。
1.输入三个整数,打印出它是奇数还是偶数。
2.输入三个数,打印出最大者。
3.输入四个数,按降序打印输出。
4.编程,输入一位学生的生日和当前的日期,输出该生的实足年龄。
5.设计一个判断输入年份是否为闰年的C程序。
闰年的条件是:
(1)年数能被4整除而不能被100整除,则是闰年。
(2)年数能被400整除,也是闰年。
6.输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
7.编程实现以下函数,输入x的值,输出计算结果y。
实验三循环结构程序设计
一、目的要求
1·熟悉用while语句,do一while语句和for语句实现循环的方法;
2·掌握在程序设计中用循环的方法实现各种算法(如穷举、迭代、递推等)。
三、实验内容
1.打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各
位数字立方和等于该数本身。
2.一球从100米高度自由落下,每次落地后反跳回原高度的一半,再落下。
求它在第10次落地时,共经过多少米?
第10次反弹多高?
3.猴子吃桃问题。
猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。
第二天早上又将剩下的桃子吃掉一半,又多吃了一个。
以后每天早上都吃了前一天剩下的一半零一个。
到第10天早上想再吃时,见只剩一个桃子了。
求第一天共摘多少桃子。
4.两个乒乓球队进行比赛,各出三人。
甲队为A、B、C三人,乙队为X、Y、Z三人。
已抽签决定比赛名单。
有人向队员打听比赛的名单,A说他不和X比,C说他不和X、Z比,请编程序找出三对赛手的名单。
编程求1-3+5-7+…-99+101的值。
5.编程求以下分数序列的前20项之和。
е≈
6.编程求е的值。
7.编程打印以下图形:
*
***
*****
*******
*****
***
*
8.编程求解下列问题:
用1元纸币兑换1分、2分和5分的硬币,要求兑换硬币的总数为50枚,问共有多少种换法?
每种换法中各种硬币分别是多少?
实验四数组
一、目的要求
1·掌握一维数组和二维数组的定义、初始化、赋值和输入输出的方法;
2·掌握字符数组和字符串函数的使用;
3·掌握与数组有关的算法(特别是排序算法)。
二、实验内容
选作以下题目,编程序,然后上机调试运行。
1.用冒泡法对10个数排序(由小到大)。
10个整数用scanf函数输入。
2.用选择法对10个整数排序。
3.打印出以下的杨辉三角形(要求打印10行)
1
11
121
1331
14641
4.有15个数按由大到小顺序存放在一个数组中,输入一个数,要求用折半查找法找出该数是数组中第几个元素的值。
如果该数不在数组中,则打印出“无此数”。
5.有一篇文章,共有3行文字,每行有80个字符。
要求分别统计出其中英文大写字母、小写字母、数字、空格、以及其它字符的个数。
6.打印以下图案
*****
*****
*****
*****
*****
7.将两个字符串连接起来,不要用strcat函数。
8.找出一个二维数组的"鞍点",即该位置上的元素在该行上最大,在该刊上最小。
也可能没有鞍点。
实验五函 数
一、目的要求
1·掌握函数的定义和调用方法;
2·掌握函数实参与形参的对应关系,以及"值传递"的方式;
3·掌握函数的嵌套调用和递归调用的方法;
4·掌握全局变量和局部变量动态变量、静态变量的概念和使用方法;
5·掌握宏定义的方法;
6·掌握文件包含处理方法;
7·掌握条件编译的方法。
二、实验内容
选作以下题目,编程序,然后上机调试运行,分析运行结果。
1.写一个判素数的函数,在主函数输入一个整数,输出是否素数的信息。
2.用一个函数来实现将一行字符串中最长的单词输出。
此行字符串从主函数传递给该函数。
3.用递归法将一个整数转换成字符串。
例如,输入483,应输出字符串"483"。
n的位数不确定,可以是任意的整数。
4.求两个整数的最大公约数和最小公倍数,用一个函数求最大公约数。
用另一函数根据求出的最大公约数求最小公倍数。
5.用全局变量的方法。
将两个整数的最大公约数、最小公倍数都设为全局变量。
6.不用全局变量,两个整数在主函数中输入,并传送给函数l,求出的最大公约数返
回主函数,然后再与两个整数一起作为实参传递给函数扒以求出最小公倍数,返回到主函数输出最大公约数和最小公倍数。
7.写一函数,输入一个十六进制数,输出相应的十进制数。
8.定义一个带参数的宏,使两个参数的值互换。
在主函数中输入两个数作为使用宏的实参,输出已交换后的两个值。
说明:
在程序主函数使用宏时只能用两个实参,如SWAP(a,b),不能用三个实参。
9.设计输出实数的格式,包括:
(1)一行输出一个实数;
(2)一行内输出两个实数;(3)一行内输出三个实数。
实数用"%6·2f"格式输出。
用一个文件"print-format·h"包含以上用#define命令定义的格式。
在自己的文件
(自己命名)中用村include命令将%print-format,h"文件包含进来。
在程序中用scanf函数读入三个实数给fl、f2、f3。
然后用上面定义的三种格式分别输出①fl;②fl,f2;③fl,f2,f3。
10.用条件编译方法实现以下功能:
输入一行电报文字,可以任选两种输出,一为原文输出;一为将字母变成其下一字母(如‘a'变成‘b',…,‘z'变成‘a'。
其它字符不变)。
用#defjne命令来控制是否要译成密码。
例如:
#defineCHANGEl
则输出密码。
若
#defineCHANGEO
则不译成密码,按原码输出。
用条件编译方法来处理。
实验六指针、位运算
一、目的要求
1·掌握指针的概念,会定义和使用指针变量;
2·学会使用数组的指针和指向数组的指针变量;
3·学会使用字符串的指针和指向字符串的指针变量;
4·学会使用指向函数的指针变量;
5·了解指向指针的指针的概念及其使用方法;
6·掌握按位运算的概念和方法,学会使用位运算符1
7·学会通过位运算实现对某些位的操作。
二、实验内容
选作以下题目,编程序,然后上机调试运行,分析运行结果。
1.输入三个整数,按由小到大的顺序输出。
2.输入三个字符串,按由小到大的顺序输出。
3.输入10个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。
写三个函数:
a.输入10个整数;b.进行处理;c.输出10个整数。
4.有n个人围成一圈,顺序排号。
从第1个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。
5.编写一函数,求一个字符串的长度。
在main函数中输入字符串,并输出其长度。
6.输入一行文字,找出其中大写字母、小写字母、空格、数字以及其它字符各有多少?
7.编写一函数,将一个3X3的矩阵抟置。
8.编写一函数,实现两个字符串的比较。
即自已写一个strcmp函数。
9.编写一函数,对传送过来的三个数选出最大和最小数,并通过形参传回调用函数。
10.编写一个strlen函数,测出字符串的长度,函数返回值就是字符串的长度。
11.编写一个函数atoi,作用是将一个整型字符串转换成一个整数。
12.编写一个函数itoa,作用是将一个整数转换成一个字符串。
13.编写一个函数ftoa,作用是将一个实型数转换成一个字符串。
14.编写一个函数,找出一个大小为m×n的二维数组中最大值所在的行和列,以及该最大值。
15.有n个数,使前面的各数顺序向后移m个位置,最后m个数变成最前面m个数,编写一函数实现以上功能。
16.编写一个函数getbits,从一个16位的单元中取出某几位(即该几位保留原值,其余位为0)。
函数调用形式为:
getbits(value,nl,n2)
value为该16位(两个字节)中的数据值,nl为欲取出的起始位,n2为欲取出的结束位。
17.写一函数,对一个16位的二进制数取出它的奇数位(即从右边起第1、3、5、……、15位)。
18.编一函数用来实现左右循环移位。
函数名为move,调用方法为move(value,n)其中value为要循环位移的数,n为位移的位数。
如n<0表示为左移;n>0为右移。
如n=4,表示要右移4位;n=-3,为要左移3位。
19.设计一个函数,使给出一个数的原码,能得到该数的补码。
实验七结构体和简单链表的使用
一、目的要求
1.掌握结构体类型变量的定义和使用;
2·掌握结构体类型数组的概念和应用;
3·掌握链表的概念,初步学会对链表进行操作;
4·掌握共用体的概念与使用。
二、实验内容
选作以下题目,编程序,然后上机调试运行,分析运行结果。
1.定义一个结构体变量(包括年、月、日)。
计算该日在本年中是第几日。
2.编写一个函数days,实现上面的计算。
由主函数将年、月、日传递给主函数输出。
3.已有a、b两个链表,每个链表中的结点包括学号、成绩。
要求把两个链表合并,按学号升序排列。
4.有两个链表a和b,设结点中包含学号、姓名。
从a链表中删去与b链表中有相同学号的那些结点。
5.将一个链表按逆序排列,即将链头当链尾,链尾当链头。
6.设有以下结构类型说明:
structstud
{charnum[5],name[10];
ints[4];
doubleave;}
请编写:
(1)函数readrec把30名学生的学号、姓名、四项成绩以及平均分放在一个结构体数组中,学生的学号、姓名和四项成绩由键盘输入,然后计算出平均分放在结构体对应的域中。
(2)函数writerec输出30名学生的记录。
(3)main函数调用readrec函数和writerec函数,实现全部程序功能(注:
不允许使用全局变量,函数之间的数据全部使用参数传递)。
7.已知head指向一个带头结点的单向链表,链表中每个结点包含数据域(data)和指针域(next),数据域为整型。
请分别编写函数,在链表中查找数据域值最大的结点:
(1)由函数值返回找到的最大值
(2)由函数值返回最大值所在结点的地址值
8.建立一个结构体数组,存放一个学生的信息,包括学号、姓名、性别、出生日期、住址、邮编、电话号码。
分别编写下列函数:
(1)按学号顺序打印;
(2)按性别分类打印;
(3)打印同月出生的学生信息;
(4)打印来自同省的学生信息。
实验八文件基本使用
一、目的要求
1·掌握文件以及缓冲文件系统、文件指针的概念@
2·学会使用文件打开、关闭、读、写等文件操作函数。
3·学会用缓冲文件系统对文件进行简单的操作。
二、实验内容
选作以下题目,编程序,然后上机调试运行,分析运行结果。
1.从键盘输入一个字符串,将其中的小写字母全部转换成大写字母,然后输出到一个磁盘文件中保存。
输入的字符串以“!
”结束。
2.编程将两个文件合并成一个新的文件。
文件名由命令行给出。
3.编程实现文件的拷贝,文件名由命令行给出。
4.有5个学生,每个学生有3门课的成绩,从键盘输入以上数据(包括学生号,姓名,三门课成绩),计算出平均成绩,将原有数据和计算出的平均分数存放在磁盘文件中。
5.将上题文件中的学生数据,按平均分进行排序处理,将已排序的学生数据存入一个新文中。
6.将上题已排序的学生成绩文件进行插入处理。
插入一个学生的三门课成绩,程序先计算新插入学生的平均成绩,然后将它按成绩高低顺序插入,插入后建立一个新文件。
7.上题结果仍存入原有的文件而不另建立新文件。
8.有一磁盘文件“emploee”,内存放职工的数据。
每个职工的数据包括:
职工姓名、职工号、性别、年龄、住址、工资、健康状况、文化程度。
今要求将职工姓名、工资的信息单独抽出来另建一个简明的职工工资文件。
9.从上题的“职工工资文件”中删去一个职工的数据,再存回原文件。
10.从键盘输入若干行字符(每行长度不等),输入后把它们存储到一磁盘文件中。
再从该文件中读入这些数据,将其中小写字母转换成大写字母后在显示屏上输出。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 高级语言程序设计32+16 高级 语言程序设计 32 16 实验 指导书