《C语言程序的设计》-谭浩强(第四版)教(学)案_第1页
《C语言程序的设计》-谭浩强(第四版)教(学)案_第2页
《C语言程序的设计》-谭浩强(第四版)教(学)案_第3页
《C语言程序的设计》-谭浩强(第四版)教(学)案_第4页
《C语言程序的设计》-谭浩强(第四版)教(学)案_第5页
已阅读5页,还剩51页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

./《C语言程序设计》教案课程名称C语言程序设计教材C语言程序设计〔第四版作者:谭浩强清华大学出版社考核方式考试课程.总成绩:课堂参与占10%;试验报告占20%;期末考试占70%〔闭卷考试.教学基本目的和要求C语言是近年来国内外得到迅速推广使用的一种计算机语言.C语言程序设计课程是计算机专业和信息管理专业的核心专业基础课,它功能丰富,表达能力强,使用灵活方便,应用面广,目标程序效率高,可移植性好,既具有高级语言的优点,又具有低级语言的优点.既适用于应用软件编写,又适用于系统软件的编写.在现代的工业机器人的众多语言中,大多编程风格以C语言非常类似,学生学好C语言,对将来的工作中,从事工业机器人现场编程是非常有帮助的.课程的性质和任务《语言程序设计》这门课是我校工业机器人、分布式发电与微电网专业的专业必修课.作为计算机系的数据结构、c++、单片机编程等课程的前导课程,也是一门实践性很强的课程,既要掌握概念,又要动手编程,还要上机调试运行.对工业机器人专业来说是一门必修的课程.

同时,这门课程也是"XX省非计算机专业学生计算机应用能力水平考试"二级考试的主要语种之一.课程的教学目标本课程的教学目标是:通过理论和实践教学,使学生较好地掌握C语言各方面的知识,掌握基本的程序设计过程和技巧,具备初步的高级语言程序设计能力,并能熟练应用VC++6.0集成环境进行C语言的编写、编译与调试,能应用C语言解决一般编程问题的水平.教学重点和难点一、程序设计和C语言重点:计算机程序、计算机语言、C语言编译软件的安装、最简单的C语言程序二、算法:程序的灵魂

重点:简单的算法举例、算法的特性、用流程图表示算法.三、顺序结构程序设计

重点:

C语言的数据类型、C语句的种类、赋值语句、数据的输入输出及输入输出中最常用的控制格式.四、选择结构程序设计

重点:关系运算符与逻辑运算符及其组成的具有逻辑值的表达式、二条分支语句的格式及基本应用、多分支的选择语句.五、循环结构程序设计

重点:C构成循环的四种方法,尤其是后三种方法、break与continue语句的基本作用.难点:while语句;do-while语句;for语句;循环的嵌套;break与continue语句.六、数组重点:一维数组、二维数组的定义与引用;字符数组的定义与引用、常用字符串处理函数及字符处理函数;数组的应用难点:二维数组的定义与引用;字符数组;数组的应用七、函数

重点:函数的定义;函数的参数和函数的值;函数的调用;函数的嵌套调用;函数的递归调用;数组作为函数参数;变量作用域;量存储类别;难点:函数定义、函数调用、函数声明等基本基本概念;函数的嵌套调用与递归调用;数组作为函数的参数、变量的存储类别与作用域.八、指针重点和难点:指针与地址的基本概念、指针与变量的关系;指针与数组;指针与字符串、指针数组与二级指针;指针的应用九、建立自己的数据类型

重点和难点:定义和使用结构体变量、用指针处理链表、共用体类型十、文件

重点:文件的基本知识、fopen、fclose函数打开与关闭文件、顺序读写数据文件、随机读写数据文件难点:用二进制方式向文件读写一组数据.十一、常见错误分析

重点和难点:文件的基本概念;文件的打开、关闭、常用读写方法.

十二、数组高级应用重点:不定长数组与二维数组的应用难点:不定长数组与二维数组的应用十三、综合应用重点:数组、if语句、

