《C语言程序设计》实验教学大纲.docx
《《C语言程序设计》实验教学大纲.docx》由会员分享,可在线阅读,更多相关《《C语言程序设计》实验教学大纲.docx(22页珍藏版)》请在冰豆网上搜索。
《C语言程序设计》实验教学大纲
s《C语言程序设计》实验教学大纲
学时课程总:
64 学分:
4
实验学时:
32 实验个数:
12实验学分:
1
课程性质:
必做适用专业:
计算机科学技术、网络工程、软件工程、电子商务、教育技术
教材及参考书:
《C语言程序设计与实践实验指导》,谢满得邵俊编著,机械工业出版社,2011年6月
大纲执笔人:
廖雪花 大纲审定人:
一、实验课的性质与任务
C语言程序设计实验是面向计算机相关专业学生开设的《C语言程序设计》实验课,是配合《C语言程序设计》课程而开设的实践性教育环节。
本课程的主要任务是让学生充分掌握C语言程序设计的基本概念、各种数据类型的使用技巧、模块化程序设计的方法等。
C语言程序设计实验对课程中所涉及的知识进行验证,同时也是学生很好地学习课程的辅助手段。
通过C语言上机实验的教学活动,使学生真正全面掌握C语言的基础知识,培养和提高学生的程序开发能力。
二、实验课程目的与要求
1.实验目的
通过实验课程的学习实践,加深学生对所学的基本概念、基础理论和知识的理解,熟悉使用VisualC++6.0集成环境进行C语言的编写、编译与调试。
同时,通过项目开发全过程的全方位指导,从需求分析、算法设计到程序编写和过程调试,以项目实训的形式引导和帮助学生解决实际问题,提高学生解决具体问题的能力,以及培养学生用多函数、多文件组织程序的思维习惯,为今后的后继课程学习和实际工作打下良好基础。
2.实验要求
(1)掌握C语言程序的基本格式,了解C程序的开发过程和C语言中的一些常用概念。
(2)掌握常量和五种基本数据类型变量的使用。
(3)掌握C表达式和运算符的正确使用,熟练掌握数据输入、输出函数。
(4)掌握条件转移语句if-else和选择分支语句switch;掌握三种程序跳转的方法,即break语句、continue语句、return语句。
(5)掌握循环语句(for语句;do-while语句;while语句)的正确使用,认真体会应该如何组织循环。
(6)掌握数组的定义、赋值,一维数组与二维数组的使用。
(7)掌握函数的定义、函数的调用以及函数的类型说明。
(8)掌握局部变量、全局变量的定义和使用。
(9)掌握指针的基本概念以及数组与指针、指向指针的指针的基本用法。
(10)掌握结构体变量的定义,引用结构体中成员的方法,应用结构数组解决实际问题;共用体的概念,引用共用体中成员的方法。
(11)掌握链表的类型定义及其基本操作。
(12)掌握文件的打开、读写及关闭,并能运用文件提高编程的效率。
(13)理解项目式程序开发的过程。
三、实验项目及内容提要
《C语言程序设计》实验课程(1107142019)
序号
实验项目编号
实验名称
学时
必做
选做
学分数
实验类型
内容提要
基本操作
验证
综合
设计
1
实验一
熟悉C语言上机环境
2
√
1
√
1、熟悉C语言的运行环境,了解和使用VisualC++(简称VC++)集成开发环境。
2、掌握C语言程序的书写格式和C语言程序的结构。
3、掌握C语言上机步骤,了解运行一个C程序的方法。
2
实验二
数据类型和表达式
2
√
1
√
1、了解C语言中数据类型的意义。
2、理解常用运算符的意义。
3、掌握C语言表达式的运行规则
3
实验三
分支结构程序设计
2
√
1
√
了解和掌握分支语句的使用,包括if语句的各种形式以及switch语句
4
实验四
循环结构程序设计
4
√
2
√
√
1、使用循环语句完成累乘、图像输出的程序编写。
2、掌握较复杂结构程序的编写。
3、掌握程序调试的方法
5
实验五
数组程序设计
4
√
2
√
√
掌握一维和二维数组的使用技巧
6
实验六
函数
6
√
2
√
√
1、学习函数的编程思想,编写一个包括3~4个函数的程序。
2、掌握函数中参数传递的两种方式和函数的相互调用
7
实验七
指针
6
√
2
√
√
1、用指针作为函数参数完成字符串的传递。
2、掌握函数中参数传递的两种方式
8
实验八
字符串与指针
2
√
1
√
√
1、掌握用指针进行函数参数传递的方法。
2、掌握指针数组和二维数组间的关系以及进行参数传递时的写法
9
实验九
结构体
2
√
1
√
√
1、掌握结构体的定义、数据输入方法。
2、掌握结构体成员变量的两种访问方法。
3、掌握编写程序完成单链表的建立和查询方法
10
实验十
文件操作
2
√
1
√
√
1、掌握文件的打开和关闭。
2、精通文件的读写操作。
3、了解文件的定位操作及文件的检测函数。
4、掌握文件的应用
四、实验内容安排:
实验一熟悉C语言上机环境实验
(基本操作实验2学时)
1、目的要求:
(1)熟悉C语言的运行环境,了解和使用VisualC++(简称VC++)集成开发环境。
(2)熟悉VC++环境的基本命令和功能键。
(3)熟悉常用的功能菜单命令。
(4)掌握C语言程序的书写格式和C语言程序的结构。
(5)掌握C语言上机步骤,了解运行一个C程序的方法。
(6)完成实验报告。
2、实验内容(参考实验指导书):
(1)熟悉VC++的实验环境。
(2)完成一个输出“helloworld!
”的程序,熟悉VC++中有关的编辑和编译命令的使用方法。
(3)完成3个数据的输入、求和并输出计算结果的程序。
(4)在屏幕上输出如下图形:
A
BBB
CCCCC
实验二数据类型和表达式实验
(验证性实验2学时)
1、目的要求:
(1)了解C语言中数据类型的意义。
(2)理解常用运算符的意义。
(3)掌握C语言表达式的运行规则。
(4)编写实验报告。
2、实验内容(参考实验指导书):
(1)计算由键盘输入的任何两个双精度数据的平均值。
(2)写一个输入7个数据的程序,把输入的数据代入a+b*(c–d)/e*f–g表达式进行运算。
(3)编写一个C语言程序,测试下列各表达式:
i,j
i+1,j+1
i++,j++
++i,++j
i+++++j
(4)输入存款金额money,存期year和年利率rate,根据下列公式计算存款到期时的利息interest(税前),输出时保留2位小数。
interest=money(1+rate)year-money
(5)输入华氏温度,输出对应的摄氏温度。
计算公式如下:
c=5*(f-32)/9
其中,c表示摄氏温度,f表示华氏温度。
实验三分支结构程序设计实验
(验证性实验2学时)
1、目的要求:
(1)了解和掌握分支语句的使用,包括if语句的各种形式以及switch语句。
(2)编写实验报告。
2、实验内容(参考实验指导书):
(1)编写一个程序完成输入一个整数,输出它的符号。
(2)请编写居民应交水费,并提供各种测试数据。
居民应交水费y(元)与月用水量x(吨)的函数关系式如下:
0x<0
y=f(x)=4x/30≤x≤15
2.5x–10.5x>15
(3)请根据输入的学生成绩给出成绩等级的判断,判断规则如下:
如果输入的成绩大于等于90,则输出优秀;
如果输入的成绩小于90、大于等于80,则输出良好;
如果输入的成绩小于80、大于等于70,则输出中等;
如果输入的成绩小于70、大于等于60,则输出及格;
其他输出不及格。
(4)运输公司对用户计算运费。
路程(s)越远,每公里运费越低。
标准如下:
s=250km没有折扣
250km≤s<500km2%折扣
500km≤s<1000km5%折扣
1000km≤s<2000km8%折扣
2000km≤s<3000km10%折扣
3000km≤s15%折扣
设每公里每吨货物的基本运费为p,货物重为w,距离为s,折扣为d,则总运费的计算公式为:
f=p*w*s*(1–d)
请编程实现:
从键盘输入基本运费p,货物重w,距离s,计算输出用户最终需要支付的运费。
实验四循环结构程序设计实验
(验证性综合性实验4学时)
1、目的要求:
(1)使用循环语句完成累乘、图像输出的程序编写。
(2)掌握较复杂结构程序的编写。
(3)掌握程序调试的方法。
(4)编写实验报告。
2、实验内容(参考实验指导书):
(1)已知xyz+yzz=532,其中x、y、z都是数字(0~9),编写一个程序求出x、y、z分别代表什么数字。
(2)编写一个程序打印如下对称图形(行数由键盘输入1~9范围的值),例如下面是输入的数字4时的情形:
4444444
33333
222
1
222
33333
4444444
(3)学校有近千名学生,在操场上排队,5人一行余2人,7人一行余3人,3人一行余1人,编写一个程序求该校的学生人数。
(4)学校某班A、B、C、D四位同学中的一位做了好事不留名,表扬信来了之后,班主任问这四位是谁做了好事,四位回答如下:
A说:
不是我。
B说:
是C。
C说:
是D。
D说:
他胡说。
已知三个人说的是真话,一个人说的是假话。
请根据这些信息,找出做了好事的人。
实验五数组程序设计实验
(验证性综合性实验4学时)
1、目的要求:
(1)掌握一维和二维数组的使用技巧。
(2)编写实验报告。
2、实验内容(参考实验指导书):
(1)从键盘输入一个长度为N(比如10)的整型数组,而后将数组中小于零的元素移动到数组的前端,大于零的元素移到数组的后端,等于零的元素留在数组中间。
比如原来数组为:
2-5-89750-89093480,经过处理后的数组为:
-5-89-890007593482。
由于不要求数组有序,所以不允许用排序方法。
提示:
1)输入N个数据,构建数组。
2)按照要求确定数据的位置,需要注意循环条件的确定、0数据元素往中间推的实现过程以及数组处理的方向。
(2)设数组a的定义如下:
inta[20]={2,4,6,8,10,12,14,16};已存入数组中的数据值已经按由小到大的顺序存放,现从键盘输入一个数据,把它插入到数组中,要求插入新数据以后,数组数据仍然保持有序。
请编写一个程序实现上述功能。
提示:
1)定义整型数组并初始化。
2)从键盘输入一个数据。
3)将该数据插入到数组中,由于要保证插入的数组仍然有序,所以需要查找插入的位置。
4)输出插入数据以后的数组。
(3)写一个3x5矩阵的转置程序,输出其原矩阵的值和转置以后的结果。
提示:
1)定义一个二维数组及相关变量。
2)对二维数组赋值,可以由键盘输入,也可以通过其他方式赋值。
3)输出转置前的二维数组。
4)对二维数组中的值进行转置。
5)输出转置后的二维数组中的值。
(4)编程实现随机产生10个位于区间[100200]互不相等的整数,并将其按降序排序和输出。
实验六函数实验
(验证性综合性实验6学时)
1、目的要求:
(1)学习函数的编程思想,编写一个包括3~4个函数的程序。
(2)掌握函数中参数传递的两种方式和函数的相互调用。
(3)编写实验报告。
2、实验内容(参考实验指导书):
(1)写一个函数intdigit(intn,intk),它返回数n的从右向左的第k个十进数字值。
例如,函数调用digit(1234,2)将返回值3。
(2)写一个函数intisprime(intn),当n是质数时,函数返回非零值;当n是合数时,函数返回零值。
(3)写一个函数reverse(chars[]),将字符串s[]中的字符串倒序输出。
试分别用递归和非递归两种形式编写。
(4)写一个主函数输入测试数据(自己指定),并调用上述函数,检查函数功能的正确性。
(5)一个数如果从左到右和从右到左读,数字是相同的,则称这个数字为回文数,比如898、1221、15651都是回文数。
求:
既是回文数又是质数的5位十进制数有多少个?
要求:
回文判断和质数判断都需要通过子函数实现,输出的时候要求5个数字一行。
(5)在n个已排好序(设为从小到大)的数据(数或字符串)中查找某一个数据,如果找到了,就指出其在n个数中的位置;否则给出无该数据的信息。
请用递归的方法实现二分查找来实现这一查找过程。
提示:
采用二分法求解本问题的基本思路是:
设数列为a1,a2,…,an,被查找的数为x,则查找首先对am(m=(n+1)/2)进行,于是得到三种情形。
若x>am,则x只可能在区间[am+1,an]
若x若x=am,则am即为查找的数,求解结束。
从上面的分析发现,这个过程很适合用递归来实现。
实验七指针实验
(验证性综合性实验6学时)
1、目的要求:
(1)用指针作为函数参数完成字符串的传递。
(2)掌握函数中参数传递的两种方式。
(3)编写实验报告。
2、实验内容(参考实验指导书):
(1)编写一个函数char*delk(char*sp),把sp所指向的字符串中所有的“$”字符删除,并把处理后的字符串指针返回。
(2)写一个函数intfind(char*s1,char*s2),函数find的功能是查找串s1中是否包含指定的词(s2指向),如果存在则返回第1次出现的位置,否则返回-1.约定串中的词由1个或1个以上的空格符分隔。
(3)编程实现将输入的十进制整数n通过函数DtoH转换为十六进制数,并将转换结果以字符形式输出。
例如:
输入十进制数79,将输出十六进制数4f。
(4)定义函数voidMerge(inta[],intn,intb[],intm),参数a、b为一维数组,数组中的数据为升序排列,n和m分别为它们的元素个数。
函数的功能为:
将数组a和b合并为一个数组,合并后的结果存放于数组a中,要求合并后的数组a仍旧为升序排列。
请编程实现,并编写main函数对其测试。
实验八字符串与指针实验
(验证性综合性实验2学时)
1、目的要求:
(1)掌握用指针进行函数参数传递的方法。
(2)掌握指针数组和二维数组间的关系以及进行参数传递时的写法。
(3)编写实验报告。
2、实验内容(参考实验指导书):
(1)编写一个书名排序程序,输入10个书名存入一个二维数组,用函数voidsortstring(char*name[],intn)实现它们的字典顺序。
(2)编写函数voidsearch(char*s1,char*s2,char*s3)。
函数search()从已知的两个字符串s1与s2中找出它们都包含的最长的单词放入字符串s3,约定字符串中只有小写字母和空格字符,单词用1个或1个以上空格分隔。
(3)编写一个主函数,测试上述两个函数的正确性。
(4)输入一个字符串,内有数字和非数字字符,例如:
A123cdf456.78cpc876.9er849.1
将其中连续的数字作为一个实数,依次存放到一数组a中。
例如123存放在a[0],456.78存放在a[2],依次类推,统计共有多少个数,并输出这些数。
实验九结构体实验
(验证性综合性实验2学时)
1、目的要求:
(1)掌握结构体的定义、数据输入方法。
(2)掌握结构体成员变量的两种访问方法。
(3)掌握编写程序完成单链表的建立和查询方法。
(4)编写实验报告。
2、实验内容(参考实验指导书):
(1)编写一个建立单链表的函数,设链表的表元素信息包含学号、姓名、一门课的成绩;写一个按照学号查学生成绩的函数;最后写一个主函数,它先调用建立函数,再调用查询函数,显示查到学生的姓名和成绩。
(2)编一程序,能把从终端输入的一个字符串中的小写字母全部转换成大写字母,要求输入的字符的同时指定该字符在字符串中的序号(即字符在字符串中的顺序号,例如第1个字符的序号为1),字符和序号存入结构体中,字符串存入结构体数组中,然后显示结构体数组的结果(用字符!
表示输入字符串的结束)。
(3)在本实验的实验内容1的基础上,实现在链表元素index之前插入元素的操作Insert(structnode*head,intindex)和删除指定位置元素的操作Delete(structnode*head,intindex),并编写主函数测试。
实验十文件操作实验
(验证性综合性实验2学时)
1、目的要求:
(1)掌握文件的打开和关闭。
(2)精通文件的读写操作。
(3)了解文件的定位操作及文件的检测函数。
(4)掌握文件的应用。
(5)编写实验报告。
2、实验内容(参考实验指导书):
(1)编写一个程序,读取磁盘上的一个C语言程序文件,要求加上注释后再存放到磁盘上,文件可以另外命名。
(2)编写一个程序,将文件old.txt从第10行起存放到new.txt中。
(3)有一个整数文件,读取其中的数值,如果为奇数加1,如果为偶数减1,然后存放到新的文件中去。
(4)二进制文件d.dat中包含若干个整数,用键盘输入一个整数,请在文件中找出该整数的下一个数并输出。
若找不到则输出“NotFound!
”。
五、实验报告的格式
实验名称
(一)实验目的和要求:
(二)实验内容:
每个实验内容含以下五部分:
1、算法描述:
2、源代码和说明:
3、测试数据:
4、运行结果:
5、问题及解决方法:
(三)实验总结:
具体可参考实验指导书P15~P19页举例。
六、考核方式、方法及实验成绩评定方法
1、考核方式、方法:
C语言程序设计实验课成绩单独按五级记分。
凡实验成绩不及格者,该门课程必须重修。
学生的实验成绩应以平时考查为主,一般应占总分的20%,其平时成绩又要以实验实际操作的优劣作为主要考核依据。
在学期末或课程结束时,为复习和巩固实验教学内容,进一步对学生作补充了解,也可举行一定的实验操作考试,但无论采取何种方式进行考核,都必须按实验课的目的要求,以实际实验工作能力的强弱作为评定成绩的主要依据。
因此,最终的集中考试结果只能占总成绩的20%。
2、实验成绩评定方法:
评定各级成绩时,可参考以下标准:
(一)优秀(很好)
能正确理解实验的目的要求,能独立、顺利而正确地完成各项实验操作,会分析和处理实验中遇到的问题,能较好地完成实验报告及其它各项实验作业,有一定设计能力。
有良好的实验工作作风和习惯。
(二)良好(较好)
能理解实验的目的和要求,能认真而正确地完成各项实验操作,能分析和处理实验中遇到的一些问题。
能掌握所学实验技能的绝大部分,对难点较大的操作完成有困难。
能一般完成实验报告和其它实验作业。
有较好的实验习惯和工作作风。
(三)中等(一般)
能粗浅理解实验目的要求,能认真努力进行各项实验操作,但技巧较差。
能分析和处理实验中一些较容易的问题,掌握实验技能的大部分。
有30%掌握得不好。
能一般完成各项实验作业和报告。
处理问题缺乏条理。
工作作风较好。
能认真遵守各项规章制度。
学习努力。
(四)及格(较差)
只能机械地了解实验内容,能一般性地按实验步骤完成实验操作,能完成60%所学的实验技能,有些虽作但不准确。
遇到问题常常缺乏解决的办法,在别人启发下能作些简单处理,但效果不理想。
能一般完成实验报告,能认真遵守实验室各项规章制度,工作中有小的习惯性毛病。
(五)不及格(很差)
盲目地操作,只掌握50%的所学实验技能。
有些实验虽能作,但一般效果不好,操作不正确。
工作忙乱无条理。
一般能遵守实验室规章制度,但常有小的错误。
实验报告较多的时候有结果,遇到问题时说不明原因,在教师指导下也较难完成各项实验作业。
或有些小聪明但不努力,不求上进。
七、实验主要应配套仪器设备及台(套)数(以一个实验教学班60人为标准)
序号
仪器设备名称
数量
备注
1
计算机
60台
2
C语言编译环境软件
1套
八、主要教材及参考书
1、《C语言程序设计与实践实验指导》,谢满得邵俊编著,机械工业出版社,2011年6月。
2、《标准C程序设计(第四版)》,(印)EBalagurusamy著,金名李丹程刘莹那俊等译,清华大学出版社,2008年6月。
3、《CHowtoProgram(4thed.)》,HMDeitel&PJDeitel,清华大学出版社,2002。
4、《C程序设计习题解答与上机指导》,谭浩强,清华大学出版社,2003。
5、《C语言程序设计习题集》,陈朔鹰等,人民邮电出版社,2003。
6、《C程序设计语言》(美)BrianW.Kerninghan著,徐宝文译,机械工业出版社,2003。
7、《C程序设计教程》(美)H.MDeilel著,薛万鹏译,机械工业出版社,2003。