C语言程序设计》实验指导书.docx
- 文档编号:5672620
- 上传时间:2022-12-31
- 格式:DOCX
- 页数:11
- 大小:21.97KB
C语言程序设计》实验指导书.docx
《C语言程序设计》实验指导书.docx》由会员分享,可在线阅读,更多相关《C语言程序设计》实验指导书.docx(11页珍藏版)》请在冰豆网上搜索。
C语言程序设计》实验指导书
《计算机基础与程序设计》实验指导书
实验教学U标:
本课程实验教学的U标在于使学生能够掌握算法的基本概念,并根据算法编制程序,掌握调试程序的基本技巧,初步了解软件开发所要经历的阶段,为学生从事讣算机软件开发和数据处理丄作打下坚实的基础。
实验教学要求:
要求掌握数据类型的定义和使用;三种结构的程序设计;数组;函数;指针;结构体与共用体;文件操作等。
实验
(一)C语言的编程环境(TURBOC2.0)
一、目的和要求
1、熟悉C语言运行环境。
2、掌握C语言程序的书写格式和C语言程序的结构。
3、掌握C语言上机步骤,了解运行一个C程序的方法。
4、本实验可在学习完教材第一章后进行。
二、实验内容
1.启动TurboC
如果用户计算机系统已经安装了TurboC编译系统,则在DOS命令状态下键入命令tc。
进入TurboC集成环境后,首先在屏幕上显示TurboC主菜单窗口,如下图所示。
可以看出,在该窗口,有8个菜单条目。
每一个菜单的意义如下:
File处理文件(包括装入、存盘、选择、建立、换名写盘),目录操作(包括列表、改变工作目录),退出系统及调用DOS。
Edit建立、编辑源文件。
Run控制运行程序。
如果程序已经编译连接好,且Debug/SourceDebugging以及Option/Compiler/Codegeneration/OBJDebugInformation开关置为On,则可以用此菜单初始化调试阶段。
Compile编译并生成忖标程序与可执行文件。
Project允许说明程序中包含哪些文件的管理条目。
Options可以选择集成环境任选项(如存储模式、编译时的任选项、诊断及连接任选项)及定义宏;也可以记录IncludeOutput及Library文件U录,保存编译任选项和从配置文件加载任选。
Debug检查、改变变量的值,查找函数,程序运行时查看调用栈。
选择程序编译时是否在执行行代码中插入调试信息。
Break/Watch增加、删除、编辑监视表达式,及设置、清除、执行至断点。
特别要指出的是,除了Edit项外,每一个菜单乂有对应的子菜单。
而选择Edit项后,只是进入编辑器。
为了从主菜单中选择所需要的功能,可以用以下两种方式之一:
(1)按F10键后,可以看到屏幕上部主菜单中有反白显示,此时,利用左、右光标移动键(一与一)选择需要的菜单,然后按回车(Enter)键。
(2)直接按Alt+主菜单条目中的首字母(分别为F,E,R,C,P,0,D,B),此时就会
出现相应的子菜单。
例如,按Alt+F表示选择文件子菜单(File)。
当出现子菜单时,其中某个条目是高亮度的,此时可以利用上、下光标移动键(t与丨)
1
来移动该高亮度线,从而选择所需要的功能。
在菜单调用时,按Esc键后将直接返回到活动窗口。
2、有下面的C程序,LI的是想汁算山键盘输入的任意两个整数的积。
******ex1・c********,,
#include(stdio.h);
main()
scanf(u%x,%yM,&x,%y)
p=x+1
printf("Theproductis,p)
请调试上述程序。
3、编写一程序从键盘任意输入2个整数,输入最大值。
三、实验步骤
1、静态地检查上述第2个程序,改正程序中的错误。
2、在编辑状态下照原样键入上述第2个程序。
3、编译并运行上述第2个程序,记下所给出的出错信息。
4、按照事先静态检查后所改正的情况,进行纠错。
5、再编译执行纠错后的程序。
如还有错误,再编辑改正,直到不出现语法错误为止。
6、下面给出6组测试用例,你认为哪儿组较好?
为什么?
(1)0,00
(2)0,99
(3)20,50
(4)33000,20
(5)-5,-2
(6)-5,2
要测试出上述程序中所有错误,你认为应当用儿组测试用例?
四、分析与讨论
1、记下在调试过程中所发现的错误、系统给出的出错信息和对策。
分析讨论对策成功或失败的原因。
2、总结C程序的结构和书写规则。
实验
(二)数据类型、运算符和表达式
一、目的和要求
1、了解c语言中数据类型的意义。
2、理解常用运行符的意义。
掌握C语言表达式的运行规则。
二、实验内容和步骤
1、下面的程序试图汁算山键盘输入的任意两个整数的平均值:
nclude〈stdio.h>
main()
{
intx,y,a;
scanf(u%x,%y,&x,&y);
a=(x+y)/2;
printf("Theaverageis:
Ma);
}
调试无语法错误后,分别使用下列测试用例对上述程序进行测试:
⑴2,6
(2)1,3
(3)-2,-6
(4)-1,-3
(5)-2,6
(6)-1,3
(7)1,0
(8)1,6
(9)32800,33000
(10)-32800,33000
(1)、分析上述哪儿组测试用例较好?
通过测试,你发现程序有什么错误了吗?
若有错误,请指出错误原因。
(2)、操作符sizeof用以测试一个数据或类型所占用的存储空间的字节数。
请编写一个程序,测试各基本数据类型所占用的存储空间大小。
2、编写一个C语言程序,测试下列各表达式
i,j
i+1,j+1
i++,j++
++i,++j
++i+++++j++
要求在各表达式中i和j都分别有相同的初值。
在实验中注意下列问题:
(1)哪些表达式是错误的?
为什么?
(2)理解+,++,++i,i++的意义和优先级别。
3、编写一个程序,测试常用的十个运算符的优先顺序。
三、分析与讨论
如何正确地选用数据类型?
分析总结运算符的优先级。
实验(三)顺序程序结构程序设IT
一、目的和要求
1.进一步掌握c程序的编辑、编译、连接和运行的过程。
2.熟悉顺序结构的程序设汁方法。
3.熟练使用C的各种表达式。
4.熟练掌握输入、输出函数的使用。
二、实验内容
1.输入x,y,编写程序求z=x+|y的值。
(1)程序中用scanf函数输入x和y的值,请分析以下两个语句
scanf(“%f%f",x,y);
scanf(,&x,&y);
哪一个是正确的,分别运行之,分析程序运行结果。
如果scanf函数改为scanf("%f,%f”,&x,&y);应该怎样输入数据。
2.编耳输入三角形的三边长a、b、c,求三角形面积area的程序。
三、实验步骤与要求:
:
(1)输入前要加提示语句。
(2)输出结果前要有必要的文字说明。
(3)输入一组数据3,4,5,观察运算结果。
(4)输入另外一组数据3,4,&观察运算结果,分析这个运算结果是否有效。
四、问题讨论
小结上机各个环节所出现的错误及解决的办法。
实验(四)选择结构程序设计
一、目的和要求
1.进一步掌握关系表达式和逻辑表达式的使用。
2.熟悉选择结构程序设计。
3.熟练使用if语句进行程序设计。
4.使用switch语句实现多分枝选择结构。
二、实验内容和步骤
1.用scanf函数输入一个年份year,IT算这一年2月份的天数days,然后用输出函数printf输出days。
实验步骤与要求:
(1)有变量定义为整型。
(2)输入前要加提示语句。
(3)输出结果前要有必要的文字说明。
说明:
(1)闰年的条件是:
year能被4整除但不能被100整除,或者year能被400整除。
(2)如果year是闰年,则2月份的天数为29天,不是闰年则为28天。
2.编写程序,输入三角形三边d、b、c,判断a、b、c能否构成三角形,若不能则输出相应的信息,若能则判断组成的是等腰、等边、直角还是一般三角形。
实验步骤与要求:
(1)输入一组数据3,4,&观察程序运行结果,并与实验二中程序2做比较
(2)另外再输入儿组数据进行测试:
3,4,5
3,3,3
3,3,5
(3)如果程序有误,可采用“跟踪打印”的调试方法,确定错误的出处。
3.编写程序,输入奖金数a,计算并输出税率、应缴税款和实得奖金数。
奖金税率
a<5000.00
5000<10000.05
1000320000.08
20000<50000.10
5000^a0.15
实验步骤与要求:
(1)用辻语句编程,自变量和函数值均为双精度类型
(2)用scanf函数输入奖金数a,输出结果釆用以下形式:
&二具体值rate=税率值tax二应缴税款profit二实得奖金数
(3)分别输入沪280,512,1000,4250,5100,运行该程序
(4)用if'elseif语句和switch语句编程,其它同上。
[问题讨论]
对于多分枝选择结构何时使用if语句的嵌套,何时使用switch语句?
实验(五)循环结构程序设讣
一、实验目的
1.熟练掌握三种循环语句的应用。
2.熟练掌握循环结构的嵌套。
3.掌握break和continue语句的使用。
4.练习调试与修改程序。
二、实验内容和步骤
1.分别用wh订e语句、do-while语句编写程序,计算e~l+l/l!
+l/2!
+...+l/n!
实验步骤与要求:
(1)用单重循环编写程序
(2)使误差小于给定的£,设e=lE-5
(3)除了输出e以外,同时还要输出总的项数n
2.如果一个数恰好等于它的所有因子(包括1但不包括自身)之和,则称之为"完数”。
例如6的因子是1,2,3,且6二1+2+3,因此6是完数。
编写程序找出1000
之内的所有完数及这些完数的和。
实验步骤与要求:
(1)要求使用for循环
(2)输出形式为:
完数1+完数2...二和值
算法说明:
(1)sum二0,m二2
(2)当m<=1000时,反复执行(2.1)(2.2)(2.3)(2.4),否则转(3)
(2.l)k=m/2,n二0,j二1
(2.2)当j<=k时,反复执行(2.2.1)(2.2.2),否则转(2.3)
(2.2.1)ifJ是m的因子则执行n二n+j
(2.2.2)j++
(2.3)ifm=n则输出完数m,sum二sum+m
(2.4)m++
⑶输出m值
3.输入并运行下面的程序,观察程序的运行结果。
#include"stdio.h"
main()
{intn;
while
(1)
{printf("Enteranumber:
,z);
scanf(”%d",&n);
辻(n%2=l)
{printf(,ZIsaid");
continue;}
break;
}
printf("Thanks.Ineededthat!
");
}
4.求梅森尼数:
指为素数的数n,求0~21间的梅森尼数。
5.绝对素数:
一个素数,经过任意次调换位,还是素数,例如:
13(31),求2位的所有绝对素数。
6.S=sqrt(ln(l)+ln
(2)++ln(n))n=40,求S
三、内容讨论
1.小结三种形式的循环使用的区别。
2.小结循环嵌套的规定和应用
一、目的与要求
1.理解和掌握多模块的程序设计与调试的方法。
2.掌握函数的定义和调用的方法。
二、实验内容与步骤
1、上机调试下面的程序,记录系统给出的出错信息,并指出出错原因。
main()
{
int,y;
printf(d\n",sum(x+y));
intsum(a,b)
{
inta,b;
return(a+b);
}
}
2、编写一个函数,判断一个数是不是素数。
在主函数中输入一个整数,输出是否是素数的信息。
实验步骤与要求:
(1)编写一个函数prime(n),返回给定整数n是否为素数。
(2)编写一个主函数,输入一个整数,调用
(1)中的函数,判断此整数是否为素数,并输出结果。
(3)对于属于多函数程序,可以采用每个函数分别进行编辑、编译的方法,然后再连接、运行。
如
果编译有错时,可分别修改,这样便于调试。
实验2和实验3也可以使用这样的调试方法。
3、用梯形法求函数的定积分。
实验步骤与要求:
(1)编制一个函数sab(a,b,n),其功能是求函数f(x)在[d,b]上的定积分,其中n为区间[a,b]的等
分数。
要求该函数在一个独立的文件中。
(2)编制一个主函数以及计算被积函数值的函数f(x),在主函数中调用
(1)中的函数计算并输出下列
积分值。
要求主函数与函数f(x)在同一个文件中。
(3)编制另一个主函数以及汁算被积函数值的函数f(x),在主函数中调用
(1)中的函数计算并输出下
列积分值。
要求主函数与函数f(x)在同一个文件中。
说明:
用梯形法求定积分,梯形公式为
s二h[f(a)+f(b)]/2+hf(a+kh)其中,h二(b~a)/n
三、分析讨论
1.小结函数的定义及调用方法。
2.小结函数中形参和实参的结合规则。
3.编写和调试包含多模块的程序时,容易出现什么样的错误?
根据自己的实践总结一下。
一、目的和要求
1.掌握指针变量的定义与引用。
2.熟练使用函数指针、数组指针、字符串指针编写应用程序。
。
二、实验内容和步骤
1、指出下面程序错误的原因。
main()
{
intx=10,y=5,*px,*py;
px二py;
px=&x;
py二&y;
printf(u*px=%d,*py=%d,*px,*py);
2、写一函数,求一个字符串的长度。
实验步骤与要求:
(1)本部分习题要求全部用指针完成;
(2)在main函数中输入字符串,并输出其长度;
(3)本题不能使用strlen()函数;
方法说明:
在主函数中定义一个指向字符串的指针变量pstr,并将输入的字符串的首地址赋值给pstr,然后调用求字符串长度的函数strlenth(char*p),得到字符吊的长度。
在函数strlenth(char*p)中,判断*p是否为'\0',如果不为'\0',则进行len卄的操作,直到遇到'\0'为止。
然后返回len值。
求字符串长度的函数strlenth(char*p)算法如下:
⑴.定义intlen=O;
(2).当和!
二'\0'时,重复执行(2.1)(2.2),否则算法终止。
(2.1)len=len+l
(2.2)p++
(3).return(len)
3、编写一个函数,将数组中n个数按反序存放。
实验步骤与要求:
(1)在主函数中输入10个数,并输出排好序的数。
(2)编写函数invert()将10个数按反序存放。
4、设一个函数,调用它时,每次实现不同的功能:
(1)求两个数之和;
(2)求两个数之差;(3)求两个数之积。
实验步骤与要求:
(1)在主函数中输入2个数a,b,并输出a,b的和、差和乘积。
(2)分别编写函数add()、sub()、mul()it算两个数的和、差、积。
(3)编写函数process(),分别调用函数add()>sub()、mul()o
三、分析讨论
指针的正确使用方法,数组与指针的联系。
实验(八)结构体与共同体
一、目的和要求
1、掌握结构体类型方法以及结构体变量的定义和引用。
2、掌握指向结构体变量的指针变量的应用,特别是链表的应用。
3、掌握运算符”.”和”-〉”的应用。
4、共用体的概念和应用。
二、实验内容和步骤
1、有五个学生,每个学生的数据包括学号,姓名,三门课的成绩,从键盘输入五个学生的数据,要求打印出每个学生的平均成绩,以及最高分的学生的数据(包括学号,姓名,三门课的成绩,平均分数)。
实验步骤与要求:
用一个函数输入五个学生的数据;用一个函数求总平均分;用函数找出最高分学生数据,总平均分和最高分的学生的数据都在主函数中输出。
2、三个人围成一圈,从第一个人开始顺序报号1,2,3。
凡报到“3”者退出圈子,找出最后流在圈子中的人原来的序号。
3、建立一个链表,每个结点包括:
学号,姓名,性别,年龄。
输入一个年龄,如果链表中的结点所包含的年龄等于此年龄,则将此结点删去。
三、分析讨论
指针和结构体的结合使用方法,怎样处理链表
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言程序设计 实验 指导书