循环语句、函数知识的综合应用难点:二维数组、指针教材、参考书教材:《C程序设计》〔第四版谭浩强著清华大学出版社2010年6月参考书:《C程序设计语言》Kernighan&Ritchie机械工业出版社《C语言程序设计》教案第1-2课时授课内容教学目的和要求了解C历史,名称来源、C特点,掌握C程序基本结构;C语言的版本、C语言的关键字;重点难点C语言的关键字;教学安排引言语言:人-人语言交流;聋哑人-手势语;人机-计算机语言C语言是一种流行的计算机高级语言,C语言适合于编写系统软件,也可以编写应用程序.讲授一、语言出现的历史背景〔1C语言的发展源于人们希望用高级语言编写操作系统.〔C-BCPL第二字母ALGOL60〔高级语言->CPL〔硬件支持-BCPC->B->C->标准C->ANSIC->ISOC语言既具有高级语言特性,又具有低级语言特性-中级语言.二、C语言的特点C语言既具有一般高级语言特性,又具有低级语言特性.8个特点.1、C语言简洁、紧凑.2、运算符丰富.3、数据结构类型丰富.4、具有结构化的控制语句.5、语法限制不太严格,程序设计自由度大.6、C语言允许直接访问物理地址,能实现汇编语言的大部分功能,可以直接对硬件进行操作.7、生成目标代码质量高,程序执行效率高.8、与汇编语言相比,用C语言写的程序可移植性好.三、C语言的关键字附录C〔书本378页四、C语言的版本和关键字auto、inline、restrict、_bool、_Complex、_Imaginary是后来扩充的,有些编译器也扩充了关键词.五、TurboC编译器的安装与使用课后自我总结分析备注《C语言程序设计》教案第3-4课时授课内容教学目的和要求了解C语言常用的编译器;掌握重点难点重点:难点:教学安排讲授一、C语言常用的编译器〔132位的WINDOWS操作系统与64位的WINDOWS操作系统〔2VC++6.0〔2VS2015二、文件夹与压缩包1、文件夹2、文件的压缩与解压3、软件的下载4、软件安装的一般流程5、产品id号、序列号与破解补丁三、7、生成目标代码质量高,程序执行效率高.8、与汇编语言相比,用C语言写的程序可移植性好.四、编译器的使用1、基于安卓手机操作系统的C语言编译器2、编译器的安装编译器的使用六、上机演示及实践操作在win7电脑上示范编译器的安装和使用课后自我总结分析同学们对计算机基础知识比较缺乏,安装VC++6.0时,不知道如何解压,也不知道如何下载和计算机操作系统版本匹配的VC++6.0或VS2015备注《C语言程序设计》教案第5-6课时授课内容教学目的和要求了解算法的基本概念、程序设计的一般流程、掌握书写简单的算法流程、了解算法的特性重点难点掌握书写简单的算法流程.教学安排引言〔5分钟什么是算法?菜谱、拳谱、歌谱都是广义的算法.以XX去北京开会为例解释算法的优劣.1+2+3+…100的常规算法和高斯的首尾相加快递算法讲授一、简单算法举例〔37分钟〔1求5!〔10分钟常规求解方式的烦琐引出用循环方式求解的方法.分析用循环方式求5!的C语言代码〔2求1×3×4×5×7×9×11〔10分钟询问同学此题与5!的异同,引每项是2n-1的通项,在上题的基础上改动少量代码可实现本题的C语言编程.〔3求2000-2500年间的闰年〔10分钟图示方式给学生解说闰年要满足的条件,引出要做多次判断的较复杂流程提问:能被4整除,也能被100整除,是不是等同能被400整除这一认识误区再次提问:2000年是不是闰年,为什么?2060年是不是闰年,为什么?检测学生是否了解闰年判断流程.<4>素数的求法〔7分钟根据素数的定义来循环判断是否能被一系列数整除,最后判断是不是素数,请学生尝试写出求解流程.二、算法的特性〔3分钟1、有穷性.2、确定性.3、0个或多少输入.4、1个或多个输出.5、有效性.三、上机演示及实践操作在讲课的同时切换软件界面调试代码课后自我总结分析通过提问可以了解同学们对知识的掌握程序,互动性的教学设计更有益于教学备注《C语言程序设计》教案第7-8课时授课内容教学目的和要求掌握用流程图表示算法;了解传统流程图的弊端;掌握N-S流程图表示方法.重点难点重点:掌握用流程图表示算法;掌握N-S流程图表示方法难点:掌握用流程图表示算法;掌握N-S流程图表示方法教学安排讲授一、用流程图表示算法〔15分钟1、介绍流程图的图框及含义起止框、输入输出框、判断框、处理框、流程线、连接点、注释框2、示范用流程图表示两个分支的if语句3、将例2.1的算法用流程图表示并分析4、将例2.2的算法用流程图表示并分析5、将例2.3的算法用流程图表示并分析总结:流程图表示算法比较直观2、将例2.4多项式求和用流程图表示〔1、书本求解本题算法的流程图表示〔2、其它算法的流程图表示二、三种基本结构和改进的流程图〔15分钟1、统流程图的弊端2、三种基本结构〔1顺序〔2选择〔3循环分当型和直到型两种二、用N—S流程图表示算法〔15分钟1、N-S流程图的符号2、将例2.1的算法用N-S流程图表示并分析3、将例2.2的算法用N-S流程图表示并分析4、将例2.3的算法用N-S流程图表示并分析三、实践环节对"分时问候"的算法绘制N-S流程图课后自我总结分析备注《C语言程序设计》教案第9-10课时授课内容教学目的和要求举例说明顺序程序调序的基本流程、整型数据类型、整型数据的溢出.重点难点重点:整型数据类型;整型数据的溢出难点:整型数据类型;整型数据的溢出教学安排讲授一、顺序程序设计举例<10分钟>1、绘制例3.1算法的N-S流程图2、根据N-S流程图编写代码并调试二、常量与变量<15分钟>1、常量概念.<1>整型常量、整型常量、字符常量、字符串常量<2>ASCII字符<3>转义字符2、变量概念、变量名<1>先定义,后使用<2>变量名与变量值概念的异同三、数据类型概述<5分钟>1、不同类型的数据在内存中占用的存储单位长度是不同的VC++6.0为字符型数据分配一个字节长度;为int型〔基本型分配4个字节的长度.2、存储不同数据类型的方法也是不同的.四、整型数据<15分钟>1、整型数据的分类:<1>基本整型<int型><2>短整型<shortint>;<3>长整型<longint>2、整型变量的符号属性<1>有符号型和无符号型<2>整型数据常见的存储空间和值的范围3、整型数据的溢出五、上机演示及实践操作在讲课的同时切换编译界面调试整型数据溢出课后自我总结分析备注《C语言程序设计》教案第11-12课时授课内容教学目的和要求举例说明顺序程序调序的基本流程、数据的表现形式及运算、不同数据类型的混合运算.重点难点整型数据类型longint和shortint数据类型、运算符的优级先级、不同数据类型的混合运算教学安排讲授一、浮点型数据1、浮点型数据的存储方式2、浮点型数据的表现形式浮点数据的指数形式3、浮点型数据的类型〔1单精度〔2双精度〔3长双精度二、字符型数据字符常量表示.直接表示/转义表示〔特殊的转义字符,一般字符也可以转义表示.特殊转义字符对显示/打印的控制作用字符变量-1个字节,char关键词.字符数据的存储-ASCII码/二进制存储-C语言可以将字符看做很短的整数处理.例2-7A,例2-8A可以看出字符数据的具有整数特性.三、怎样确定常量的类型1、从常量的表示形式,如精度2、只要看到单撇号括起来的单个字符或转义字符即字符常量四、运算符与表达式1、基本的算术运算符2、自增、自减运算符3、算术表达式和运算符的优先级与结合性五、数值型数据混合运算1、自动隐式转换.2、强制类型转换.六、C语句1、控制语句2、函数调用语句3、表达式语句4、空语句5、复合语句七、上机演示及实践操作在讲课的同时切换编译界面调试整型数据溢出课后自我总结分析备注《C语言程序设计》教案第13-14课时授课内容教学目的和要求理解条件-产生逻辑值的表达式;熟练绘制选择语句算术的流程图掌握关系运算符、关系表达式;逻辑运算符、逻辑表达式重点难点重点:关系运算符、关系表达式;逻辑运算符、关系表达式难点:熟练绘制选择语句算术的流程图教学安排讲授一、选择结构的条件判断1、理解条件-产生逻辑值的表达式2、选择结构的流程图绘制3、二元二次方程求根的算法及程序编写二、关系运算符与关系表达式"关系运算"〔比较运算即,将两个值进行比较,判断是否符合或满足给定的条件.关系运算符及其优先次序C语言提供6种关系运算符.表5-1.关于优先次序:前4种高于后两种;关系低于算术;关系高于赋值例5-2.关系表达式关系表达式的值是逻辑值,即"真""假".C语言没有逻辑型数据,1-"真",0-"假".例5-3.三、逻辑运算符和逻辑表达式"关系运算"〔比较运算即,两个逻辑值的运算.逻辑运算符.〔1&&逻辑与,〔2||逻辑或,〔3!逻辑非逻辑运算符的优先顺序:逻辑表达式四、条件运算符与条件表达式1、单目运算符、双目运算符、三目运算符的概念2、C语言唯一的三目运算符构成的条件表达式课后自我总结分析备注《C语言程序设计》教案第15-16课时授课内容教学目的和要求选择结构的嵌套;switch语句实现多分支选择结构重点难点重点:选择结构的嵌套;switch语句实现多分支选择结构难点:选择结构的嵌套;switch语句实现多分支选择结构教学安排讲授一、if语句的嵌套1、在if语句中又包含一个或多个if语句称为if语句的嵌套.2、如果if与else的数目不一致,为了体现程序设计者的思想,可加花括号来确定配对的关系.3、利用代码缩进增强代码的可读性,养成良好的编程风格4、例4.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课时授课内容教学目的和要求掌握while当型循环、dowhile直到型循环、for循环重点难点while当型循环、dowhile直到型循环、for循环的形式、执行过程、使用注意问题教学安排引言重复执行就是循环.重复工作是计算机特别擅长工作之一.重复执行不是简单地重复,每次重复,操作的数据〔状态、条件都可能发生变化.重复的动作是受控制的,C语言提供三种循环控制语句,构成了三种基本的循环结构.讲授一、while语句〔当型循环1、while语句的一般形式是:2、执行过程是:〔流程图、N-S图3、使用while注意的问题.例5-1:利用while语句,编写程序计算1+2+3+…+100.二、do-while语句〔直到型循环1、do-while语句的一般形式2、do-while执行过程〔流程图3、do-while说明:例5-4:利用do-while语句计算机1+1/2+1/4+…+1/50.三、for语句〔当型循环for语句的一般形式〔给出while循环的对应结构for循环执行过程〔流程图例5-6:写一个程序,计算半径为0.5,1.5,2.5,3.5,4.5,5.5mm时圆的半径.例5-7:求正整数n的阶乘n!,其中n由用户输入.for语句最容易理解、最常用的形式for语句说明〔6点.C语言的for语句功能强大,使用灵活.四、上机演示及实践操作在讲课的同时切换软件界面调试代码课后自我总结分析备注《C语言程序设计》教案第19-20课时授课内容教学目的和要求掌握条件运算符、条件表达式掌握switch-case语句重点难点switch-case语句教学安排引言复习关系运算、逻辑运算、if语句引入简单的条件运算符及表达式、以及开关语句讲授一、条件运算符、条件表达式在if语句中,在表达式为"真"和"假"时,都只执行一个赋值语句给同一个变量赋值时,可以使用简单的条件运算符来处理.例如:if<a>b>max=a;elsemax=b;<=>max=a>b?a:b;条件表达式的一般形式:表达式1?表达式2:表达式3条件表达式说明〔5点例5-4.二、switch-case语句〔多分支选择语句/开关语句switch一般形式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课时授课内容教学目的和要求数组的基本概念;一维数组定义、初始化、引用;最大值、冒泡排序、选择排序算法.重点难点重点:一维数组定义、初始化、引用;求最大值、冒泡排序、选择排序算法;矩阵操作难点:冒泡排序、选择排序算法教学安排引言基本数据类型-构造类型的数据-数组数组、数组元素、数组的下标、数组的维数例如:inta[10];一维数组可以看作一个数列,向量.例如:floatb[3][3];二维数组可以看作一个矩阵.讲授一、定义和引用一维数组1、一维数组的定义类型说明数组名[整型常量表达式]2、一维数组定义说明下标从0开始3、数组元素的引用例6.1利用数组输出1-10<1>循环语句<2>数组下标越界4、一维数组的初始化的几种形式〔1定义时赋初值〔2部分赋初值〔3数组元素全部置0〔4数组元素如全部赋值可不指定长度5、给数组元素赋初值和给数组集合赋初值的异同<1>给数组元素赋初值inttemp[1]=9;<2>给数组集合赋初值inttemp[10]=<1,2,3>;二、一维数组的应用例子例6-2:用数组来处理斐波那契数列例6-3:采用"冒泡法"对任意输入的10个整数按由小到大的顺序排序.例6-4:采用"选择法"对任意输入的10个整数按由大到小的顺序排序.三、动态内存分配法实现不定长一维数组某些情境需要定义一个数组,但数组的长度不定,因为这个长度是根据某些其他条件确定的,这时我们需要定义一个长度不定的数组.如读取不同声音的语音数据序列.课后自我总结分析备注《C语言程序设计》教案第23-24课时授课内容教学目的和要求二维数组定义、初始化、引用;多维数组重点难点重点:二维数组定义、初始化、;双重for循环读取二维数组;二维数组1维和2维的分辨;难点:双重for循环读取二维数组二维数组1维和2维的分辨教学安排二、二维数组<注意:类比一维数组>1、二维数组的应用场景2、二维数组的定义3、二维数组元素的内存分布二、二维数组元素的引用例6-5:二维数组元素的引用的例子〔自学-构造、打印单位矩阵.思考:下标是从1开始使用的,哪些元素在此例子中未使用?它们的值是多少?〔随机值三、二维数组的初始化的几种形式〔1分行给二维数组赋值〔2将所有数组写在一个花括号内〔3对部分元素赋值〔4对全部元素赋初值,二维数组的1维长度可以省略,2维长度不能省略四、双重for循环法读取二维数组比较抽象,图解较直观五、二维数组应用举例例6-4:将二维数组的行和列互换,存到另一个数组里.例6-5:找出矩阵所有元素中的最大值.例6-附加分别计算矩阵的两条对角线〔主、辅对角线上的元素之和.六、多维数组的应用1、多维数组的定义2、多维数组元素的引用3、多维数组的初始化七、不定长二维数组的实现某些情境需要定义一个二维数组,但二维数组的长度不定,因为这个长度是根据某些其他条件确定的,这时我们需要定义一个长度不定的二维数组.如读取不同尺寸图像点的像素值.八、上机演示及学生操作在讲课的同时切换软件界面调试代码课后自我总结分析备注《C语言程序设计》教案第25-26课时授课内容教学目的和要求字符数组定义、初始化、引用;字符串与字符数组;字符串处理函数;字符数组应用重点难点重点:字符串与字符数组;字符串处理函数难点:字符串与字符数组;字符串处理函数教学安排引言复习数组概念,数组定义、初始化、元素引用方法.引入字符数组〔元素为字符.讲授一、字符数组1、字符数组的定义2、字符数组的初始化3、字符数组的引用4、二维字符数组的应用举例二、字符和字符串结束标志1、字符串与字符数组的区别2、字符串结束标记志系统对字符串常量也自动加一个'\0'作为结束符.例如"CProgram"共有9个字符,但在内存中占10个字节,最后一个字节'\0'是系统自动加上的.〔通过sizeof<>函数可验证三、字符数组的输入和输出〔1逐个字符输入输出〔2将整个字符串输出〔3利用字符串的结束符批量输出四、字符串概述1、字符串的输出<1>"%s"格式符<2>print语句的输出项参数用字符数组名,而非数组元素名2、字符串的引用五、由字符数组来构造字符串根据定义,可由字符数组添加一个'\0'符形成字符串.六、二维字符数组1、二维字符数组的定义2、二维字符数组的初始化3、二维字符数组的引用课后自我总结分析备注《C语言程序设计》教案第27-28课时授课内容教学目的和要求字符数组定义、初始化、引用;字符串与字符数组;字符串处理函数;字符数组应用重点难点重点:字符串与字符数组;字符串处理函数难点:字符串与字符数组;字符串处理函数教学安排讲授一、使用字符串处理函数1、puts函数2、gets函数3、strcat函数:字符串截取函数4、strcopy和strncopy函数:字符串复制函数5、strcmp函数:字符串比较函数6、strlen测试字符串长度函数7、strlwr函数:转换为小写的函数8、strupr函数:转换为大写的函数二、字符数组应用举例例6.8:由键盘任意输入一个字符串和一个字符,要求从该字符串中删除所指定的字符.例6.9:由键盘输入三个字符串,找出其中的最大串.〔字符串库函数的应用三、学会阅读C标准函数手册附录FC库函数1、引用预编译头文件include〔包含头文件2、学会阅读函数库函数的函数类型和参数四、字符数组函数的综合练习1、打印杨辉三角形2、有一个已排好序的数组,要求输入一个数后,按原来排序的规律将它插入数组中.3、魔方阵,要求输出1~n24、找出二维数组的鞍点,即该位置上的元素在该行上最在、在该列上最小,也可能没有鞍点.5、编一程序,将两个字符串连接起来,不要用strcat函数.四、上机演示及学实践操作在讲课的同时切换软件界面调试代码课后自我总结分析备注《C语言程序设计》教案第29-30课时授课内容教学目的和要求掌握函数定义、调用、声明;函数参数传递方式;了解函数递归调用重点难点重点:函数定义、调用、声明;函数参数传递方式难点:函数参数传递方式-传址〔尚未学习指针,用数组举例教学安排讲授一、函数概述1、C语言的函数.C语言的函数是子程序的总称,包括函数和过程.C语言函数可以分为库函数、用户自定义函数2、C语言的程序由函数组成,函数是C语言程序的基本单位,程序的总体功能通过函数的调用来实现.其中,main起点〔图3、函数的一些概念:主函数、其它函数;主调函数、被调函数;库函数、用户自定义函数;无参函数、有参函数;无返回值函数、有返回值函数二、函数的一般形式-函数应当先定义,后调用.函数定义的一般形式及说明<1><2>例7-1:输入三个整数,求三个整数中的最大值,打印.思考问题.三、函数的参数和返回值形式参数2、实际参数3、参数的传递.函数返回值.return语句及说明.四、函数的调用函数调用的一般形式及说明<单独语句/表达式中、参数相容>例7-3:以表达式的形式进行函数的调用.〔自学函数调用时数据的传递-参数传递、函数的返回值、全局变量例7-4:求学生平均成绩.P110.〔注意参数传递的是数组的地址函数的声明例7-5:函数声明例子.P112.五、函数的嵌套调用和递归调用函数允许嵌套调用和递归调用.递归调用是嵌套调用的特例.<1>函数的嵌套调用例7-6:计算两整数的最小公倍数.P113.<2>函数的递归调用例7-7:用递归法求n!〔P.114课后自我总结分析备注《C语言程序设计》教案第31-32课时授课内容教学目的和要求掌握变量作用域、生命期掌握插入排序重点难点重点:变量作用域、生命期;插入排序难点:变量作用域、生命期;插入排序教学安排讲授六、变量的作用域〔有效范围、可见性变量的作用域:变量的有效范围或者变量的可见性.变量定义的位置决定了变量的作用域.变量从作用域〔变量的有效范围,可见性的角度可以分为:局部变量,全局变量.1、局部变量〔函数体内变量、形参变量、复合语句内变量-互不干预、动态分配例7-8:各函数局部变量同名的应用示例.P116-117.2、全局变量〔所有函数之外-文件作用域、程序作用域全局变量可以和局部变量同名-坐井观天例7-9:全局变量、局部变量同名的应用示例.P118.例7-10:全局变量、局部变量的应用示例.P118.七、变量的存储类别〔生存期、生命期变量从空间上分为局部变量、全局变量.从变量存在的时间的长短〔即变量生存期来划分,变量还可以分为:动态存储变量、静态存储变量.变量的存储方式决定了变量的生存期.C语言变量的存储方式可以分为:动态存储方式、静态存储方式.全局变量全部是静态的;局部变量可以是静态,也可以是动态〔auto,register.例7-11:寄存器局部变量的应用.P120.〔完成n+<n-1>+<n-2>+...+1例7-12:静态局部变量的应用示例.P121.八、内部函数和外部函数默认是外部函数九、函数应用举例例7-14:字符串逆序.P124.例7-15:求矩阵最大元素.P124-125.例7-16:利用插入法将10个字符从小到大进行排序.P125-126.课后自我总结分析备注《C语言程序设计》教案第33-34课时授课内容教学目的和要求指针的基本概念,变量访问方式;指针变量定义、赋值、引用.指针作为函数参数.重点难点重点:指针的基本概念;指针变量定义、赋值、引用;指针作为函数参数难点:指针的基本概念教学安排讲授-指针基础一、指针变量的定义〔变量先定义后使用定义格式:说明:<1>指针变量基类型-指针变量指向数据的类型<2>指针变量存放地址值,本身占用空间2字节二、指针变量的赋值〔使用未赋值指针等同于向一个随机的内存中写入数据将地址直接赋值给指针变量.例如,float*f=malloc<4>;将变量地址赋值给指针变量.例如:floata,*p;p=&a;三、指针变量的引用1、&运算符〔取地址运算符2、*运算符〔指针运算符、间接访问运算符例9-1,P137.指针变量定义、赋值、引用例子.四、指针变量作为函数的参数变量可以作为函数参数,指针变量同样可以作为函数参数.使用指针作为函数参数,可以在函数中对指针所指向变量的值进行处理〔修改.指针作为函数参数,本质上同样是单向传值,但是由于传递的是地址值,所以可以通过地址值间接修改形参、实参共同指向的变量.例9-2:输入a,b两个数交换后输出.在swap函数中使用两个指针作为函数参数,对两个指针所指向变量值进行交换.结论:1、要在被调用函数中,修改主调函数的变量值应当:将主调函数变量的地址传递给被调用函数,就是说函数应当传递的是变量的地址.被调用函数的形参应当使用指针变量接受主调函数的地址值.在被调用函数中通过形参指针变量间接访问,修改实参、形参地址所共同指向的变量.本例的操作是交换两个指针变量所指向的变量.2、函数使用指针作为参数,可以增加主调函数与被调函数之间数据沟通的渠道.课后自我总结分析备注《C语言程序设计》教案第35-36课时授课内容教学目的和要求通过指针引用数组元素;数组的指针变量"作为函数参数;通过指针指向多维数组重点难点重点:数组的指针变量"作为函数参数;通过指针指向多维数组难点:数组的指针变量"作为函数参数;通过指针指向多维数组教学安排讲授一、数组元素的指针每个数组元素都在内存中占有存储单元,它们都有相应的地址,所谓数组元素的指针就是数组元素的地址.二、在引用指针元素时指针的运算1、在一定条件下允许对指针进行加和减的运算.2、在指针指向数组元素时,可以对指针进行加和自加,减和自减运算.三、通过指针引用数组元素1、下标法2、指针法例8.7通过指针变量输出整型数组a的10个元素.四、用数组名和"数组的指针变量"作为函数参数例8.8将数组a中n个整数按相反顺序存放.例8.9将例8.8写成指针变量作实参例8.10用指针法对10个整数按从大到小顺序排序五、通过指针指向多维数组1、多维数组的地址2、指向多维数组元素的指针〔1指向数组元素的指针变量例8.12有一个3×4的二维数组,要求用指向元素的指针变量输出二维数组各元素的值.〔2指向由m个元素组成的一维数组的指针变量3、用指向数组的指针作函数参数例8.14有一个班,3个学生,各学4门课程,计算总平均分数以及第n个学生的成绩.例8.15在例8.14的基础上,查找有1门以上课程不及格的学生,输出他们全部课程的成绩.课后自我总结分析备注《C语言程序设计》教案第37-38课时授课内容教学目的和要求掌握字符指针作为函数参数;理解使用字符指针变量和字符数组的异同重点难点重点:字符指针作为函数参数;理解使用字符指针变量和字符数组的异同难点:字符指针作为函数参数;理解使用字符指针变量和字符数组的异同教学安排讲授一、字符串的引用方式1、可通过字符数组名和下标引用字符串中的一个字符.2、也可以通过数组名和格式声明%s输出该字符串例8.16定义一个字符数组,在其中存放字符串"IloveChina!",输出该字符串和第8个字符.C语言中只有字符变量,没有字符串变量.例8.18将字符串a复制为字符串b,然后输出字符串b.例8.19例8.18改用指针变量来处理二、字符指针作为函数参数例8.20用函数调用实现字符串的复制〔1用字符数组名作为函数的参数〔2用字符指针变量作为函数的参数其实编译系统把字符数组名按指针变量处理的,只是表示形式不同.三、使用字符指针变量和字符数组的比较1、字符数组由若干个元素组成,每个元素中放一个字符,而字符指针变量中存放的是地址.2、赋值方式.可以对字符指针变量赋值,但不能对数组名赋值3、初始化含义4、存储单元内容5、指针变量的值是可以改变的,而数组名代表一个固定的值6、字符数组中各元素的值是可以改变的.7、引用数组元素四、随堂练习写一函数,实现两个字符串的比较.intstrcmp<char*p1,char*p2>五、上机演示及学实践操作在讲课的同时切换到编译器界面调试代码课后自我总结分析备注《C语言程序设计》教案第39-40课时授课内容教学目的和要求掌握用函数指针变量调用函数;掌握用指向函数的指针作函数参数重点难点重点:用函数指针变量调用函数;用指向函数的指针作函数参数难点:用函数指针变量调用函数;用指向函数的指针作函数参数教学安排讲授一、指向函数的指针编译系统为函数代码分配一段存储空间,这段存储空间的起始地址,称为这个函数的指针二、用函数指针变量调用函数例8.22求两个整数的最大值讲解通过函数名调用函数与通过指针变量访问它所指向的函数的异同.三、怎样定义和使用指向函数的指针变量类型名〔*指针变量名〔函数参数表列例8.23讲解四、用指向函数的指针作函数参数指向函数指针变量的一个重要用途是把函数的地址作为参数传递到其它函数.例8.24讲解五、返回指针值的函数一个函数可以返回一个整型值、字符值、实型值等,也可以返回指针型的数据,即地址.定义返回指针值函数的一般形式为:类型名*函数名〔参数表列例8.25讲解六、指针数组和多重指针1、什么是指针数组2、指向指针数据的指针例8.28讲解3、指针数组作主函数的形参七、上机演示及学实践操作在讲课的同时切换到编译器界面调试代码课后自我总结分析备注《C语言程序设计》教案第41-42课时授课内容动态内存分配教学目的和要求掌握指针数组和多重指针;掌握动态内存分配的技巧重点难点重点:指针数组和多重指针;动态内存分配的技巧难点:指针数组和多重指针;动态内存分配的技巧教学安排讲授C定义了4个内存区间:代码区,全局变量与静态变量区,局部变量区即栈区,动态存储区,即堆〔heap区或自由存储区〔freestore.一、堆栈和队列1、堆栈堆栈是一种特殊的线性表.〔1栈顶和栈底2、队列堆栈也是一种特殊的线性表.〔1队头与队尾二、堆与动态内存分配有些操作对象只在程序运行时才能确定,这样编译时就无法为他们预定存储空间,只能在程序运行时,系统根据运行时的要求进行内存分配,这种方法称为动态内存分配.所有动态内存分配都在堆区中进行.三、动态内存分配1、什么是内存的动态分配2、建立内存分配的动态分配〔1malloc函数malloc是一个函数,专门用来从堆上分配内存.使用malloc函数需要几个要求:①内存分配给谁?②分配多大内存?③是否还有足够内存分配?④内存的将用来存储什么格式的数据,即内存用来做什么?⑤分配好的内存在哪里?如果这五点都确定,那内存就能分配.下面先看malloc函数的原型void*malloc<uintsize><2>calloc函数<3>free函数<4>realloc函数四、什么是野指针1、野鸡指针的形成2、野指针的危害五、void指针类型指向空类型指针,而非指向任意类型的指针课后自我总结分析备注《C语言程序设计》教案第43-44课时授课内容教学目的和要求结构体类型、变量的定义及初始化;结构体变量的引用;结构体数组,结构体指针重点难点结构体类型、变量的定义及初始化;结构体变量的引用;结构体数组,结构体指针教学安排引言例子:学生信息管理系统讲授一、结构体类型1、结构体类型和结构体变量结构体类型定义的一般形式例如:定义关于学生信息的结构体类型.结构体变量的定义〔三种方法先定义结构体类型,再定义结构体变量〔概念、含义相当清晰定义结构体类型的同时定义结构体变量直接定义结构体变量〔不给出结构体类型名,匿名的结构体类型2、结构体变量的引用引用结构体变量中的一个成员.结构体变量名.成员名成员本身又是结构体类型时的子成员的访问-使用成员运算符逐级访问同一种类型的结构体变量之间可以直接赋值不允许将一个结构体变量整体输入/输出结构体变量的初始化二、结构体数组结构体数组-数组元素的类型为结构体类型的数组结构体数组的定义类似结构体变量定义,只是将"变量名"用"数组名[长度]"代替,也有3种方式.2、结构体数组的初始化三、结构体指针变量1、结构体指针变量结构体指针变量的定义通过结构体指针变量访问结构体变量的成员:〔*结构体指针变量名.成员名结构体指针变量名->成员名2、结构体变量、结构体指针变量作函数参数课后自我总结分析备注《C语言程序设计》教案第45-46课时授课内容教学目的和要求掌握链表的使用;重点难点重点:掌握链表的使用;掌握共同体类型的使用;理解枚举类型的概念难点:掌握链表的使用;掌握共同体类型的使用;理解枚举类型的概念教学安排讲授一、链表概述1、什么是链表<1>链表中节点的定义<2>链表的基本操作2、建立简单的静态链表二、建立动态链表1、动态链表<1>处理动态链表所需要的函数malloc<>、calloc<>、free<><2结点的动态分配2、输出链表例9.10编写一个输出链表的函数print3、对链表的删除操作4、对链表的插入操作二、双向链表1、双向链表的存储结构2、建立双向链表3、双向链表的操作三、环形链表1、儿时玩的丢手绢的游戏环形→约瑟夫问题2、解决环形情况的问题比较方便3、构造环形链表4、环形链表的特点四、上机演示及实践操作在讲课的同时切换到编译器界面调试代码课后自我总结分析备注《C语言程序设计》教案第47-48课时授课内容教学目的和要求掌握链表的使用;掌握共用体类型的使用;理解枚举类型的概念重点难点重点:掌握链表的使用;掌握共同体类型的使用;理解枚举类型的概念难点:掌握链表的使用;掌握共同体类型的使用;理解枚举类型的概念教学安排讲授一、共用体1、什么是共用体类型有时想用同一段内存单元存放不同类型的变量.这种使几个不同类型的变量共享同一段内存的结构,称为"共用体"类型结构.2、共用体与结构体的异同〔1结构体的各个成员会占用不同的内存,互相之间没有影响;而共用体的所有成员占用同一段内存,修改一个成员会影响其余所有成员.

〔2结构

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论