15.1字符串纠错 教案(表格式)-《C语言程序设计》同步教学(电子科技大学出版社)

资源下载
  1. 二一教育资源

15.1字符串纠错 教案(表格式)-《C语言程序设计》同步教学(电子科技大学出版社)

资源简介

课题 字符串纠错
课时 2课时(90 min)
教学目标 知识目标: (1)掌握指针在数组中的使用方法 (2)掌握指针在字符串中的使用方法 能力目标: 能在数组和字符串中灵活运用指针 素质目标: 通过学习指针在数组和字符串中的使用方法,培养学生学习知识要融会贯通
教学重难点 教学重点:指针与一维数组,指针与字符串,指针数组 教学难点:通过指针引用字符串
教学方法 问答法、讨论法、讲授法
教学用具 电脑、投影仪、多媒体课件、教材
教学过程 主要教学内容及步骤
课前任务 【教师】布置课前任务,和学生负责人取得联系,让其提醒同学通过文旌课堂APP或其他学习软件,完成课前任务 请同学们回顾之前字符相关知识,总结将大写字母转换成小写字母的方法。 【学生】完成课前任务
考勤 【教师】使用文旌课堂APP进行签到 【学生】班干部报请假人员及原因
问题导入 【教师】请同学们扫码观看“字符串的表示方式”视频(详见教材),讨论并回答以下问题: 字符串的表示方式有哪几种?字符数组与字符指针有何区别? 【学生】思考、举手回答
传授新知 【教师】讲解指针与一维数组,指针与字符串,指针数组 一、指针与一维数组 【教师】多媒体观看“指针变量与一维数组”视频(详见教材),让学生了解如何定义指向数组的指针变量,数组中的指针运算,通过指针引用数组元素 1.定义指向数组的指针变量 指针变量也可以指向数组中的元素。例如: int a[5]={1,2,3,4,5},*p; p=&a[0]; 此处定义了一个一维数组a和一个指针变量p,使指针变量p指向a的第1个元素。 由于一维数组的数组名是一个地址常量,即a等价于&a[0]。因此,也可以通过数组名将数组的首地址赋给指针变量,即“p=a;”。 2.数组中的指针运算 当指针指向数组元素时,可以对指针进行以下运算。 (1)加减一个整数。对于指向数组的指针变量,可以加上或减去一个整数n。例如,p是指向数组a[i]的指针变量,则p+n、p n、p++、++p、p 、 p都是合法的。指针变量加上或减去一个整数n的意义是将指针指向的当前位置向前或向后移动n个位置。 (2)两指针变量相减。若两个指针变量指向同一数组,则两个指针变量相减所得之差就是两个指针所指数组元素之间相差的元素个数。例如: int a[5]={1,2,3,4,5},b,*p,*q; p=&a[0]; q=&a[4]; b=q-p; 此例中,b的结果为4,即两个指针变量指向的元素下标之差。 提示 (1)只有指向同一数组的两个指针变量之间才能进行减法运算,否则毫无意义。 (2)两个指针变量不能进行加法运算。 3.通过指针引用数组元素 通过指针引用数组元素的一般形式如下。 *(a+i)或*(p+i) 其中,a是数组名,p是指向数组元素的指针变量,且p指向数组a的第1个元素。指向数组的指针变量也可以带下标,如p[i]与*(p+i)是等价的。 高手点拨 *(p+i)和a[i]相等的前提条件是p指向数组a的首地址。如果赋值“p=&a[4];”,则p指向a[4],p+1指向a[5],而p 1指向a[3]。 【课堂练习】 【教师】出示【例7-2】,组织学生答题 分析程序运行结果,程序详见教材。 【学生】聆听、思考、分析 【教师】解析例题 程序运行结果如图7-5所示(详见教材)。 从程序运行结果中可以得出,*(p+i)、*(a+i)、p[i]和a[i]输出的结果都是相同的。 二、指针与字符串 【教师】多媒体观看“指针与字符串”视频(详见教材),让学生了解通过指针引用字符串及访问字符串元素的方法 在指针操作字符串时,需要将字符串的首地址赋给一个指针,这样才能通过该指针引用字符串。例如: char *str; /*定义指针变量str*/ str="C language!"; /*给变量str赋初值*/ 该语句等价于: char *str="C language!"; /*初始化指针变量str */ 此例中,str被定义为一个字符指针,它指向字符串常量中的首字符'C',如图7-6所示(详见教材)。 可通过指针名str访问这一存储区域,如*str或str[0]就是访问字符'C',str[i]或*(str+i)就是访问字符串的第i+1个元素。 【课堂问答】 【教师】随机邀请学生回答以下问题 请同学们思考,如果字符串中只有5个元素,那么上述访问str[5]会导致什么结果? 【学生】聆听、思考、回答 【教师】总结学生的回答 【课堂练习】 【教师】出示【例7-3】,组织学生编写代码 利用指针将两个字符串连接起来。 【学生】编写程序、运行、对比结果 【教师】解析例题 本题可以先定义两个指针变量str1和str2,分别指向两个字符串;然后移动指针str1到第1个字符串的结束符处;最后将第2个字符串连接到第1个字符串的后面。 ……(参考程序详见教材) 【运行结果】程序运行结果如图7-7所示(详见教材)。 【课堂讨论】 【教师】请学生分组讨论以下问题 请同学们以小组为单位,讨论字符指针与字符数组有什么区别。 【学生】讨论、总结、回答 【教师】总结学生的回答 高手点拨 字符指针与字符数组之间是有区别的。例如,有以下语句: char *str="C language!"; char string[30]="This is a string."; str是一个字符指针,可以改变str使它指向不同的字符串,但不能改变str所指向的字符串常量的值。string是一个字符数组,可以改变数组中保存的内容。 三、指针数组 【教师】介绍定义一维指针数组的语法格式 如果数组中的每个元素均为指针类型,则称该数组为指针数组。定义一维指针数组的一般形式如下。 类型标识符 *数组名[常量表达式]; 例如: char *p[5]; 表示定义一个由5个指针变量构成的指针数组,数组中的每个数组元素都是一个指向字符型数值的指针变量。 【课堂讨论】 【教师】请学生分组讨论以下问题 请同学们以小组为单位,讨论数组指针和指针数组是否相同,不相同的话,其各自表示什么含义? 【学生】讨论、总结、回答 【教师】总结学生的回答 提示 数组指针和指针数组这两个词语很容易混淆。数组指针是一个指针变量,它指向的是某类型的数组,如“char (*p)[5];”;而指针数组的本质是一个由若干个指针变量组成的数组,数组中每个元素都是一个指针变量,如“char *p[5];”。 四、任务实施 【教师】多媒体观看“字符串纠错”视频(详见教材),让学生了解该任务的具体要求,程序设计思路,具体代码实现方法 1.任务分析 将字符串中的大写字母转换成小写字母,须首先定义一个指针变量指向该字符串;然后从第2个元素开始逐个判断该字符是否为大写字母,若是,则需要转换成相应的小写字母;再利用指针判断下一个字符,直到遇到字符'\0'。 2.参考程序 ……(详见教材) 3.运行结果 程序运行结果如图7-8所示(详见教材)。 【课堂问答】 【教师】随机邀请学生回答以下问题 请同学们思考,上述循环中,循环变量i从1开始,能否从0开始,为什么? 【学生】聆听、思考、回答 【教师】总结学生的回答 【学生】聆听、思考、理解、记录
课堂实训 【教师】介绍课堂实训要求,以及实训内容,要求学生按照实训要求完成实训任务 请同学们按照任务实施中字符串纠错的程序设计思路和步骤进行练习。定义指针变量p,初始化字符串,定义整型变量i,用于存储循环次数,指针p指向字符串string,循环判断字符串中的字符,判断*(p+i)是否为大写字母,若成立,则将*(p+i)转换成小写字母,最后输出字符串string,运行程序,根据运行结构,验证程序的正确性。 【学生】按照要求进行操作,完成后总结自己哪些地方做得很好,还有哪些地方需要改进
课堂小结 【教师】简要总结本节课的要点 本次课介绍了如何定义指向数组的指针变量,可以通过数组名将数组的首地址赋给指针变量,或者使指针变量指向数组的第1个元素。介绍了数组中的指针运算,可以加减一个整数,可以两指针变量相减。讲解了通过指针引用数组元素,一般形式为*(a+i)或*(p+i)。讲解了指针与字符串,将字符串的首地址赋给一个指针,即可通过该指针引用字符串。让学生了解了指针数组,及其基本形式。最后通过任务实施,综合运用本次课知识,完成了字符串纠错的代码实现。 【学生】总结回顾知识点
作业布置 【教师】布置课后作业 请根据本课内容,完成课后习题中的相关习题。 【学生】完成课后任务
教学反思

展开更多......

收起↑

资源预览