C语言程序设计 教案 8-1结构体_第1页
C语言程序设计 教案 8-1结构体_第2页
C语言程序设计 教案 8-1结构体_第3页
C语言程序设计 教案 8-1结构体_第4页
C语言程序设计 教案 8-1结构体_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

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

文档简介

《C语言程序设计》教案课程名称C语言程序设计任课教师总课时64教学课题用结构体实现数据的增加、删除、修改和显示授课班级授课日期课时2教学目标知识目标:掌握结构体的使用方法能力目标:能够能够使用结构体实现项目素质目标:团队合作能力、团队互助,自我学习的习惯、爱好和能力重点难点结构体的使用教学方法演示、讲解、启发教学资源教材《C语言程序设计》设备准备VC++6.0,极域电子教室软件,分发工作任务单教学环节(教学过程)教学内容教师活动学生活动教学目标课时1发布任务进行任务的问题描述和分析倾听、思考让学生理解任务要求和思路10分钟2理论讲解讲授函数调用倾听、思考预备需要的理论知识15分钟3举例通过一个案例进一步讲解函数的调用倾听、思考通过实际应用帮助学生理解理论知识20分钟4应用布置两个相关题目思考、解答通过做相关练习题帮助学生更好的理解相关知识45分钟教学内容(详细):一.结构体概述结构体是一种构造类型,它是由若干成员组成,每个成员可以具有不同的数据类型。所以说,结构体是若干个类型相同或不同数据项的集合。例如,学生的基本信息包含以下数据项:学号(no)、姓名(name)、数学(math)、语文(yw)、英语(eng)和总分(sum)。那么这个类型就应该如图8-1所示。结构体类型结构体类型,是将该结构体的所有成员的类型说明按约定的方法结合在一起,结构体的各个元素(常称之为成员)可以是不同的数据类型。1.结构体类型的形式定义结构体类型的一般形式为:struct结构类型名{类型名成员名1;类型名成员名2;…类型名成员名n;};例如:structStudent{char*name;//姓名intnum;//学号floatmath;//数学floatyw;//语文floateng;//英语说明};说明(1)成员声明语法同变量,示例:数据类型成员名;(2)字段的类型可以为:基本类型、数组或指针、结构体等2.结构体变量的定义结构体类型定义后,就可以用它来定义相应的结构体变量。定义结构体类型变量有以下两种方法:(1)间接定义法先定义结构体类型,再定义结构体变量.struct结构类型名{成员列表;};结构体变量的定义:struct结构类型名变量名;例如,使用8.1.1定义的结构体类型student来定义学生结构体变量,语句: structstudentstu1; structstudentstu2;(2)直接定义法在定义结构体类型的同时定义变量。定义的一般形式为:struct[结构类型名] /*结构类型名可缺省*/{类型名成员名1;类型名成员名2;…类型名成员名n;}变量名表;例如:structStudent{char*name;//姓名intnum;//学号floatmath;//数学floatyw;//语文floateng;//英语}stu1,stu2;3.结构体变量的引用(1)简单结构变量的引用结构体变量的使用是通过对其每个成员的引用来实现的,一般形式如下: 结构体变量名.成员名其中,“.”是结构体的成员运算符,它在所有运算符中优先级最高,因此,上述引用结构体成员的写法可以作为一个整体看待。结构体变量中的每个成员都可以象同类型的普通变量一样进行各种运算。同类型结构变量间的引用ANSIC新标准允许将一个结构类型的变量,作为一个整体赋给另一个具有相同结构类型的变量。如有定义:structstudentstud1,stud2;4.结构体变量的初始化在定义结构变量的同时,允许对结构变量初始化,但要注意结构成员的数据类型与初值一致。例如:structCStudent{ longno;/*学号*/ charname[16];/*姓名*/ intage; /*年龄*/ intscore;/*成绩*/}stu={2013001,"ZhanSan",17,80};三.结构体数组1.结构体数组的定义结构体数组的定义与结构体变量类似,只是结构体变量替换成数组。定义结构体数组的一般形式如下:struct结构体名{成员列表;}数组名[元素个数];或:struct结构体名数组名[元素个数];2.结构体数组的引用结构体数组元素也是通过数组名和下标来引用的,但其元素是结构体类型的数据,因此,对结构体数组元素的引用与对结构体变量的引用一样,也是逐级引用,只能对最低级的成员进行存取和运算。结构体数组的引用的一般形式为: 数组名[下标].成员名3.结构体数组的初始化结构数组也可以在定义时进行初始化,其方法是在定义结构数组的之后紧跟等号和初始化数据。 其一般形式是:struct结构体类型结构数组名[n]={{初值表1},{初值表2},…,{初值表n}};四.结构体和函数参数的传递1.结构体变量作为函数参数结构体变量作为一个整体可以传递给函数以及由函数返回,作为函数参数时形参实参都应是结构体类型,返回值为结构体类型时,函数应定义为结构体类型,声明方式如下:struct结构体类型函数名(结构体类型参数,结构体类型参数2);如无返回值则函数定义为void类型。算法设计【例8-3】修改例8-1,要求在函数中实现计算、比较平均分并且显示平均分数较高的学生信息的功能。算法设计(1)定义外部结构体类型;(2)声明用户自定义函数;程序代码(3)在主函数中输入数据并且调用函数。程序代码#include"stdio.h"structstudent{charcName[8];intiMiddle,iFinal;floatfAve;};/*由于在多个函数中应用,所以结构体类型定义为外部*/voidfnBest(structstudentstS1,structstudentstS2);/*显示平均分较高学生信息的函数*/voidfnBest(structstudentstS1,structstudentstS2){stS1.fAve=(stS1.iMiddle+stS1.iFinal)/2.0;stS2.fAve=(stS2.iMiddle+stS2.iFinal)/2.0;if(stS1.fAve>stS2.fAve)printf("%s:%d%d%0.1f",stS1.cName,stS1.iMiddle,stS1.iFinal,stS1.fAve);elseprintf("%s:%d%d%0.1f",stS2.cName,stS2.iMiddle,stS2.iFinal,stS2.fAve);}voidmain(){structstudentstA,stB;scanf("%s%d%d",stA.cName,&stA.iMiddle,&stA.iFinal);scanf("%s%d%d",stB.cName,&stB.iMiddle,&stB.iFinal);fnBest(stA,stB);/*以结构体变量为实参调用函数*/getch();}2.结构体数组作为函数参数结构数组作为函数参数,与数组作为函数参数的处理方式完全相同。即采用“地址传递”方式,形参结构变量中各成员值的改变,对相应实参结构变量产生影响。算法设计【例8-4】修改例8-2,在函数中将N个学生的数据输入并统计总分和求出最高分的学生并显示。算法设计(1)定义全局结构体类型structstudent;(2)声明用户函数fnInput和fnDisp;(3)编写fnInput程序实现输入N个学生信息并计算总分;(4)编写函数fnDisp求N个学生中总分最高的并且显示;(5)编写主函数定义结构体类型数组,调用函数实现输入题目要求。程序代码程序代码#include"stdio.h"#include"stdio.h"#defineN3/*表示学生人数*/structstudent{charcNo[15];/*存放学号*/charcName[15];/*存放姓名*/intiChinese,iMath,iEnglish;/*存放语文、数学、英语成绩*/intiTotal;/*存放总分*/};voidfnInput(structstudentstStud[],intn);/*输入学生信息并计算总分*/voidfnDisp(structstudentstStud[],intn);/*求总分最高的学生并显示其信息*/voidfnInput(structstudentstStud[],intn)/*输入学生信息并计算总分*/{inti;printf("pleaseinputthreestudents'information\n");for(i=0;i<n;i++){scanf("%s%s%d%d%d",stStud[i].cNo,stStud[i].cName,&stStud[i].iChinese,&stStud[i].iMath,&stStud[i].iEnglish);stStud[i].iTotal=stStud[i].iChinese+stStud[i].iMath+stStud[i].iEnglish;}}voidfnDisp(structstudentstStud[],intn)/*求总分最高的学生并显示其信息*/{inti=0,iMax=0;for(i=1;i<n;i++)if(stStud[i].iTotal>stStud[iMax].iTotal)iMax=i;printf("\nThebeststudent'sinformation:\n");printf("%s,%s,%d,%d,%d,%d",stStud[iMax].cNo,stStud[iMax].cName,stStud[iMax].iChinese,stStud[iMax].iMath,stStud[iMax].iEnglish,stStud[iMax].iTotal);}voidmain(){structstudentstPerson[N];/*定义结构体数组*/fnInput(stPerson,N);/*调用函数,循环输入N个学生的信息并且计算其总分*/fnDisp(stPerson,N);/*调用函数,求出总分最高的学生的下标并显示*/getch();}3.函数的返回值是结构体类型变量结构体变量也可以作为函数的返回值,这时在函数定义时,需要说明返回值的类型为相应的结构类型。如:struct

温馨提示

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

评论

0/150

提交评论