C语言程序设计 教案6-2 利用结构体数组处理多组数据、利用结构体指针引用结构体数据(2课时).docx
C语言程序设计教学设计 日期:年月日教学内容利用结构体数组处理多组数据、 利用结构体指针引用结构体数据教学学时2授课教师班级地点周次星期节次教学 目标素质目标知识目标能力目标(1)基本职业素养:遵守工作时间, 使用实践设备时注意用电安全,实践设 备使用完毕后要断电并放于指定位置, 程序设计要注重工程规范,养成良好的 工作习惯。(2)团结协作素养:小组内成员互查 程序代码书写规范性、准确性和完整性, 取长补短,具有责任意识、团队意识与 协作精神。(3)自主学习素养:能根据任务要求, 查找相关资料解决实际问题;能自主完 成练习,培养自主学习的意识与一丝不 苟、实事求是的工作作风。(4)思政和劳动素养:具有一定的辩 证唯物主义运用能力、安全意识、劳动 意识、创新意识、创新能力和强烈的爱 国主义精神。(1)掌握结构体 数组的定义方法、初 始化方法、存储形式 及应用方法(2)掌握结构体 指针引用结构体数 据的方法(3)掌握结构体 指针变量作函数参 数的应用方法(1)能用结 构体数组解决 实际问题(2)能用结 构体指针解决 实际问题教学重点(1)结构体数组的定义方法、初始化方法、存储形式及应用方法(2)结构体指针引用结构体数据的方法(3)结构体指针变量作函数参数的应用方法教学难点(1)结构体数组的存储形式及应用方法(2)结构体指针引用结构体数组元素的方法(3)结构体指针变量作函数参数的应用方法能力训练 任务任务1:掌握结构体数组的定义方法、初始化方法、存储形式及应用方法任务2:掌握结构体指针引用结构体数据的方法任务3:掌握结构体指针变量作函数参数的应用方法教学材料(1)教材:朱琨C语言程序设计,机械工业出版社,978-7-111-66954-8, 2021(2)教学资源:电子教案、教学课件、微课视频、在线开放课程(3)仪器与设备:电脑(装有VC+开发环境)教学进度设计步骤教学内容及目标思政元素教师活动学生活动时间一、复习与导 入复习:结构体变量、普 通数组、指针相关知 识。#A:结构体数组和结 构体指针。学而时习 之、温故知血提问、导入新课、布 置学习任务总结、回答、明确学 习任务5m i n二、实施任务 1:掌握结构 体数组的定 义方法、初始 化方法、存储 形式及应用 方法1、定义结构体数组的 方法2、结构体数组的初始 化方法和存储形式3、结构体数组的应用 方法知识迁移 与运用引导学生对比结构体 变量和普通数组知识 学习结构体数组、通 过例题掌握结构体数 组的应用方法:巡回 指导对比结构体变量和 普通数组知识学习 结构体数组,通过编 写和运行教材例题 程序掌握结构体数 组的应用方法25m in三、实施任务 2:掌握结构 体指针引用 结构体数据 的方法1、结构体指针的概念2、指向结构体变量的 指针(1)定义方法(2)访问结构体数据成员的3种形式3、指向结构体数组的 指针(1)初始化方法(2)应用方法知识迁移 与运用引导学生对比指向普 通变量的指针和指向 数组的指针学习指向 结构体变量和指向结 构体数组的指针,访 问结构体数据成员的 3种形式;巡回指导对比指向普通变量 的指针和指向数组 的指针,并通过编写 和运行例题程序学 握指向结构体变量 和指向结构体数组 的指针的应用方法、 访问结构体数据成 员的3种形式35m in四、实施任务 3:掌握结构 体指针变量 作函数参数 的应用方法1、结构体数据在函数 调用时的传递方式探 讨(整体值传递和地址 传递)2、使用结构体数据的 首地址作为函数参数 的优点善于发现 问题、解决 问题,精益 求精引导学生分析结构体 数据的两种传递方式 优缺点,通过例题程 序掌握结构体指针变 量作函数参数的应用 方法,并体会其优点发现问题,通过例题 程序掌握结构体指 针变量作函数参数 的应用方法,并体会 其优点20m in五、总结概括基本内容,归纳重 点内容自主学习引导学生归纳总结, 然后布置课后任务思考,记录,整理场 地5m i n作业通过教材、PPT和在线课程,复习巩固本次课内容;完成教材相应习题(可穿插到上述任 务中):预习下次课内容(共用体类型、枚举类型、用typedef声明类型别名)。课后 体会1 .对比结构体变量和基本类型的数组知识,学习结构体数组,可有效降低学习难度,尤 其是其存储形式。2 .对比指向普通变量的指针和指向数组元素的指针,学习指向结构体变量和指向结构体 数组元素的指针,可有效帮助学生理解结构体指针的概念和应用方法。3 .引导学生通过例6.4,重点掌握访问结构体数据的成员有3种形式。4 .结构体指针作为函数参数,是本次课的教学难点,需要在充分理解结构体数据的存储 形式及结构体指针的应用方法。通过例题,深刻体会使用结构体指针引用结构体数据的好 处一提高程序执行效率(精益求精)。5 .学生结合第5章所学的指针数组和本次课所学的结构体指针,自主学习结构体指针数 组及其应用方法。利用结构体数组处理多组数据、利用结构体指针引用结构体数据教学详案步骤一:复习与导入(时间:5分钟)复习:结构体类型的声明,结构体变量的定义、初始化及引用方法。导入:个结构体变量可以存放一名学生的信息;而结构体数组可以存放多名学生的信 息,其中每个元素都是一个结构体类型的数据。另外,指针可以指向普通变量和数组,也可 以指向结构体数据一一结构体指针。步骤二:任务1:掌握结构体数组的定义方法、初始化方法、存储形式及应用方 法(时间:25分钟)1、定义结构体数组的方法stmct Student 声明结构体类型 (int stu ID; A; char name 20; 姓幺 float score:成绩);sti'uct Student stu5;定义结构体数组定义的结构体数组stu,共有5个元素,stu01-stu4o每个数组元素都是slrucl Sludenl$tu(0- $tu+lA1001Li ping45stu+21002Zhang ping625stu"1003He fang925sut网结构体类型的。2、结构体数组的初始化方法和存储形式(类似于二维数组)stmct Student stu3=1001,nLi ping”,45,1002,Zhang ping*,62.5),1003,0He fang”,92.5;3、结构体数组的应用方法【例6.2】计算学生的平均成绩,并统计不及格的人数。include <stdio.h>struct Student(int stu ID; /,*? /char name20; 姓名float score;成绩);struct Student stu 5=1001JLiping”,45,(1002,ZhaominH,62.5, 1003JHe fen”,92, 1004,hen lin”,87, 1005, “Wan n】in'158);int main(void)int i,count=0; float ave,sum=O; for(i=0; i<5; i+) sum=sum-l-stui.score; lf(stuIJ.score<60) count+;统计不及格人数 ave=sum/5;计算平均分printK”平均分:/像出数据保留1位小数 printf("不及格人数:%dnM,count);【学习检验】教材单元练习第8题。【学以致用】教材例6.3:建立同学通讯录。步骤三:任务2:掌握结构体指针引用结构体数据的方法(时间:35分钟) 1、结构体指针的概念 结构体指针是用来指向结构体数据(结构体变量或结构体数组元素)的指针,若把一个 结构体数据的起始地址赋给一个指针变量,则该指针变量就指向这个结构体数据。2、指向结构体变量的指针(1)定义方法:struct结构体名*结构体指针变量名;例如:struct Student *pstu; /psiu用来指向slruct Student类型的变最或数组元素 (2)访问结构体数据成员的3种形式 【例6.4】通过3种方式访问结构体变量中的成员。 include <stdio.h> struct Student ( int stuID; char name20; float score;; int main(void)声明结构体类型学号 姓名 成绩p$tu _ smstruct Student stul=1002,“张三强”,786;定义结构体变量stul并赋值struct Student *pstu=&stul;定义结构体指针变量pstu,并指向变量stulprintf(“学号姓名成绩n”); printfCqSd %s H-lf,n*,stultu ID,stul.name,stul.score);printf("%d %s(*pstu).stu ID, (*pstu).name, (*pstu).score);printf("%d %spstu->stu ID, pstu->name, pstu->score);【引导总结】访问结构体数据的成员有3种形式I)结构体变量名.成员名或 结构体数组元素名.成员名例如stul.name2) (*结构体指针变量名).成员名例如(*pstu).name3)结构体指针变最名->成员名例如pstu->namc【学习检验】教材单元练习第5、6题。0000001002张三强78.5强强强三三三页5 5 5可78.78.7S.3、指向结构体数组的指针当结构体指针变量指向结构体数组中的某个元素时,结构体指针变量的值是该结构体 数组元素的起始地址。【例6.5】用结构体指针变量输出结构体数组。用Delude <stdio.h>stnict Student 声明结构体类型ints(u_ID;学号charname20;姓名floatscore;成绩);int niain(void) (stnict Student stu(3=1001, ”Li ping”, 45,1002, ,Zhaoniin',62.5),(1003, ”He fen”, 92.5); 定义结构体数组,并赋初值stnict Student *ps;定义结构体指针变;itprintf("学'Jt姓名小t成绩n");foi"(ps=stu; ps<stu+3; ps+)printf("。缸6d%-20s%.lftiT', ps-> stu ID, ps->name, ps->score); 【学习检验】教材单元练习第7题。步骤四:任务3:掌握结构体指针变量作函数参数的应用方法(时间:20分钟) 【引导思考】1、结构体数据在函数调用时的传递方式:整体值传递和地址传递2、使用结构体数据的首地址作为函数参数的方法和优点:用指向结构体数据的指针变 量作函数参数,则会减少时间和空间上的开销,大大提高程序执行效率。【例6.6】计算一组学生的平均成绩和不及格人数。# include <stdio.h>struct Student声明结构体类型( int stuID;char name20; 姓名 float score; 成绩);void ave(struct Student *ps, int n); 函明 int main (void) struct Student stu5)= 101,”Li ping”,45 , 102."Zhang ping”.62.5, 103.“Hefang”S2.5, 104,“Cheng Hng”,87, 105,Wangming,58 );struct Student *pstu=stu;定义结构体指针变量,并指向数组stu首地址ave(pstu, 5);调用ave函题 实参:结构体指针变量pstu、数值5void ave(struct Student *ps, int n) 形参:结构体指针变量 ps、变量int count=0,i;float ave.sum=O;for(i=0; i<n; i+, ps+)sum=sum+ps->score;if(ps->score<60) count+;)ave=sum/5;printf(“平均分:%.lfnM,ave);printf("不及格人数:%dn”, count);)【学以致用】教材单元练习第16、17题。【课后自主学习】教材644节:结构体指针数组及其应用。教材单元练习第18题。步骤五:概括基本内容,归纳重点内容(时间:5分钟)1、引导学生概括本次课的基本内容,归纳重点内容(结构体数组的定义形式、初始化 方法和存储形式,结构体指针引用结构体数据的方法,结构体指针变量作函数参数的应用 方法)。2、作业布置:通过教材、PPT和在线课程,复习巩固本次课内容;完成教材相应习题, 学以致用:预习下次课内容(共用体类型、枚举类型、用typedef声明类型别名)。