C语言程序设计实验(本科)教学大纲 实验课程名称:C语言程序设计 课程性质:基础必修 适用专业:理工科各专业 实验总学时: 48 学分数:3 教材:《C语言程序设计方法》,邓文新 张宏烈主编,哈尔滨工业大学出版社 参考书:《C程序设计》(第二版),谭浩强主编,清华大学出版社 一、实验教学目标与要求: C语言程序设计实验是C语言程序设计教学课程的重要组成部分。 目标:通过本课程的学习使学生掌握C语言程序的编辑、编译、上机调试等基本操作操作,能够运用C语言程序解决本专业某些实际问题,并养成严谨的科学态度和科学的思维方法,从而提高分析和解决实际问题的能力。为后续课程的学习和在毕业设计时使用计算机解决问题打下良好的基础。 要求:注意自始至终贯彻课程中所介绍的程序设计风格,养成良好的编程习惯。应独立完成所布置的上机作业,为保证尽量在统一安排的上机时间内编译运行通过程序,应事先预习设计好程序。 课后撰写实验报告。 二、实验课程具体内容: 序 号 实验项目名称 学时 每组 人数 必开选开 教学目的及主要内容 实验类型  1 C语言集成环境及程序初步 4 1 必开 目的:1、熟悉C语言的集成环境,了解菜单的使用方法。 2、掌握C语言程序上机的编辑、编译、连接、运行的基本步骤。 3、了解C语言程序的结构。 内容:1、熟悉File、Edit、Run、Option等菜单中常用菜单项及对应快捷键的使用方法。 2、熟悉C语言程序上机的编辑、编译、连接、运行的基本步骤。 3、编程实现一个字符串的输出。 4、编程输出两个数的最大值。 5、计算由键盘输入的任意两个整数的积。 基本操作  2 数据类型、运算符与表达式 4 1 必开 目的:1、了解数据类型及使用方法。 2、掌握常用算术运算符的使用方法、优先级别及结合方向。 3、掌握C语言表达式的运算规则。 内容:1、验证C语言中各种数据类型的取值范围及各种类型变量的定义和使用方法。 2、编程实现由键盘输入的任意两个数的平均值,并对不同类型的数据进行测试。 3、验证各种运算符的使用。 验证  3 输入与输出实现 2 1 必开 目的:1、掌握整型、实型、字符型数据的输入输出格式控制。 2、掌握scanf、printf函数语句的使用方法。 内容:1、编程实现各种数据格式的输入输出。 2、编程实现将给定的数据按指定的格式输出。 基本操作  4 选择结构 4 1 必开 目的:1、掌握利用if语句实现选择结构程序设计的方法。 2、掌握逻辑运算符的使用方法。 3、掌握利用switch语句实现选择结构的程序设计方法 4、注意break在switch语句的作用。 内容:1、验证逻辑运算表达式的结果。 2、编程实现任意三个数的升序排序。 3、编程实现求分段函数的值。 4、编程实现用户键入任意两个操作数和“+、-、*、/”中一个运算符,由计算机输出运行结果。 5、编程实现对给定的一个百分制成绩,要求输出成绩等级“A”、“B”、“C”、“D”、“E”。 设计  5 循环结构 4 1 必开 目的:1、掌握利用while 或do while实现条件型循环结构程序设计的方法。 2、掌握利用for语句实现计数型循环结构程序设计的方法。 内容:1、编程实现1+2+…+n的和。 2、编程实现1!+2!+…+n!的和。 3、编程实现求两个自然数的最大公约数和最小公倍数。 4、编程实现水仙花数的打印。 5、编程实现打印Fibonacci数列的前20项。 设计  6 循环嵌套 2 1 必开 目的:掌握循环嵌套的程序设计方法,注意内外层循环间的关系。 内容:1、编程实现由星号构成的等腰三角形的打印。 2、编程实现打印3~100之间的所有素数。 3、编程实现一个小球从100米高度自由落下,每次落地后反弹回原来的高度的一半,再落下。求它在第10次落地时,共经过多少米?第10次反弹多高? 综合  7 数组 4 1 必开 目的:1、掌握一、二维数组的定义规则。 2、正确运用一、二维数组进行程序设计。 内容:1、编程实现用数组打印Fibonacci数列的前20项。 2、编程实现从键盘输入的一组数中找出其中最大值和最小值。 3、编程实现用一、二维数组分别输出杨辉三角。 4、编程实现将二维数组行列元素互换。 5、编程实现求二维数组中最大元素值及其行号、列号。 设计  8 排序 2 1 必开 目的:1、掌握冒泡法排序。 2、掌握选择法排序。 内容:1编程实现用冒泡法对输入的一组数由小到大排序。 2、编程实现用选择法对输入的一组数由小到大排序。 3、编程实现插入一个数到有序数组中,使数组仍然有序。 综合  9 字符数组与字符串 2 1 必开 目的:1、掌握利用字符数组存放字符串的方法。 2、掌握常用的字符串操作函数。 内容:1、编程实现两个字符串的连接(不用strcat函数)。 2、编程实现找出三个字符串中的最大者。 设计  10 函数的定义和调用、变量的存储属性 4 1 必开 目的:1、掌握C语言函数的定义及调用规则。 2、掌握值传递、地址传递、函数作参数、函数名作参数等知识。分析并理解地址传递的概念以及形参数组的变化为什么影响实参数组的工作原理。 3、掌握递归的使用。 4、区分动态变量和静态变量,外部变量和局部变量。 5、理解变量的各种存储属性register、auto、static和extern。 内容:1、用户输入任意两个操作数,实现实参与形参间值传递和地址传递。 2、编写函数,实现十进制到二进制的转换。 3、编程用递归实现n!。 4、测试变量的各种存储属性对变量值的影响。 设计  11 指针变量的定义及指针与数组 4 1 必开 目的:1、掌握预处理命令的使用。 2、掌握指针类型变量的定义和引用方法。 3、学会用指针对变量进行操作。 4、掌握指针与一维数组、二维数组的关系。 5、掌握指针数组的使用方法。 内容:1、编程用预处理命令实现求两个数的较大的数。 2、编程用指针变量实现两个数的由小到大排序(用多种方法实现)。 3、编写函数实现矩阵转置。 4、编程实现将数组a中的n个整数按相反顺序存放。 5、编程实现3个学生每个学生有4门课成绩,计算总平均分,并输出指定学生的成绩。 设计  12 指针与函数 2 1 必开 目的:1、掌握指针作函数的参数的程序设计方法。 2、掌握指向函数的指针的程序设计方法。 3、掌握返回指针值的函数的程序设计方法。 内容:1、编程实现用函数指针变量调用函数,比较两个数的大小。 2、编程实现用函数指针变量作参数,求最大值、最小值和两数之和。 3、编程用指针实现某学生成绩的查询。 4、编程用指针实现对字符串的选择法排序。 综合  13 结构体和共用体 2 1 必开 目的:1、掌握结构体类型的定义和使用方法。 2、掌握共用体类型的定义和使用方法。 内容:1、编程实现输入5个学生的记录,输出学生信息表。 2、编程实现将一个整数按字节输出。 设计  14 链表和位运算 4 1 必开 目的:1、掌握动态数据结构和静态数据结构的区别、作用。 2、掌握链表的建立及访问方法。 3、理解位运算的概念。 4、掌握位运算符的使用方法。 内容:1、建立一个链表,每个结点包括学号、姓名、性别、年龄,并实现输入5个学生的记录。 2、编程实现对链表的插入、删除操作。 3、编程实现取一整数从右端开始的4~7位。 4、编程实现求一个数的补码。 综合  15 文件 4 1 必开 目的:1、掌握文件的定义、打开、关闭方法。 2、掌握文件的各种读写函数的使用方法。 3、掌握文件的定位和随机访问方法。 内容:1、根据用户输入的任意10人的学习成绩建立一个文本文件,以顺序访问方式读取该文件。 2、有5个学生,每个学生有3门课成绩,从键盘输入学生数据(包括学号、姓名、三门课成绩),计算出平均成绩,将原有的数据和计算出的平均分存在磁盘文件“stud.dat”中。 3、编程实现从键盘输入以“!”结束的字符串,将小写字母转化为大写字母存入文件,再从文件读回显示。 4、建立一个二进制文件,用随机访问的方法读取该文件。 5、编程实现磁盘文件上有3个学生数据,要求读取第1,3学生数据并显示。 6、编程实现求文件的长度。 综合