学时课程总: 学分:4
实验学时:24 实验个数:9 实验学分:
课程性质:必做 适用专业: 计算机科学技术、网络工程、软件工程、电子商务、教育技术
教材及参考书:《C语言程序设计与实践实验指导》,谢满得 邵俊 编着,机械工业出版社,2014年1月
大纲执笔人:廖雪花 大纲审定人:
一、实验课的性质与任务
C语言程序设计实验是面向计算机相关专业学生开设的《C语言程序设计》实验课,是配合《C语言程序设计》课程而开设的实践性教育环节。本课程的主要任务是让学生充分掌握C语言程序设计的基本概念、各种数据类型的使用技巧、模块化程序设计的方法等。C语言程序设计实验对课程中所涉及的知识进行验证,同时也是学生很好地学习课程的辅助手段。通过C语言上机实验的教学活动,使学生真正全面掌握C语言的基础知识,培养和提高学生的程序开发能力。
二、实验课程目的与要求
1.实验目的
通过实验课程的学习实践,加深学生对所学的基本概念、基础理论和知识的理解,熟悉使用Visual C++ 集成环境进行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语言程序设计》实验课程 () 序实实验名称 学时 必选学实验类型 内容提要 号 验项目编号 做 做 分数 基本操作 1、了解C语言中数据类型的意义。 验证 综设合 计 实1 验一 数据类型和表达式 2 √ 1 √ 2、理解常用运算符的意义。 3、掌握C语言表达式的运行规则 实2 验二 了解和掌握分支语句分支结构程序设计 2 √ 1 √ 的使用,包括if语句的各种形式以及switch语句 1、使用循环语句完成累乘、图像输出的程序编写。 实3 验三 循环结构程序设计 2 √ 2 √ √ 2、掌握较复杂结构程序的编写。 3、掌握程序调试的方法 实4 验四 数组程序设计 4 √ 2 √ √ 掌握一维和二维数组的使用技巧 1、学习函数的编程思实5 验五 函数 想,编写一个包括3~45 √ 2 √ √ 个函数的程序。 2、掌握函数中参数传递的两种方式和函数的相互调用 1、用指针作为函数参实6 验六 指针 数完成字符串的传3 √ 2 √ √ 递。 2、掌握函数中参数传递的两种方式 1、掌握用指针进行函实7 验七 数参数传递的方法。 字符串与指针 2 √ 1 √ √ 2、掌握指针数组和二维数组间的关系以及进行参数传递时的写法 8 实结构体 2 √ 1 √ √ 1、掌握结构体的定验八 义、数据输入方法。 2、掌握结构体成员变量的两种访问方法。 3、掌握编写程序完成单链表的建立和查询方法 1、掌握文件的打开和关闭。 2、精通文件的读写操实9 验九 文件操作 2 √ 1 √ √ 作。 3、了解文件的定位操作及文件的检测函数。 4、掌握文件的应用 四、实验内容安排: 实验一 数据类型和表达式 实验 ( 验证性 实验 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) c = 5 * ( f - 32) / 9 其中,c表示摄氏温度,f表示华氏温度。
实验二 分支结构程序设计 实验 ( 验证性 实验 2学时)
1、目的要求:
(1)了解和掌握分支语句的使用,包括if语句的各种形式以及switch语句。 (2)编写实验报告。
2、实验内容(参考实验指导书):
year
- money
(5)输入华氏温度,输出对应的摄氏温度。计算公式如下:
(1)编写一个程序完成输入一个整数,输出它的符号。 (2)请编写居民应交水费,并提供各种测试数据。
居民应交水费y(元)与月用水量x(吨)的函数关系式如下: 0 x < 0 y = f(x) = 4x / 3 0 ≤ x ≤ 15 – x > 15
(3)请根据输入的学生成绩给出成绩等级的判断,判断规则如下: 如果输入的成绩大于等于90,则输出优秀;
如果输入的成绩小于90、大于等于80,则输出良好; 如果输入的成绩小于80、大于等于70,则输出中等; 如果输入的成绩小于70、大于等于60,则输出及格; 其他输出不及格。
(4)运输公司对用户计算运费。路程(s)越远,每公里运费越低。标准如下: s <250km 没有折扣 250km ≤ s < 500km 2%折扣 500km ≤ s < 1000km 5%折扣 1000km ≤ s < 2000km 8%折扣 2000km ≤ s < 3000km 10%折扣 3000km ≤ s 15%折扣
设每公里每吨货物的基本运费为p,货物重为w,距离为s,折扣为d,则总运费的计算公式为: f = p * w * s * ( 1 – d )
请编程实现:从键盘输入基本运费p,货物重w,距离s,计算输出用户最终需要支付的运费。
实验三 循环结构程序设计 实验 ( 验证性 综合性 实验 2学时)
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 - 75 0 - 0 93 48 0,经过处理后的数组为:-5 - - 0 0 0 75 93 48 2。由于不要求数组有序,所以不允许用排序方法。
提示:
1)输入N个数据,构建数组。
2)按照要求确定数据的位置,需要注意循环条件的确定、0数据元素往中间推的实现过程以及数组处理的方向。
(2)设数组a的定义如下:
int a[20] = {2,4,6,8,10,12,14,16}; 已存入数组中的数据值已经按由小到大的顺序存放,现从键盘输入一个数据,把它插入到数组中,要求插入新数据以后,数组数据仍然保持有序。请编写一个程序实现上述功能。
提示:
1)定义整型数组并初始化。 2)从键盘输入一个数据。
3)将该数据插入到数组中,由于要保证插入的数组仍然有序,所以需要查找插入的位置。 4)输出插入数据以后的数组。
(3)写一个3 x 5矩阵的转置程序,输出其原矩阵的值和转置以后的结果。
提示:
1)定义一个二维数组及相关变量。
2)对二维数组赋值,可以由键盘输入,也可以通过其他方式赋值。 3)输出转置前的二维数组。 4)对二维数组中的值进行转置。 5)输出转置后的二维数组中的值。
(4)编程实现随机产生10个位于区间[100 200]互不相等的整数,并将其按降序排序和输出。
实验五 函数 实验
( 验证性 综合性 实验 5学时)
1、目的要求:
(1)学习函数的编程思想,编写一个包括3~4个函数的程序。 (2)掌握函数中参数传递的两种方式和函数的相互调用。 (3)编写实验报告。
2、实验内容(参考实验指导书):
(1)写一个函数int digit( int n , int k ),它返回数n的从右向左的第k个十进数字值。例如,函数调用digit(1234,2)将返回值3。
(2)写一个函数int isprime(int n),当n是质数时,函数返回非零值;当n是合数时,函数返回零值。
(3)写一个函数reverse( char s[]),将字符串s[]中的字符串倒序输出。试分别用递归和非递归两种形式编写。
(4)写一个主函数输入测试数据(自己指定),并调用上述函数,检查函数功能的正确性。 (5)一个数如果从左到右和从右到左读,数字是相同的,则称这个数字为回文数,比如8、1221、15651都是回文数。求:既是回文数又是质数的5位十进制数有多少个?要求:回文判断和质数判断都需要通过子函数实现,输出的时候要求5个数字一行。
(5)在n个已排好序(设为从小到大)的数据(数或字符串)中查找某一个数据,如果找到了,就指出其在n个数中的位置;否则给出无该数据的信息。请用递归的方法实现二分查找来实现这一查找过程。
提示:采用二分法求解本问题的基本思路是:设数列为a1,a2,…,an,被查找的数为x,则查找首先对am(m = ( n + 1 ) / 2)进行,于是得到三种情形。
若x > am,则x只可能在区间[am + 1 , an] 若x < am,则x只可能在区间[a1 , am - 1] 若x = am,则am即为查找的数,求解结束。 从上面的分析发现,这个过程很适合用递归来实现。
实验六 指针 实验
( 验证性 综合性 实验 4学时)
1、目的要求:
(1)用指针作为函数参数完成字符串的传递。 (2)掌握函数中参数传递的两种方式。 (3)编写实验报告。
2、实验内容(参考实验指导书):
(1)编写一个函数char *delk( char *sp),把sp所指向的字符串中所有的“$”字符删除,并把处理后的字符串指针返回。
(2)写一个函数int find( char *s1, char *s2),函数find的功能是查找串s1中是否包含指定的词(s2指向),如果存在则返回第1次出现的位置,否则返回-1.约定串中的词由1个或1个以上的空格符分隔。
(3)编程实现将输入的十进制整数n通过函数DtoH转换为十六进制数,并将转换结果以字符形式输出。例如:输入十进制数79,将输出十六进制数4f。
(4)定义函数void Merge(int a[], int n, int b[], int m),参数a、b为一维数组,数组中的数据为升序排列,n和m分别为它们的元素个数。函数的功能为:将数组a和b合并为一个数组,合并后的结果存放于数组a中,要求合并后的数组a仍旧为升序排列。请编程实现,并编写main函数对其测试。
实验七 字符串与指针 实验 ( 验证性 综合性 实验 2学时)
1、目的要求:
(1)掌握用指针进行函数参数传递的方法。
(2)掌握指针数组和二维数组间的关系以及进行参数传递时的写法。 (3)编写实验报告。
2、实验内容(参考实验指导书):
(1)编写一个书名排序程序,输入10个书名存入一个二维数组,用函数void sortstring( char *name[] , int n)实现它们的字典顺序。
(2)编写函数void search( char *s1, char *s2, char *s3)。函数search()从已知的两个字符串s1与s2中找出它们都包含的最长的单词放入字符串s3,约定字符串中只有小写字母和空格字符,单词用1个或1个以上空格分隔。
(3)编写一个主函数,测试上述两个函数的正确性。 (4)输入一个字符串,内有数字和非数字字符,例如:
将其中连续的数字作为一个实数,依次存放到一数组a中。例如123存放在a[0],存放在a[2],依次类推,统计共有多少个数,并输出这些数。
实验八 结构体 实验
( 验证性 综合性 实验 2学时)
1、目的要求:
(1)掌握结构体的定义、数据输入方法。 (2)掌握结构体成员变量的两种访问方法。 (3)掌握编写程序完成单链表的建立和查询方法。 (4)编写实验报告。
2、实验内容(参考实验指导书):
(1)编写一个建立单链表的函数,设链表的表元素信息包含学号、姓名、一门课的成绩;写一个按照学号查学生成绩的函数;最后写一个主函数,它先调用建立函数,再调用查询函数,显示查到学生的姓名和成绩。
(2)编一程序,能把从终端输入的一个字符串中的小写字母全部转换成大写字母,要求输入的字符的同时指定该字符在字符串中的序号(即字符在字符串中的顺序号,例如第1个字符的序号为1),字符和序号存入结构体中,字符串存入结构体数组中,然后显示结构体数组的结果(用字符!表示输入字符串的结束)。
(3)在本实验的实验内容1的基础上,实现在链表元素index之前插入元素的操作Insert( struct node *head, int index)和删除指定位置元素的操作Delete( struct node * head, int index),并编写主函数测试。
实验九 文件操作 实验
( 验证性 综合性 实验 1学时)
1、目的要求:
(1)掌握文件的打开和关闭。 (2)精通文件的读写操作。
(3)了解文件的定位操作及文件的检测函数。 (4)掌握文件的应用。 (5)编写实验报告。
2、实验内容(参考实验指导书):
(1)编写一个程序,读取磁盘上的一个C语言程序文件,要求加上注释后再存放到磁盘上,文件可以另外命名。
(2)编写一个程序,将文件从第10行起存放到中。
(3)有一个整数文件,读取其中的数值,如果为奇数加1,如果为偶数减1,然后存放到新的文件中去。
(4)二进制文件中包含若干个整数,用键盘输入一个整数,请在文件中找出该整数的下一个数并输出。若找不到则输出“Not Found!”。
五、实验报告的格式
实验名称
(一)实验目的和要求: (二)实验内容:
每个实验内容含以下五部分: 1、算法描述: 2、源代码和说明: 3、测试数据: 4、运行结果: 5、问题及解决方法:
(三)实验总结:
具体可参考实验指导书P15~P19页举例。
六、考核方式、方法及实验成绩评定方法
1、考核方式、方法:
C语言程序设计实验课成绩单独按五级记分。凡实验成绩不及格者,该门课程必须重修。学生的实验成绩应以平时考查为主,一般应占总分的20%,其平时成绩又要以实验实际操作的优劣作为主要考核依据。在学期末或课程结束时,为复习和巩固实验教学内容,进一步对学生作补充了解,也可举行一定的实验操作考试,但无论采取何种方式进行考核,都必须按实验课的目的要求,以实际实验工作能力的强弱作为评定成绩的主要依据。因此,最终的集中考试结果只能占总成绩的20%。
2、实验成绩评定方法:
评定各级成绩时,可参考以下标准: (一)优秀(很好)
能正确理解实验的目的要求,能、顺利而正确地完成各项实验操作,会分析和处理实验中遇到的问题,能较好地完成实验报告及其它各项实验作业,有一定设计能力。有良好的实验工作作风和习惯。
(二)良好(较好)
能理解实验的目的和要求,能认真而正确地完成各项实验操作,能分析和处理实验中遇到的一些问题。能掌握所学实验技能的绝大部分,对难点较大的操作完成有困难。能一般完成实验报告和其它实验作业。有较好的实验习惯和工作作风。
(三)中等(一般)
能粗浅理解实验目的要求,能认真努力进行各项实验操作,但技巧较差。能分析和处理实验中一些较容易的问题,掌握实验技能的大部分。有30%掌握得不好。能一般完成各项实验作业和报告。处理问题缺乏条理。工作作风较好。能认真遵守各项规章制度。学习努力。
(四)及格(较差)
只能机械地了解实验内容,能一般性地按实验步骤完成实验操作,能完成60%所学的实验技能,有些虽作但不准确。遇到问题常常缺乏解决的办法,在别人启发下能作些简单处理,但效果不理想。能一般完成实验报告,能认真遵守实验室各项规章制度,工作中有小的习惯性毛病。
(五)不及格(很差)
盲目地操作,只掌握50%的所学实验技能。有些实验虽能作,但一般效果不好,操作不正确。工作忙乱无条理。一般能遵守实验室规章制度,但常有小的错误。实验报告较多的时候有结果,遇到问题时说不明原因,在教师指导下也较难完成各项实验作业。或有些小聪明但不努力,不求上进。
七、实验主要应配套仪器设备及台(套)数(以一个实验教学班60人为标准)
序号 1 2 计算机 C语言编译环境软件 仪器设备名称 数量 60台 1套 备注 八、主要教材及参考书 1、《C语言程序设计与实践实验指导》,谢满得 邵俊 编着,机械工业出版社,2011年6月。 2、《标准C程序设计(第四版)》,(印)E Balagurusamy 着,金名 李丹程 刘莹 那俊 等译,清华大学出版社,2008年6月。
3、《C How to Program(4th ed.)》,HM Deitel & PJ Deitel,清华大学出版社,2002。 4、《C程序设计习题解答与上机指导》,谭浩强,清华大学出版社,2003。 5、《C语言程序设计习题集》, 陈朔鹰等,人民邮电出版社,2003。
6、《C程序设计语言》(美) Brian W. Kerninghan 着,徐宝文 译,机械工业出版社,2003。 7、《C程序设计教程》(美) Deilel着,薛万鹏 译,机械工业出版社,2003。
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- baoquwan.com 版权所有 湘ICP备2024080961号-7
违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务