《C语言程序设计 谭浩强第四版教案.docx》由会员分享,可在线阅读,更多相关《C语言程序设计 谭浩强第四版教案.docx(37页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、C语言程序设计教案课程名称C语言程序设计教材C语言程序设计(第四版)作者:谭浩强清华大学出版社考核方式考试课程。总成绩:课堂参与占10%;试验报告占20%;期末考试占70%(闭卷考试)。教学基本目的和要求C语言是近年来国内外得到迅速推广使用的一种计算机语言。C语言程序设计课程是计算机专业和信息管理专业的核心专业基础课,它功能丰富,表达能力强,使用灵活方便,应用面广,目标程序效率高,可移植性好,既具有高级语言的优点,又具有低级语言的优点。既适用于应用软件编写,又适用于系统软件的编写。在现代的工业机器人的众多语言中,大多编程风格以C语言非常类似,学生学好C语言,对将来的工作中,从事工业机器人现场编
2、程是非常有帮助的。课程的性质和任务语言程序设计这门课是我校工业机器人、分布式发电与微电网专业的专业必修课。、单片机编程等课程的前导课程,也是一门实践性很强的作为计算机系的数据结构、C+课程,既要掌握概念,又要动手编程,还要上机调试运行。对工业机器人专业来说是一门必修的课程。二级考试“湖南省非计算机专业学生计算机应用能力水平考试”同时,这门课程也是的主要语种之一。课程的教学目标语言各方面的知识,使学生较好地掌握通过理论和实践教学,本课程的教学目标是:C掌握基本的程序设计过程和技巧,具备初步的高级语言程序设计能力,并能熟练应用语言解决一般编程问题的集成环境进行VC+6.0C语言的编写、编译与调试,
3、能应用C水平。教学 重点和 难点一、程序设计和C语言重点:计算机程序、计算机语言、C语言编译软件的安装、最简单的C语言程序二、算法:程序的灵魂重点:简单的算法举例、算法的特性、用流程图表示算法。三、顺序结构程序设计重点:C语言的数据类型、C语句的种类、赋值语句、数据的输入输出及输入输出中最常用的控制格式。四、选择结构程序设计重点:关系运算符与逻辑运算符及其组成的具有逻辑值的表达式、二条分支语句的格式及基本应用、多分支的选择语句。五、循环结构程序设计重点:C构成循环的四种方法,尤其是后三种方法、break与continue语句的基本作用。难点:while语句;do-while语句;for语句;循
4、环的嵌套;break与continue语句。六、数组重点:一维数组、二维数组的定义与引用;字符数组的定义与引用、常用字符串处理函数及字符处理函数;数组的应用难点:二维数组的定义与引用;字符数组;数组的应用七、函数重点:函数的定义;函数的参数和函数的值;函数的调用;函数的嵌套调用;函数的递归调用;数组作为函数参数;变量作用域;量存储类别;难点:函数定义、函数调用、函数声明等基本基本概念;函数的嵌套调用与递归调用;数组作为函数的参数、变量的存储类别与作用域。八、指针重点和难点:指针与地址的基本概念、指针与变量的关系;指针与数组;指针与字符串、指针数组与二级指针;指针的应用九、建立自己的数据类型重点
5、和难点:定义和使用结构体变量、用指针处理链表、共用体类型十、文件重点:文件的基本知识、fopen、fclose函数打开与关闭文件、顺序读写数据文件、随机读写数据文件难点:用二进制方式向文件读写一组数据。十一、常见错误分析重点和难点:文件的基本概念;文件的打开、关闭、常用读写方法。十二、数组高级应用重点:不定长数组与二维数组的应用难点:不定长数组与二维数组的应用十三、综合应用重点:数组、if语句、循环语句、函数知识的综合应用难点:二维数组、指针教材、参考书教材:C程序设计(第四版)谭浩强著清华大学出版社2010年6月机械工业出版社Kernighan&Ritchie程序设计语言C参考书:C语言程序
6、设计教案第1-2课时授课内容第1章C语言概述教学目的和要求了解C历史,名称来源、C特点,掌握C程序基本结构;C语言的版本、C语言的关键字;重点难点C语言的关键字;教学安排引言语言:人一人语言交流;聋哑人一手势语;人机一计算机语言C语言是一种流行的计算机高级语言,C语言适合于编写系统软件,也可以编写应用程序。讲授一、语言出现的历史背景(1)C语言的发展源于人们希望用高级语言编写操作系统。(C-BCPL第二字母)ALGOL60(高级语言)-CPL (硬件支持)-BCPC-B-C-标准 C- ANSI C - ISO C(2)语言既具有高级语言特性,又具有低级语言特性-中级语言。语言的特点C二、C语
7、言既具有一般高级语言特性,又具有低级语言特性。8个特点。1、C语言简洁、紧凑。2、运算符丰富。3、数据结构类型丰富。4、具有结构化的控制语句。5、语法限制不太严格,程序设计自由度大。6、C语言允许直接访问物理地址,能实现汇编语言的大部分功能,可以直接对硬件进行操作。7、生成目标代码质量高,程序执行效率高。8、与汇编语言相比,用C语言写的程序可移植性好。三、C语言的关键字附录C (书本378页)四、C语言的版本和关键字auto、inline、restrict、_bool、_Complex、Imaginary是后来扩充的,有些编译器也扩充了关键词。五、Turbo C编译器的安装与使用课后自我总结分
8、析备注C语言程序设计教案第3-4课时授课内容第1章VC+6.0、VS2015的安装和使用教学目的和要求VC+6.0、VS2015的下载与安装;语言常用的编译器;掌握C 了解”VC+6.0、VS2015的使用重点难点VC+6.0、VS2015的使用重点:VC+6.0、VS2015的使用难点:教学安排讲授一、C语言常用的编译器(1)32位的WINDOWS操作系统与64位的WINDOWS操作系统(2) VC+6.0(2) VS2015二、文件夹与压缩包1、文件夹2、文件的压缩与解压3、软件的下载4、软件安装的一般流程号、序列号与破解补丁5、产品id的下载与安装 VC+6.0、VS2015二、生成目标
9、代码质量高,程序执行效率高。7语言写的程序可移植性好。、与汇编语言相比,用C8的使用、VC+6.0VS2015四、VC+6.0、VS2015的使用五、c4droid编译器的使用1、基于安卓手机操作系统的C语言编译器c4droid编译器的安装2、3、c4droid编译器的使用六、上机演示及实践操作VC+6.0、VS2015的编译器的安装和使用win7在电脑上示范课后自我总结分析同学们对计算机基础知识比较缺乏,安装VC +6.0时,不知道如何解压,也不知道如何下载和计算机操作系统版本匹配的VC+6.0或VS2015备注C语言程序设计教案第5-6课时授课内容第2章算法的基本概念和简单算法举例教学目的
10、和要求了解算法的基本概念、程序设计的一般流程、掌握书写简单的算法流程、了解算法的特性重点难点掌握书写简单的算法流程。教学安排引言(5分钟)什么是算法?菜谱、拳谱、歌谱都是广义的算法。以湘潭去北京开会为例解释算法的优劣。1+2+3+100的常规算法和高斯的首尾相加快递算法讲授一、简单算法举例(37分钟)(1)求5!(10分钟)常规求解方式的烦琐引出用循环方式求解的方法。分析用循环方式求5!的C语言代码(2)求1X3X4X5X7X9X11(10分钟)询问同学此题与5!的异同,引每项是2n-1的通项,在上题的基础上改动少量代码可实现本C语言编程。题的)求2000-2500年间的闰年(10分钟)(3图
11、示方式给学生解说闰年要满足的条件,引出要做多次判断的较复杂流程提问:能被4整除这一认识误区整除,是不是等同能被400整除,也能被100年是不是闰年,为什么?检测学生是否了解年是不是闰年,为什么?再次提问:20002060闰年判断流程。素数的求法(7分钟)(4)根据素数的定义来循环判断是否能被一系列数整除,最后判断是不是素数,请学生尝试写出求解流程。分钟)二、算法的特性(31、个或多个输出。5、有效性。40321、有穷性。、确定性。、个或多少输入。三、上机演示及实践操作在讲课的同时切换软件界面调试代码课后自我总结分析通过提问可以了解同学们对知识的掌握程序,互动性的教学设计更有益于教学备注C语言程
12、序设计教案第7-8课时授课内容第2章算法的表示教学目的和要求掌握用流程图表示算法;了解传统流程图的弊端;掌握N-S流程图表示方法。重点难点重点:掌握用流程图表示算法;掌握N-S流程图表示方法难点:掌握用流程图表示算法;掌握 N-S流程图表示方法教学安排讲授一、用流程图表示算法(15分钟)1、介绍流程图的图框及含义起止框、输入输出框、判断框、处理框、流程线、连接点、注释框2、示范用流程图表示两个分支的if语句3、将例2.1的算法用流程图表示并分析4、将例2.2的算法用流程图表示并分析5、将例2.3的算法用流程图表示并分析总结:流程图表示算法比较直观2、将例2.4多项式求和用流程图表示1()、书本
13、求解本题算法的流程图表示、其它算法的流程图表示(2)分钟)(15二、三种基本结构和改进的流程图1、统流程图的弊端2、三种基本结构(1)顺序)选择(2)循环分当型和直到型两种(3分钟)S流程图表示算法15(N 二、用一、N-S流程图的符号1流程图表示并分析的算法用2、将例2.1N-S 3、将例2.2的算法用流程图表示并分析N-S流程图表示并分析的算法用、将例42.3N-S三、实践环节N-S流程图对“分时问候”的算法绘制课后自我总结分析备注语言程序设计教案C第9-10课时授课内容第3章最简单的C程序设计一一顺序程序设计教学目的和要求举例说明顺序程序调序的基本流程、整型数据类型、整型数据的溢出。重点
14、难点重点:整型数据类型;整型数据的溢出难点:整型数据类型;整型数据的溢出教学安排讲授一、顺序程序设计举例(10分钟)1、绘制例3.1算法的N-S流程图2、根据N-S流程图编写代码并调试二、常量与变量(15分钟)1、常量概念。(1)整型常量、整型常量、字符常量、字符串常量(2)ASCII 字符(3)转义字符2、变量概念、变量名(1)先定义,后使用变量名与变量值概念的异同(2)三、数据类型概述(5分钟1、不同类型的数据在内存中占用的存储单位长度是不同的个字节的长度。型(基本型)分配4VC+6.0为字符型数据分配个字节长度;为int、存储不同数据类型的方法也是不同的。2)(15四、整型数据分钟1、整
15、型数据的分类:(long int)长整型;基本整型(1)(mt型)(2)短整型(short int)(3)2、整型变量的符号属性(2)整型数据常见的存储空间和值的范围(1)有符号型和无符号型3、整型数据的溢出五、上机演示及实践操作在讲课的同时切换编译界面调试整型数据溢出课后自我总结分析备注语言程序设计教案C第11-12课时授课内容第3章最简单的C程序设计一一顺序程序设计教学目的和要求举例说明顺序程序调序的基本流程、数据的表现形式及运算、不同数据类型的混合运算。重点难点整型数据类型long int和short int数据类型、运算符的优级先级、不同数据类型的混合运算教学安排讲授一、浮点型数据1、
16、浮点型数据的存储方式2、浮点型数据的表现形式浮点数据的指数形式3、浮点型数据的类型(1)单精度(2)双精度(3)长双精度二、字符型数据1、字符常量表示。直接表示/转义表示(特殊的转义字符,一般字符也可以转义表示)。特殊转义字符对显示/打印的控制作用2、字符变量一1个字节,char关键词。一进制存储一语言可以将字符看做很短的整数处理。3、字符数据的存储一ASCII码/可以看出字符数据的具有整数特性。例2-7A,例2-8A三、怎样确定常量的类型、从常量的表示形式,如精度12、只要看到单撇号括起来的单个字符或转义字符即字符常量四、运算符与表达式、自增、自减运算符21、基本的算术运算符3、算术表达式和
17、运算符的优先级与结合性五、数值型数据混合运算21、自动隐式转换。、强制类型转换。六、C语句21、控制语句、函数调用语句、表达式语句35、复合语句、空语句4七、上机演示及实践操作在讲课的同时切换编译界面调试整型数据溢出课后自我总结分析备注语言程序设计教案C第13-14课时授课内容第4章(1)选择结构程序设计教学目理解条件-产生逻辑值的表达式;熟练绘制选择语句算术的流程图掌握关系运算符、关系表达式;的和要逻辑运算符、逻辑表达式求重点重点:关系运算符、关系表达式;逻辑运算符、关系表达式难点:熟练绘制选择语句算术的流程难点图教学安排讲授一、选择结构的条件判断1、理解条件-产生逻辑值的表达式2、选择结构
18、的流程图绘制3、二元二次方程求根的算法及程序编写二、关系运算符与关系表达式“关系运算”(比较运算)即,将两个值进行比较,判断是否符合或满足给定的条件。1、关系运算符及其优先次序。6种关系运算符。表5-1a) C语言提供4种高于后两种;关系低于算术;关系高于赋值b)关于优先次序:前5-2。例、关系表达式21关系表达式的值是逻辑值,即“真”“假”。C语言没有逻辑型数据,一“真”,0“假”。例。5-3三、逻辑运算符和逻辑表达式(比较运算)即,两个逻辑值的运算。“关系运算”逻辑非()逻辑与(1、逻辑运算符。1)&,(2|逻辑或,3)!、2逻辑运算符的优先顺序:逻辑表达式、3四、条件运算符与条件表达式、
19、单目运算符、双目运算符、三目运算符的概念1、C语言唯一的三目运算符构成的条件表达式2课后自我总结分析备注语言程序设计教案C第15-16课时授课内容第4章(2)选择结构程序设计教学目的和要求选择结构的嵌套;switch语句实现多分支选择结构重点难点重点:选择结构的嵌套;switch语句实现多分支选择结构难点:选择结构的嵌套;switch语句实现多分支选择结构教学安排讲授一、if语句的嵌套1、在if语句中又包含一个或多个if语句称为if语句的嵌套。2、如果if与else的数目不一致,为了体现程序设计者的思想,可加花括号来确定配对的关系。3、利用代码缩进增强代码的可读性,养成良好的编程风格4、例4.
20、5阶跃函数用if语句的嵌套实现(1)绘制流程图(2)将流程图编写成程序二、用switch语句实现多分支选择结构如果条件分支较多,利用if语句显得程序冗长,且可读性降低。因此,C语言设计了 switch语句。1、switch 语句的一般形式2、例4.6输出考试成绩的ABCD段等级(1)绘制流程图(2)将流程图编写成程序3、例4.7用switch语句处理菜单命令三、选择结构程序设计综合举例例4.8判断某一年是否是闰年例4.9求二元二次方程的实根四、上机演示及实践操作在讲课的同时切换软件界面调试代码课后自我总结分析备注语言程序设计教案C第17-18课时授课内容第5章(1)循环结构程序设计教学目的和要
21、求Awhile当型循环、do while直到型循环、for循环重点难点while当型循环、do while直到型循环、for循环的形式、执行过程、使用注意问题教学安排引言重复执行就是循环。重复工作是计算机特别擅长工作之一。重复执行不是简单地重复,每次重复,操作的数据(状态、条件)都可能发生变化。重复的动作是受控制的,C语言提供三种循环控制语句,构成了三种基本的循环结构。讲授一、while语句(当型循环)1、while语句的一般形式是:2、执行过程是:(流程图、N-S图)3、使用while注意的问题。例5-1:利用while语句,编写程序计算1+2+3+一+100。语句(直到型循环)二、do-w
22、hile do-while 语句的一般形式1、2、do-while执行过程(流程图)、do-while说明:3。例5-4:利用do-while 语句计算机1+1/2+1/4+1/50语句(当型循环)for三、1、循环的对应结构)语句的一般形式(给出while for for循环执行过程(流程图)2、时圆的半径。例5-6:写一个程序,计算半径为0.5,1.5,2.5,3.5,4.5,5.5mm n由用户输入。其中:求正整数例5-7n的阶乘n!,语句最容易理解、最常用的形式3、forforC点)6。语言的语句功能强大,使用灵活。语句说明(4、 for四、上机演示及实践操作在讲课的同时切换软件界面调
23、试代码课后自我总结分析备注语言程序设计教案C第19-20课时授课内容第5章(2)循环结构程序设计教学目的和要求掌握条件运算符、条件表达式掌握switch-case语句重点难点switch-case 语句教学安排引言a)复习关系运算、逻辑运算、if语句b)引入简单的条件运算符及表达式、以及开关语句讲授一、条件运算符、条件表达式在if语句中,在表达式为“真”和“假”时,都只执行一个赋值语句给同一个变量赋值时,可以使用简单的条件运算符来处理。例如:if(ab)max=a;else max=b; max=ab?a:b;(1)条件表达式的一般形式:表达式1?表达式2:表达式3(2)条件表达式说明(5点)
24、5-4.例开关语句)二、/switch-case语句(多分支选择语句 switch 一般形式3、(1)-(7)4、switch 语句说明。三、分支程序例子写程序,判断某一年是否是闰年。5.5例5.6例求一元二次方程ax2+bx+c=0的根。例5.7运输公司对用户计算运费。六、应峥例n6-14例:从键盘输入一个大于2的整数,判断是不是素数。例之间的所有素数。:求100-2006-15996-16例:输出下三角乘法表七、上机演示及学生操作在讲课的同时切换软件界面调试代码课后自我总结分析备注语言程序设计教案C第21-22课时授课内 容第6章(1) 一维组的应用教学目的和要求数组的基本概念;维数组定义
25、、初始化、引用;最大值、冒泡排序、选择排序算法。重点难点重点:维数组定义、初始化、引用;求最大值、冒泡排序、选择排序算法;矩阵操作难点:冒泡排序、选择排序算法教学安排引言基本数据类型一构造类型的数据一数组数组、数组元素、数组的下标、数组的维数例如:int a10;一维数组可以看作一个数列,向量。例如:float b33;二维数组可以看作一个矩阵。讲授一、定义和引用一维数组1、一维数组的定义类型说明数组名整型常量表达式2、一维数组定义说明下标从0开始3、数组元素的引用1-10利用数组输出例6.1数组下标越界(2)循环语句(1)、一维数组的初始化的几种形式421)定义时赋初值()部分赋初值(4)数
26、组元素如全部赋值可不指定长度)数组元素全部置0(3(、给数组元素赋初值和给数组集合赋初值的异同5mt temp1=9;(1)给数组元素赋初值int temp10=(1,2,3);给数组集合赋初值(2)二、一维数组的应用例子:用数组来处理斐波那契数列例6-2例6-3:采用“冒泡法”对任意输入的10个整数按由小到大的顺序排序。个整数按由大到小的顺序排序。对任意输入的:采用“选择法”例6-410三、动态内存分配法实现不定长一维数组某些情境需要定义个数组,但数组的长度不定,因为这个长度是根据某些其他条件确定的,这时我们需要定义一个长度不定的数组。如读取不同声音的语音数据序列。课后自我总结分析备注语言程
27、序设计教案C第23-24课时授课内容第6章(2)二维数组和多维数组的应用教学目的和要求一维数组定义、初始化、引用;多维数组重点难点重点:一维数组定义、初始化、;双重for循环读取一维数组;一维数组1维和2维的分辨;、二维数组1维和循环读取二维数组2维的分辨难点:双重for教学安排一、一维数组(注意:类比一维数组)1、二维数组的应用场景2、二维数组的定义3、二维数组元素的内存分布二、二维数组元素的引用例6-5:二维数组元素的引用的例子(自学)-构造、打印单位矩阵。思考:下标是从1开始使用的,哪些元素在此例子中未使用?它们的值是多少?(随机值)三、二维数组的初始化的几种形式(1)分行给二维数组赋值
28、(2)将所有数组写在一个花括号内(3)对部分兀素赋值2维长度不能省略4)对全部元素赋初值,一维数组的1维长度可以省略,(循环法读取一维数组四、双重for比较抽象,图解较直观五、一维数组应峥例例6-4:将二维数组的行和列互换,存到另个数组里。例6-5:找出矩阵所有元素中的最大值。分别计算矩阵的两条对角线(主、辅对角线)上的元素之和。附加例6-六、多维数组的应用1、多维数组的定义、多维数组元素的引用23、多维数组的初始化七、不定长一维数组的实现某些情境需要定义一个一维数组,但一维数组的长度不定,因为这个长度是根据某些其他条件确定的,这时我们需要定义一个长度不定的一维数组。如读取不同尺寸图像点的像素
29、值。八、上机演示及学生操作在讲课的同时切换软件界面调试代码课后自我总结分析备注语言程序设计教案C第25-26课时授课内容第6章(3)字符数组教学目的和要求字符数组定义、初始化、引用;字符串与字符数组;字符串处理函数;字符数组应用重点难点字符串与字符数组;字符串处理函数重点:字符串与字符数组;字符串处理函数难占:八、:教学安排引言复习数组概念,数组定义、初始化、元素引用方法。引入字符数组(元素为字符)。讲授一、字符数组1、字符数组的定义2、字符数组的初始化3、字符数组的引用4、二维字符数组的应峥例一、字符和字符串结束标志1、字符串与字符数组的区别2、字符串结束标记志系统对字符串常量也自动加一个0
30、作为结束符。例如C Program”共有9个字符,但在内存 sizeof()函数可验证)10个字节,最后一个字节0是系统自动加上的。(通过中占三、字符数组的输入和输出)逐个字符输入输出1(2()将整个字符串输出3()利用字符串的结束符批量输出四、字符串概述1、字符串的输出s”格式符(1)“语句的输出项参数用字符数组名,而非数组元素名(2W512、字符串的引用五、由字符数组来构造字符串符形成字符串。根据定义,可由字符数组添加一个0六、二维字符数组、二维字符数组的定义12、二维字符数组的初始化3、二维字符数组的引用课后自我总结分析备注语言程序设计教案C第27-28课时授课内容第6章(4)字符串函数
31、的应用教学目的和要求字符数组定义、初始化、引用;字符串与字符数组;字符串处理函数;字符数组应用重点难点字符串与字符数组;字符串处理函数重点:字符串与字符数组;字符串处理函数难占:八、:教学安排讲授一、使用字符串处理函数1、puts函数2、gets函数3、strcat函数:字符串截取函数4、strcopy和strncopy函数:字符串复制函数5、strcmp函数:字符串比较函数6、strlen测试字符串长度函数7、strlwr函数:转换为小写的函数8、strupr函数:转换为大写的函数二、字符数组应峥例6.8:由键盘任意输入一个字符串和一个字符,要求从该字符串中删除所指定的字符。例例6.9:由键
32、盘输入三个字符串,找出其中的最大串。(字符串库函数的应用)C 标准函数手册三、学会阅读库函数附录F C (包含头文件)1、引师编译头文件include 2、学会阅读函数库函数的函数类型和参数四、字符数组函数的综合练习1、打印杨辉三角形2、有一个已排好序的数组,要求输入一个数后,按原来排序的规律将它插入数组中。23、魔方阵,要求输出1n、找出二维数组的鞍点,即该位置上的元素在该行上最在、在该列上最小,也可能没有鞍4点。strcat函数。、编一程序,将两个字符串连接起来,不要用5四、上机演示及学实践操作在讲课的同时切换软件界面调试代码课后自我总结分析备注C语言程序设计教案课时29-30第授课内容第
33、7章(1)函数及函数的调用教学目的和要求掌握函数定义、调用、声明;函数参数传递方式;了解函数递归调用重点难点重点:函数定义、调用、声明;函数参数传递方式函数参数传递方式传址(尚未学习指针,用数组举例)难点:教学安排讲授一、函数概述1、C语言的函数。C语言的函数是子程序的总称,包括函数和过程。C语言函数可以分为库函数、用户自定义函数2、C语言的程序由函数组成,函数是C语言程序的基本单位,程序的总体功能通过函数的调用来实现。其中,main起点(图)3、函数的些概念:主函数、其它函数;主调函数、被调函数;库函数、用户自定义函数;无参函数、有参函数;无返回值函数、有返回值函数二、函数的一般形式一函数应
34、当先定义,后调用。函数定义的一般形式及说明(1)(2)例7-1:输入三个整数,求三个整数中的最大值,打印。思考问题。三、函数的参数和返回值、参数的传递。、实际参数1、形式参数23语句及说明。return、函数返回值。2四、函数的调用)函数调用的一般形式及说明1、(单独语句/表达式中、参数相容例7-3(自学):以表达式的形式进行函数的调用。参数传递、函数的返回值、全局变量函数调用时数据的传递2、(注意参数传递的是数组的地址):求学生平均成绩。例7-4P110.3、函数的声明7-5:函数声明例子。P112.例五、函数的嵌套调用和递归调用函数允许嵌套调用和递归调用。递归调用是嵌套调用的特例。函数的嵌
35、套调用(1)P113.例7-6:计算两整数的最小公倍数。函数的递归调用(2)(:用递归法求7-7n!P.114)例课后自我总结分析备注C语言程序设计教案课时31-32第授课内容第7章(2)函数变量的作用域和生命周期教学目的和要求掌握变量作用域、生命期掌握插入排序重点难点重点:变量作用域、生命期;插入排序难点:变量作用域、生命期;插入排序教学安排讲授六、变量的作用域(有效范围、可见性)变量的作用域:变量的有效范围或者变量的可见性。变量定义的位置决定了变量的作用域。变量从作用域(变量的有效范围,可见性)的角度可以分为:局部变量,全局变量。1、局部变量(函数体内变量、形参变量、复合语句内变量)一互不
36、干预、动态分配例7-8:各函数局部变量同名的应用示例。P116-117.2、全局变量(所有函数之外一文件作用域、程序作用域)全局变量可以和局部变量同名一坐井观天例7-9:全局变量、局部变量同名的应嗫例。P118。例7-10:全局变量、局部变量的应嗫例。P118。七、变量的存储类别(生存期、生命期)变量从空间上分为局部变量、全局变量。从变量存在的时间的长短(即变量生存期)来划分,变量还可以分为:动态存储变量、静态存储变量。变量的存储方式决定了变量的生存期。语言变量的存储方式可以分为:动态存储方式、静态存储方式。 C。auto,register全局变量全部是静态的;局部变量可以是静态,也可以是动态
37、().P120.(完成 n+(n-1)+(n-2)+.+1)例7-11:寄存器局部变量的应用:静态局部变量的应嗫例。P121.例7-12八、内部函数和外部函数默认是外部函数九、函数应用举例例P124.7-14:字符串逆序。P124-125.7-15:求矩阵最大元素。例P125-126.7-16:利用插入法将10个字符从小到大进行排序。例课后自我总结分析备注语言程序设计教案C第33-34课时授课内容第8章(1)指针概述及指针作为函数参数教学目的和要求指针的基本概念,变量访问方式;指针变量定义、赋值、引用。指针作为函数参数。重点难点重点:指针的基本概念;指针变量定义、赋值、引用;指针作为函数参数难
38、点:指针的基本概念教学安排讲授一指针基础一、指针变量的定义(变量先定义后使用)1、定义格式:2、说明:(1)指针变量基类型-指针变量指向数据的类型(2)指针变量存放地址值,本身占用空间2字节二、指针变量的赋值(使用未赋值指针等同于向一个随机的内存中写入数据)1、将地址直接赋值给指针变量。例如,float *f=malloc(4);2、将变量地址赋值给指针变量。例如:float a,*p; p=&a;三、指针变量的引用1、&运算符(取地址运算符)2、*运算符(指针运算符、间接访问运算符)指针变量定义、赋值、引用例子。P137.例9-1,四、指针变量作为函数的参数变量可以作为函数参数,指针变量同样
39、可以作为函数参数。使用指针作为函数参数,可以在函数中对指针所指向变量的值进行处理(修改)。指针作为函数参数,本质上同样是单向传值,但是由于传递的是地址值,所以可以通过地址值间接修改形参、实参共同指向的变量。:输入2飞两个数交换后输出。例9-2 swap 函数中使用两个指针作为函数参数,对两个指针所指向变量值进行交换。在结论:1、要在被调用函数中,修改主调函数的变量值应当:()将主调函数变量的地址传递给被调用函数,就是说函数应当传递的是变量的地址。12()被调用函数的形参应当使用指针变量接受主调函数的地址值。)在被调用函数中通过形参指针变量间接访问,修改实参、形参地址所共同指向的变量。3(本例的
40、操作是交换两个指针变量所指向的变量。2、函数使用指针作为参数,可以增加主调函数与被调函数之间数据沟通的渠道。课后自我总结分析备注语言程序设计教案C第35-36课时授课内容第8章(2)通过指针引用数组教学目的和要求通过指针引用数组元素;数组的指针变量”作为函数参数;通过指针指向多维数组重点难点重点:数组的指针变量”作为函数参数;通过指针指向多维数组难点:数组的指针变量”作为函数参数;通过指针指向多维数组教学安排讲授一、数组元素的指针每个数组元素都在内存中占有存储单元,它们都有相应的地址,所谓数组元素的指针就是数组元素的地址。二、在引用指针元素时指针的运算1、在一定条件下允许对指针进行加和减的运算
41、。2、在指针指资组元素时,可以对指针进行加和自加,减和自减运算。三、通过指针引用数组元素1、下标法2、指针法个元素。a的10例8.7通过指针变量输出整型数组四、用数组名和“数组的指针变量”作为函数参数个整数按相反顺序存放。中将数组an例8.88.8写成指针变量作实参例8.9将例例8.10用指针法对10个整数按从大到小顺序排序五、通过指针指向多维数组、多维数组的地址1、指向多维数组元素的指针21)指资组元素的指针变量(X有一个34的一维数组,要求用指向元素的指针变量输出二维数组各元素的值。例8.12)指向由皿个元素组成的一维数组的指针变量(23、用指资组的指针作函数参数3例8.14有一个班,个学
42、生,各学4门课程,计算总平均分数以及第个学生的成绩。n门以上课程不及格的学生,输出他们全部课程的成18.148.15例在例的基础上,查找有绩。课后自我总结分析备注C语言程序设计教案课时37-38第授课内容第8章(3)通过指针引用字符串教学目的和要求掌握字符指针作为函数参数;理解使用字符指针变量和字符数组的异同重点难点重点:字符指针作为函数参数;理解使用字符指针变量和字符数组的异同难点:字符指针作为函数参数;理解使用字符指针变量和字符数组的异同教学安排讲授一、字符串的引用方式1、可通过字符数组名和下标引用字符串中的一个字符。2、也可以通过数组名和格式声明$输出该字符串例8.16定义一个字符数组,
43、在其中存放字符串“I love China!”,输出该字符串和第8个字符。 C语言中只有字符变量,没有字符串变量。例8.18将字符串a复制为字符串b,然后输出字符串b。例8.19例8.18改用指针变量来处理二、字符指针作为函数参数例8.20用函数调用实现字符串的复制)用字符数组名作为函数的参数1()用字符指针变量作为函数的参数(2其实编译系统把字符数组名按指针变量处理的,只是表示形式不同。三、使用字符指针变量和字符数组的比较1、字符数组由若干个元素组成,每个元素中放一个字符,而字符指针变量仲放的是地址。2、赋值方式。可以对字符指针变量赋值,但不能对数组名赋值3、初始化含义、存储单元内容4、指针
44、变量的值是可以改变的,而数组名代表一个固定的值56、字符数组中各元素的值是可以改变的。、引用数组元素7四、随堂练习int strcmp(char *p1,char*p2)写一函数,实现两个字符串的比较。五、上机演示及学实践操作在讲课的同时切换到编译器界面调试代码课后自我总结分析备注C语言程序设计教案课时39-40第授课内容第8章(4)动态内存管理与指向它的指针变量教学目的和要求掌握用函数指针变量调用函数;掌握用指向函数的指针作函数参数重点难点重点:用函数指针变量调用函数;用指向函数的指针作函数参数难点:用函数指针变量调用函数;用指向函数的指针作函数参数教学安排讲授一、指向函数的指针编译系统为函
45、数代码分配一段存储空间,这段存储空间的起始地址,称为这个函数的指针二、用函数指针变量调用函数例8.22求两个整数的最大值讲解通过函数名调用函数与通过指针变量访问它所指向的函数的异同。三、怎样定义和使用指向函数的指针变量类型名(*指针变量名)(函数参数表列)例8.23讲解四、用指向函数的指针作函数参数指向函数指针变量的一个重要用途是把函数的地址作为参数传递到其它函数。讲解例8.24五、返回指针值的函数一个函数可以返回一个整型值、字符值、实型值等,也可以返回指针型的数据,即地址。定义返回指针值函数的一般形式为:*函数名(参数表列)类型名讲解8.25例六、指针数组和多重指针1、什么是指针数组、指向指针数据的指针28.28例讲解、指针数组作主函数的形参3七、上机演示及学实践操作在讲课的同时切换到编译器界面调试代码课后自我总结分析备注语言程序设计教案C第41-42课时授课内容第8章(5)动态内存分配教学目的和要求掌握指针数组和多重指针;掌握动态内存分配的技巧重点难点重点:指针数组和多重指针;动态内存分配的技巧难点:指针数组和多重指针;动态内存分配的技巧教学安排讲授C定义了4个内存区间:代码区,全局变量与静态变量
限制150内