分享
分享赚钱 收藏 举报 版权申诉 / 30

类型《C语言程序设计》_谭浩强版教案.doc

  • 上传人:weiwoduzun
  • 文档编号:2707321
  • 上传时间:2018-09-25
  • 格式:DOC
  • 页数:30
  • 大小:348.50KB
  • 配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    《C语言程序设计》_谭浩强版教案.doc
    资源描述:

    1、C 语言程序设计教案单 位: 湖南理工职业技术学院 学院(教研室): 风能工程学院 工业机器人专业 授课教师: 周常欣 职 称: 助教 课程名称 C 语言程序设计教材 C 语言程序设计(第四版) 作者:谭浩强 清华大学出版社考核方式 考查课程。 总成绩:课堂参与占 10%;试验报告占 20%;期末考试占 70%(闭卷考试:程序编写题目) 。教学基本目的和要求C 语言是近年来国内外得到迅速推广使用的一种计算机语言。C 语言程序设计课程是计算机专业和信息管理专业的核心专业基础课,它功能丰富,表达能力强,使用灵活方便,应用面广,目标程序效率高,可移植性好,既具有高级语言的优点,又具有低级语言的优点。

    2、既适用于应用软件编写,又适用于系统软件的编写。在现代的工业机器人的众多语言中,大多编程风格以 C 语言非常类似,学生学好 C 语言,对将来的工作中,从事工业机器人现场编程是非常有帮助的。课程的性质和任务语言程序设计这门课是我校工业机器人、分布式发电与微电网专业的专业必修课。作为计算机系的数据结构、c+、单片机编程等课程的前导课程,也是一门实践性很强的课程,既要掌握概念,又要动手编程,还要上机调试运行。对工业机器人专业来说是一门必修的课程。同时,这门课程也是“湖南省非计算机专业学生计算机应用能力水平考试”二级考试的主要语种之一。课程的教学目标本课程的教学目标是:通过理论和实践教学,使学生较好地掌

    3、握 C 语言各方面的知识,掌握基本的程序设计过程和技巧,具备初步的高级语言程序设计能力,并能熟练应用VC+6.0 集成环境进行 C 语言的编写、编译与调试,能应用 C 语言解决一般编程问题的水平。教学重点和难点一、程序设计和 C 语言重点:计算机程序、计算机语言、C 语言编译软件的安装、最简单的 C 语言程序二、算法:程序的灵魂重点:简单的算法举例、算法的特性、用流程图表示算法。三、顺序结构程序设计重点: C 语言的数据类型、 C 语句的种类、赋值语句、数据的输入输出及输入输出中最常用的控制格式。四、选择结构程序设计重点:关系运算符与逻辑运算符及其组成的具有逻辑值的表达式、二条分支语句的格式及

    4、基本应用、多分支的选择语句。五、循环结构程序设计重点:C 构成循环的四种方法,尤其是后三种方法、break 与 continue 语句的基本作用。难点:while 语句;do-while 语句;for 语句;循环的嵌套; break 与 continue 语句。六、数组重点:一维数组、二维数组的定义与引用;字符数组的定义与引用、常用字符串处理函数及字符处理函数;数组的应用难点:二维数组的定义与引用;字符数组;数组的应用七、函数重点:函数的定义;函数的参数和函数的值;函数的调用;函数的嵌套调用;函数的递归调用;数组作为函数参数;变量作用域;量存储类别;难点:函数定义、函数调用、函数声明等基本基本

    5、概念;函数的嵌套调用与递归调用; 数组作为函数的参数、变量的存储类别与作用域。八、指针重点和难点:指针与地址的基本概念、指针与变量的关系;指针与数组;指针与字符串、指针数组与二级指针;指针的应用九、建立自己的数据类型重点和难点:定义和使用结构体变量、用指针处理链表、共用体类型十、文件重点:文件的基本知识、fopen、fclose 函数打开与关闭文件、顺序读写数据文件、随机读写数据文件难点:用二进制方式向文件读写一组数据。十一、常见错误分析重点和难点:文件的基本概念;文件的打开、关闭、常用读写方法。 十二、数组高级应用重点:不定长数组与二维数组的应用难点:不定长数组与二维数组的应用十三、综合应用

    6、重点:数组、if 语句、 循环语句、函数知识的综合应用难点:二维数组、指针教材、参考书教材:C 程序设计 (第四版) 谭浩强著 清华大学出版社 2010 年 6 月参考书:C 程序设计语言 Kernighan 熟练绘制选择语句算术的流程图掌握关系运算符、关系表达式;逻辑运算符、逻辑表达式重点难点重点:关系运算符、关系表达式;逻辑运算符、关系表达式难点:熟练绘制选择语句算术的流程图教学安排讲授一、选择结构的条件判断1、理解条件-产生逻辑值的表达式2、选择结构的流程图绘制3、二元二次方程求根的算法及程序编写二、关系运算符与关系表达式“关系运算” (比较运算)即,将两个值进行比较,判断是否符合或满足

    7、给定的条件。1、 关系运算符及其优先次序a) C 语言提供 6 种关系运算符。表 5-1。b) 关于优先次序:前 4 种高于后两种;关系低于算术;关系高于赋值例 5-2。2、 关系表达式关系表达式的值是逻辑值,即“真” “假” 。C 语言没有逻辑型数据,1“真” ,0“假” 。例 5-3。三、逻辑运算符和逻辑表达式“关系运算” (比较运算)即,两个逻辑值的运算。1、 逻辑运算符。 (1)else max=b; max=ab?a:b;(1)条件表达式的一般形式:表达式 1?表达式 2:表达式 3(2)条件表达式说明(5 点)例 5-4.二、switch-case 语句(多分支选择语句/开关语句)

    8、3、 switch 一般形式4、 switch 语句说明。(1)-(7)三、分支程序例子例 5.5 写程序,判断某一年是否是闰年。例 5.6 求一元二次方程 ax2+bx+c=0 的根。例 5.7 运输公司对用户计算运费。六、应用举例例 6-14:从键盘输入一个大于 2 的整数 n,判断是不是素数。例 6-15:求 100-200 之间的所有素数。例 6-16:输出下三角 99 乘法表七、上机演示及学生操作在讲课的同时切换软件界面调试代码课后自我总结分析备注C 语言程序设计教案第 21-22 课时 授课内容 第 6 章 (1) 一 维 组 的 应 用教学目的和要求数组的基本概念;一维数组定义、

    9、初始化、引用;最大值、冒泡排序、选择排序算法。重点难点重点:一维数组定义、初始化、引用;求最大值、冒泡排序、选择排序算法;矩阵操作难点:冒泡排序、选择排序算法教学安排引言基本数据类型构造类型的数据数组数组、数组元素、数组的下标、数组的维数例如:int a10; 一维数组可以看作一个数列,向量。例如:float b33; 二维数组可以看作一个矩阵。讲授一、定义和引用一维数组1、一维数组的定义 类型说明 数组名整型常量表达式2、一维数组定义说明 下标从 0 开始3、数组元素的引用例 6.1 利用数组输出 1-10(1)循环语句 (2) 数组下标越界4、一维数组的初始化的几种形式(1)定义时赋初值

    10、(2)部分赋初值(3)数组元素全部置 0 (4)数组元素如全部赋值可不指定长度5、给数组元素赋初值和给数组集合赋初值的异同(1) 给数组元素赋初值 int temp1=9;(2) 给数组集合赋初值 int temp10=(1,2,3);二、一维数组的应用例子例 6-2:用数组来处理斐波那契数列例 6-3:采用“冒泡法”对任意输入的 10 个整数按由小到大的顺序排序。例 6-4:采用“选择法” 对任意输入的 10 个整数按由大到小的顺序排序。三、动态内存分配法实现不定长一维数组某些情境需要定义一个数组,但数组的长度不定,因为这个长度是根据某些其他条件确定的,这时我们需要定义一个长度不定的数组。如

    11、读取不同声音的语音数据序列。课后自我总结分析备注C 语言程序设计教案第 23-24 课时 授课内容 第 6 章 (2) 二 维 数 组 和 多 维 数 组 的 应 用教学目的和要求 二维数组定义、初始化、引用;多维数组重点难点重点:二维数组定义、初始化、 ;双重 for 循环读取二维数组;二维数组 1 维和 2 维的分辨;难点:双重 for 循环读取二维数组、 二维数组 1 维和 2 维的分辨教学安排二、二维数组(注意:类比一维数组)1、二维数组的应用场景2、二维数组的定义3、二维数组元素的内存分布二、二维数组元素的引用例 6-5:二维数组元素的引用的例子(自学)-构造、打印单位矩阵。思考:下

    12、标是从 1 开始使用的,哪些元素在此例子中未使用?它们的值是多少?(随机值)三、二维数组的初始化的几种形式(1)分行给二维数组赋值(2)将所有数组写在一个花括号内(3)对部分元素赋值(4)对全部元素赋初值,二维数组的 1 维长度可以省略,2 维长度不能省略四、双重 for 循环法读取二维数组比较抽象,图解较直观五、二维数组应用举例例 6-4:将二维数组的行和列互换,存到另一个数组里。例 6-5:找出矩阵所有元素中的最大值。例 6-附加 分别计算矩阵的两条对角线(主、辅对角线)上的元素之和。六、多维数组的应用1、多维数组的定义2、多维数组元素的引用3、多维数组的初始化七、不定长二维数组的实现某些

    13、情境需要定义一个二维数组,但二维数组的长度不定,因为这个长度是根据某些其他条件确定的,这时我们需要定义一个长度不定的二维数组。如读取不同尺寸图像点的像素值。八、上机演示及学生操作在讲课的同时切换软件界面调试代码课后自我总结分析备注C 语言程序设计教案第 25-26 课时 授课内容 第 6 章 (3) 字 符 数 组教学目的和要求 字符数组定义、初始化、引用;字符串与字符数组;字符串处理函数;字符数组应用重点难点重点:字符串与字符数组;字符串处理函数难点:字符串与字符数组;字符串处理函数教学安排引言复习数组概念,数组定义、初始化、元素引用方法。引入字符数组(元素为字符) 。讲授一、字符数组1、字

    14、符数组的定义2、字符数组的初始化3、字符数组的引用4、二维字符数组的应用举例二、字符和字符串结束标志1、字符串与字符数组的区别 2、字符串结束标记志系统对字符串常量也自动加一个0作为结束符。例如“C Program”共有 9 个字符,但在内存中占 10 个字节,最后一个字节0是系统自动加上的。 (通过 sizeof()函数可验证)三、字符数组的输入和输出(1)逐个字符输入输出(2)将整个字符串输出(3)利用字符串的结束符批量输出四、字符串概述1、字符串的输出(1)“%s”格式符(2)print 语句的输出项参数用字符数组名,而非数组元素名2、字符串的引用五、由字符数组来构造字符串根据定义,可由

    15、字符数组添加一个0符形成字符串。六、二维字符数组1、二维字符数组的定义2、二维字符数组的初始化3、二维字符数组的引用课后自我总结分析备注C 语言程序设计教案第 27-28 课时 授课内容 第 6 章 (4) 字 符 串 函 数 的 应 用教学目的和要求 字符数组定义、初始化、引用;字符串与字符数组;字符串处理函数;字符数组应用重点难点重点:字符串与字符数组;字符串处理函数难点:字符串与字符数组;字符串处理函数教学安排讲授一、使用字符串处理函数1、puts 函数2、gets 函数3、strcat 函数:字符串截取函数4、strcopy 和 strncopy 函数:字符串复制函数5、strcmp

    16、函数:字符串比较函数6、strlen 测试字符串长度函数7、strlwr 函数:转换为小写的函数8、strupr 函数:转换为大写的函数二、字符数组应用举例例 6.8:由键盘任意输入一个字符串和一个字符,要求从该字符串中删除所指定的字符。例 6.9:由键盘输入三个字符串,找出其中的最大串。 (字符串库函数的应用)三、学会阅读 C 标准函数手册附录 F C 库函数1、引用预编译头文件 include(包含头文件)2、学会阅读函数库函数的函数类型和参数四、字符数组函数的综合练习1、打印杨辉三角形2、有一个已排好序的数组,要求输入一个数后,按原来排序的规律将它插入数组中。3、魔方阵,要求输出 1n

    17、24、找出二维数组的鞍点,即该位置上的元素在该行上最在、在该列上最小,也可能没有鞍点。5、编一程序,将两个字符串连接起来,不要用 strcat 函数。四、上机演示及学实践操作在讲课的同时切换软件界面调试代码课后自我总结分析备注C 语言程序设计教案第 29-30 课时 授课内容 第 7 章 (1) 函 数 及 函 数 的 调 用教学目的和要求 掌握函数定义、调用、声明;函数参数传递方式;了解函数递归调用重点难点重点: 函数定义、调用、声明; 函数参数传递方式难点:函数参数传递方式传址(尚未学习指针,用数组举例)教学安排讲授一、函数概述1、C 语言的函数。C 语言的函数是子程序的总称,包括函数和过

    18、程。C 语言函数可以分为库函数、用户自定义函数2、C 语言的程序由函数组成,函数是 C 语言程序的基本单位,程序的总体功能通过函数的调用来实现。其中,main 起点(图)3、函数的一些概念:主函数、其它函数;主调函数、被调函数;库函数、用户自定义函数;无参函数、有参函数;无返回值函数、有返回值函数二、函数的一般形式函数应当先定义,后调用。函数定义的一般形式及说明 (1)(2)例 7-1:输入三个整数,求三个整数中的最大值,打印。思考问题。三、函数的参数和返回值1、 形式参数 2、实际参数 3、参数的传递。2、 函数返回值。return 语句及说明。四、函数的调用1、 函数调用的一般形式及说明(

    19、单独语句/表达式中、参数相容)例 7-3:以表达式的形式进行函数的调用。 (自学)2、 函数调用时数据的传递-参数传递、函数的返回值、全局变量例 7-4:求学生平均成绩。P110.(注意参数传递的是数组的地址)3、 函数的声明例 7-5:函数声明例子。P112.五、函数的嵌套调用和递归调用函数允许嵌套调用和递归调用。递归调用是嵌套调用的特例。(1)函数的嵌套调用例 7-6:计算两整数的最小公倍数。P113.(2)函数的递归调用例 7-7:用递归法求 n!(P.114)课后自我总结分析备注C 语言程序设计教案第 31-32 课时 授课内容 第 7 章 (2) 函 数 变 量 的 作 用 域 和

    20、生 命 周 期教学目的和要求掌握变量作用域、生命期掌握插入排序重点难点重点:变量作用域、生命期;插入排序难点:变量作用域、生命期;插入排序教学安排讲授六、变量的作用域(有效范围、可见性)变量的作用域:变量的有效范围或者变量的可见性。变量定义的位置决定了变量的作用域。变量从作用域(变量的有效范围,可见性)的角度可以分为:局部变量,全局变量。1、局部变量(函数体内变量、形参变量、复合语句内变量)互不干预、动态分配例 7-8:各函数局部变量同名的应用示例。P116-117.2、全局变量(所有函数之外文件作用域、程序作用域)全局变量可以和局部变量同名坐井观天例 7-9:全局变量、局部变量同名的应用示例

    21、。P118。例 7-10:全局变量、局部变量的应用示例。P118。七、变量的存储类别(生存期、生命期)变量从空间上分为局部变量、全局变量。从变量存在的时间的长短(即变量生存期)来划分,变量还可以分为:动态存储变量、静态存储变量。变量的存储方式决定了变量的生存期。C 语言变量的存储方式可以分为:动态存储方式、静态存储方式。全局变量全部是静态的;局部变量可以是静态,也可以是动态(auto,register) 。例 7-11:寄存器局部变量的应用 .P120.(完成 n+(n-1)+(n-2)+.+1)例 7-12:静态局部变量的应用示例。 P121.八、内部函数和外部函数默认是外部函数九、函数应用

    22、举例例 7-14:字符串逆序。P124.例 7-15:求矩阵最大元素。P124-125.例 7-16:利用插入法将 10 个字符从小到大进行排序。P125-126.课后自我总结分析备注C 语言程序设计教案第 33-34 课时 授课内容 第 8 章 (1) 指 针 概 述 及 指 针 作 为 函 数 参 数教学目的和要求指针的基本概念,变量访问方式;指针变量定义、赋值、引用。指针作为函数参数。重点难点重点:指针的基本概念;指针变量定义、赋值、引用;指针作为函数参数难点:指针的基本概念教学安排讲授指针基础一、指针变量的定义(变量先定义后使用)1、定义格式:2、说明: (1)指针变量基类型-指针变量

    23、指向数据的类型(2)指针变量存放地址值,本身占用空间 2 字节二、指针变量的赋值(使用未赋值指针等同于向一个随机的内存中写入数据)1、将地址直接赋值给指针变量。例如,float *f=malloc(4);2、将变量地址赋值给指针变量。例如:float a,*p;p=&a;三、指针变量的引用1、&运算符(取地址运算符) 2、*运算符(指针运算符、间接访问运算符)例 9-1,P137.指针变量定义、赋值、引用例子。四、指针变量作为函数的参数变量可以作为函数参数,指针变量同样可以作为函数参数。使用指针作为函数参数,可以在函数中对指针所指向变量的值进行处理(修改) 。指针作为函数参数,本质上同样是单向

    24、传值,但是由于传递的是地址值,所以可以通过地址值间接修改形参、实参共同指向的变量。例 9-2:输入 a,b 两个数交换后输出。在 swap 函数中使用两个指针作为函数参数,对两个指针所指向变量值进行交换。结论:1、要在被调用函数中,修改主调函数的变量值应当:(1)将主调函数变量的地址传递给被调用函数,就是说函数应当传递的是变量的地址。(2)被调用函数的形参应当使用指针变量接受主调函数的地址值。(3)在被调用函数中通过形参指针变量间接访问,修改实参、形参地址所共同指向的变量。本例的操作是交换两个指针变量所指向的变量。2、函数使用指针作为参数,可以增加主调函数与被调函数之间数据沟通的渠道。课后自我

    25、总结分析备注C 语言程序设计教案第 35-36 课时 授课内容 第 8 章 (2) 通 过 指 针 引 用 数 组教学目的和要求通过指针引用数组元素;数组的指针变量”作为函数参数;通过指针指向多维数组重点难点重点:数组的指针变量”作为函数参数;通过指针指向多维数组难点:数组的指针变量”作为函数参数;通过指针指向多维数组教学安排讲授一、数组元素的指针每个数组元素都在内存中占有存储单元,它们都有相应的地址,所谓数组元素的指针就是数组元素的地址。二、在引用指针元素时指针的运算1、在一定条件下允许对指针进行加和减的运算。2、在指针指向数组元素时,可以对指针进行加和自加,减和自减运算。三、通过指针引用数

    26、组元素1、下标法2、指针法例 8.7 通过指针变量输出整型数组 a 的 10 个元素。四、用数组名和“数组的指针变量”作为函数参数例 8.8 将数组 a 中 n 个整数按相反顺序存放。例 8.9 将例 8.8 写成指针变量作实参例 8.10 用指针法对 10 个整数按从大到小顺序排序五、通过指针指向多维数组1、多维数组的地址2、指向多维数组元素的指针(1)指向数组元素的指针变量例 8.12 有一个 34 的二维数组,要求用指向元素的指针变量输出二维数组各元素的值。(2)指向由 m 个元素组成的一维数组的指针变量3、用指向数组的指针作函数参数例 8.14 有一个班,3 个学生,各学 4 门课程,

    27、计算总平均分数以及第 n 个学生的成绩。例 8.15 在例 8.14 的基础上,查找有 1 门以上课程不及格的学生,输出他们全部课程的成绩。课后自我总结分析备注C 语言程序设计教案第 37-38 课时 授课内容 第 8 章 (3) 通 过 指 针 引 用 字 符 串教学目的和要求 掌握字符指针作为函数参数;理解使用字符指针变量和字符数组的异同重点难点重点:字符指针作为函数参数;理解使用字符指针变量和字符数组的异同难点:字符指针作为函数参数;理解使用字符指针变量和字符数组的异同教学安排讲授一、字符串的引用方式1、可通过字符数组名和下标引用字符串中的一个字符。2、也可以通过数组名和格式声明%s 输

    28、出该字符串例 8.16 定义一个字符数组,在其中存放字符串 “I love China!”,输出该字符串和第 8 个字符。C 语言中只有字符变量,没有字符串变量。例 8.18 将字符串 a 复制为字符串 b,然后输出字符串 b。例 8.19 例 8.18 改用指针变量来处理二、字符指针作为函数参数例 8.20 用函数调用实现字符串的复制(1)用字符数组名作为函数的参数(2)用字符指针变量作为函数的参数其实编译系统把字符数组名按指针变量处理的,只是表示形式不同。三、使用字符指针变量和字符数组的比较1、字符数组由若干个元素组成,每个元素中放一个字符,而字符指针变量中存放的是地址。2、赋值方式。可以

    29、对字符指针变量赋值,但不能对数组名赋值3、初始化含义4、存储单元内容5、指针变量的值是可以改变的,而数组名代表一个固定的值6、字符数组中各元素的值是可以改变的。7、引用数组元素四、随堂练习写一函数,实现两个字符串的比较。int strcmp(char *p1,char*p2)五、上机演示及学实践操作在讲课的同时切换到编译器界面调试代码课后自我总结分析备注C 语言程序设计教案第 39-40 课时 授课内容 第 8 章 (4) 动 态 内 存 管 理 与 指 向 它 的 指 针 变 量教学目的和要求 掌握用函数指针变量调用函数;掌握用指向函数的指针作函数参数重点难点重点:用函数指针变量调用函数;用

    30、指向函数的指针作函数参数难点:用函数指针变量调用函数;用指向函数的指针作函数参数教学安排讲授一、指向函数的指针编译系统为函数代码分配一段存储空间,这段存储空间的起始地址,称为这个函数的指针二、用函数指针变量调用函数例 8.22 求两个整数的最大值讲解通过函数名调用函数与通过指针变量访问它所指向的函数的异同。三、怎样定义和使用指向函数的指针变量类型名 (*指针变量名) (函数参数表列)例 8.23 讲解四、用指向函数的指针作函数参数指向函数指针变量的一个重要用途是把函数的地址作为参数传递到其它函数。例 8.24 讲解五、返回指针值的函数一个函数可以返回一个整型值、字符值、实型值等,也可以返回指针

    31、型的数据,即地址。定义返回指针值函数的一般形式为:类型名 *函数名(参数表列)例 8.25 讲解六、指针数组和多重指针1、什么是指针数组2、指向指针数据的指针例 8.28 讲解3、指针数组作主函数的形参七、上机演示及学实践操作在讲课的同时切换到编译器界面调试代码课后自我总结分析备注C 语言程序设计教案第 41-42 课时 授课内容 第 8 章 (5) 动态内存分配教学目的和要求 掌握指针数组和多重指针;掌握动态内存分配的技巧重点难点重点:指针数组和多重指针;动态内存分配的技巧难点:指针数组和多重指针;动态内存分配的技巧教学安排讲授C 定义了 4 个内存区间:代码区,全局变量与静态变量区,局部变

    32、量区即栈区,动态存储区,即堆(heap)区或自由存储区(free store) 。一、堆栈和队列1、堆栈 堆栈是一种特殊的线性表。(1)栈顶和栈底2、队列 堆栈也是一种特殊的线性表。(1)队头与队尾二、堆与动态内存分配有些操作对象只在程序运行时才能确定,这样编译时就无法为他们预定存储空间,只能在程序运行时,系统根据运行时的要求进行内存分配,这种方法称为动态内存分配。所有动态内存分配都在堆区中进行。三、动态内存分配1、什么是内存的动态分配2、建立内存分配的动态分配(1)malloc 函数malloc 是一个函数,专门用来从堆上分配内存。使用 malloc 函数需要几个要求:内存分配给谁? 分配多

    33、大内存? 是否还有足够内存分配?内存的将用来存储什么格式的数据,即内存用来做什么?分配好的内存在哪里?如果这五点都确定,那内存就能分配。下面先看 malloc 函数的原型void * malloc(uint size)(2)calloc 函数 (3)free 函数 (4)realloc 函数四、什么是野指针1、野鸡指针的形成 2、野指针的危害五、void 指针类型指向空类型指针,而非指向任意类型的指针课后自我总结分析备注C 语言程序设计教案第 43-44 课时 授课内容 第 9 章 (1) 结 构 体 概 述 及 应 用教学目的和要求结构体类型、变量的定义及初始化;结构体变量的引用;结构体数组

    34、,结构体指针重点难点结构体类型、变量的定义及初始化;结构体变量的引用;结构体数组,结构体指针教学安排引言例子:学生信息管理系统讲授一、结构体类型1、结构体类型和结构体变量(1) 结构体类型定义的一般形式 例如:定义关于学生信息的结构体类型。(2) 结构体变量的定义(三种方法) 先定义结构体类型,再定义结构体变量(概念、含义相当清晰) 定义结构体类型的同时定义结构体变量 直接定义结构体变量(不给出结构体类型名,匿名的结构体类型)2、结构体变量的引用(1) 引用结构体变量中的一个成员。结构体变量名.成员名(2) 成员本身又是结构体类型时的子成员的访问-使用成员运算符逐级访问(3) 同一种类型的结构

    35、体变量之间可以直接赋值(4) 不允许将一个结构体变量整体输入/输出1、结构体变量的初始化二、结构体数组结构体数组-数组元素的类型为结构体类型的数组1、 结构体数组的定义类似结构体变量定义,只是将“变量名”用“数组名长度”代替) ,也有 3 种方式。2、结构体数组的初始化三、结构体指针变量1、结构体指针变量(1) 结构体指针变量的定义(2) 通过结构体指针变量访问结构体变量的成员:(*结构体指针变量名).成员名 结构体指针变量名-成员名2、结构体变量、结构体指针变量作函数参数课后自我总结分析备注C 语言程序设计教案第 45-46 课时 授课内容 第 9 章 (2) 链 表教学目的和要求掌握链表的

    36、使用;重点难点重点:掌握链表的使用;掌握共同体类型的使用;理解枚举类型的概念难点:掌握链表的使用;掌握共同体类型的使用;理解枚举类型的概念教学安排讲授一、链表概述1、什么是链表(1)链表中节点的定义(2)链表的基本操作2、建立简单的静态链表二、建立动态链表1、动态链表(1)处理动态链表所需要的函数 malloc()、calloc()、free()(2)结点的动态分配2、输出链表例 9.10 编写一个输出链表的函数 print3、对链表的删除操作4、对链表的插入操作二、双向链表1、双向链表的存储结构2、建立双向链表3、双向链表的操作三、环形链表1、儿时玩的丢手绢的游戏 环形约瑟夫问题2、解决环形

    37、情况的问题比较方便3、构造环形链表4、环形链表的特点四、上机演示及实践操作在讲课的同时切换到编译器界面调试代码课后自我总结分析备注C 语言程序设计教案第 47-48 课时 授课内容 第 9 章 (3) 共 用 体 及 枚 举教学目的和要求掌握链表的使用;掌握共用体类型的使用;理解枚举类型的概念重点难点重点:掌握链表的使用;掌握共同体类型的使用;理解枚举类型的概念难点:掌握链表的使用;掌握共同体类型的使用;理解枚举类型的概念教学安排讲授一、共用体1、什么是共用体类型有时想用同一段内存单元存放不同类型的变量。这种使几个不同类型的变量共享同一段内存的结构,称为“共用体”类型结构。2、共用体与结构体的

    38、异同(1)结构体的各个成员会占用不同的内存,互相之间没有影响;而共用体的所有成员占用同一段内存,修改一个成员会影响其余所有成员。(2)结构体占用的内存大于等于所有成员占用的内存的总和(成员之间可能会存在缝隙) ,共用体占用的内存等于最长的成员占用的内存。共用体使用了内存覆盖技术,同一时刻只能保存一个成员的值,如果对新的成员赋值,就会把原来成员的值覆盖掉。3、引用共用体变量的方式4、共用体类型数据的特点5、国内有些资料把共用体这一概念称之为“联合”例 9.11 二、枚举1、枚举类型概念如果一个变量只有几中可能的值,则可以定义为枚举类型。枚举类型是一种基本数据类型,而不是一种构造类型,因为它不能再

    39、分解为任何基本类型。2、枚举类型的定义和变量的说明3、枚举类型变量的赋值和使用例 9.124、用 typedef 声明新类型名三、上机演示及实践操作在讲课的同时切换到编译器界面调试代码课后自我总结分析备注C 语言程序设计教案第 49-50 课时 授课内容 第 10 章 (1) 文 本 文 件 及 二 进 制 文 件 的 打 开 与 关 闭教学目的和要求了解文件存储的物理结构与编码;了解文本文件与二进制文件的异同;fopen 函数、 fclose 函数的使用;重点难点重点:文件存储的物理结构与编码,文本文件与二进制文件的异同难点:文件存储的物理结构与编码,文本文件与二进制文件的异同教学安排引言数

    40、据的永久保存、中间数据、数据的传递(需求)讲授一、文件概述1、文件 (10 分钟)计算机的存储在物理上是二进制的,所以文本文件与二进制文件的区别并不是物理上的,而是逻辑上的,这两者只是在编码层次上有差异。2、文件名3、磁盘文件,设备文件4、ASCII 文件、二进制文件因为文本文件与二进制文件的区别仅仅是编码上不同,所以他们的优缺点就是编码的优缺点。一般认为,文本文件编码基于字符定长,译码容易些;二进制文件编码是变长的,所以它灵活,存储利用率要高些,译码难一些(不同的二进制文件格式,有不同的译码方式) 。二、文件缓冲区 (5 分钟)缓冲区就是主内存(一般指基本 640K 内存)区留出的,用来存放

    41、从磁盘里取来的信息的区域。缓冲区除保留磁盘目录和文件表信息外,还保留程序正在使用或存放的部分内容。当计算机用到磁盘数据时,计算机道先判断数据是否在缓冲区中,若在,则计算机直接从缓冲区中取数据,否则再去磁盘中取,这样就可减少驱动器头的启动次数,减少磁盘的磨损,加上计算机对缓冲区的操作大大快于对磁盘的操作,故应用缓冲区可大大提高计算机的运行速度。三、文件类型指针(15 分钟)1、 文件类型(结构体)- FILE 类型2、 文件指针变量(文件指针)四、文件打开/关闭 (15 分钟)对文件的操作的步骤:先打开,后读写,最后关闭。1、 文件的打开(fopen 函数) 。关于打开方式,可以参看 p204,

    42、表 12-1,p205,表 12-2。2、 文件的关闭(fclose 函数)课后自我总结分析备注C 语言程序设计教案第 51-52 课时 授课内容 第 10 章 (2) 读取文件数据、写入数据至文件教学目的和要求掌握文本文件的读文件与写文件;掌握二进制文件的读文件与写文件;掌握随机读写数据文件重点难点重点:掌握文本文件的读文件与写文件,掌握二进制文件的读文件与写文件难点:掌握文本文件的读文件与写文件,掌握二进制文件的读文件与写文件教学安排讲授一、文件读写常用的文件读写函数:1、字符读写函数:fgetc,fputc2、字符串读写函数:fgets,fputs3、格式化读写函数:fscanf,fpr

    43、intf二、二进制文件的读文件与写文件1、数据块读写函数:fread,fwrite例 10.4 存入学生数据到二进制文件(1)构造学生数据的结构体(2)用 FILE 文件指针打开文件(3)用 for 循环语句及 fwrite 函数写入学生数据至二进制文件(4) )用 for 循环语句及 fread 函数从二进制文件读取学生数据三、文件定位1、 文件顺序读写2、 文件随机读写3、 文件位置指针4、 文件位置指针函数(1) rewind 重返文件头函数(2) fseek 位置指针移动函数(3) ftell 获取当前位置指针函数可以通过文件位置指针函数,实现文件的定位读写。四、利用 ftell 和 fseek 函数获取文件大小(1)把文件的位置指针移到文件尾(2)用 ftell 函数用于得到文件尾位置相对于文件首的偏移字节数。(3)打印文件的字节数,即文件大小课后自我总结分析备注

    展开阅读全文
    提示  道客多多所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:《C语言程序设计》_谭浩强版教案.doc
    链接地址:https://www.docduoduo.com/p-2707321.html
    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    道客多多用户QQ群:832276834  微博官方号:道客多多官方   知乎号:道客多多

    Copyright© 2025 道客多多 docduoduo.com 网站版权所有世界地图

    经营许可证编号:粤ICP备2021046453号    营业执照商标

    1.png 2.png 3.png 4.png 5.png 6.png 7.png 8.png 9.png 10.png



    收起
    展开