第六次课要求1.本次课早上讲解的知识为结构体、结构体和上机填空题相关,链表、链表和上机填空题相关,3个小时的时候可能不够,因此第六次课上午的时间延长半个小时,时间为3个半小时;2.每次考试结构体和链表和上机联系最为密切,因此本次课程侧重于上机和理论知识的结合,课本和习题讲解尽量少讲,多讲上机填空题内容;讲解上机的时候对注意比对教学,这样学员比较容易记住;3.讲义中知识点围绕考试而制定,有部分内容不讲,例如:使用scanf函数输入结构体变量的值不讲,共用体不讲,链表讲解的时候只讲定义形式,不讲链表的建立等函数;4.本次上课内容将第十章中typedef放在里面讲解,因此注意知识点的结合度;5.上午讲解结构体、链表和上机结合,下午讲解各知识点和上机结合时,请多总结,多备课,有的空不好讲解就不要花很多时间讲解,记住效率很关键;6.讲解填空题时程序太长,不能全部书写在黑板上,这个时候我们只要书写关键的语句,例如:下列的main函数,只用讲解红色部分,因为红色部分是函数的调用,是做题的关键,其它的语句无需让学员去了解。时间课次授课标题上课时长备注上午第一课时结构体的说明10本节课要求上1个小时,将该讲的知识讲完再下课休息定义结构体类型的变量、指针和数组20结构体变量赋初值10应用结构体变量20第二课时函数间结构体变量的数据传递20将例题讲解清楚,函数调用和以前学的一样结构体在上机填空题中的考点40将三个考题对比来讲解,不要书写过多的程序使进度变慢,写关键的语句即可!main(){NODE*head;inta[N]={2,4,6,8,10};head=creatlist(a);printf(\nTheoriginallist:\n);outlist(head);head=fun(head);printf(\nThelistafterinverting:\n);outlist(head);}第三课时链表20链表在上机中的考试形式40有的空太难,建议使用“死记硬背”的方法,但是基本知识和总结的知识必须会下午第四课时上机填空题与文件相关50将讲义中的例子讲解给学员,剩余的根据情况自行把握第五课时上机填空题与字符串相关50第六课时上机改错之语法错误50课后布置习题作业十一章选择题:14、15、16填空题:1、2、3、4,对应上机题目中没有讲解的题目第十一章结构体本章考点考点考核几率分值结构体类型的说明和变量定义100%1~5指向结构体变量的指针80%0~2指向结构体数组的指针50%0~2共用体类型的说明和变量定义80%0~1共用体变量中成员的引用60%0~2链表80%1~3建立单向链表60%1~3顺序访问链表中各结点的数据域60%1~2在链表中插入和删除结点(难点)100%1~3教学内容一、结构体的说明1.判断下列数据的类型“liudehua”字符串,存储形式:charsname[10]=“liudehua”;20110101整型,存储形式:intsno=20100101;92.5实型,存储形式:floatscore=92.5;本章将学习有多种数据类型融合在一起的数据类型,例如包括学生学号sno(整型),学生姓名sname(字符串),学生成绩(实型)2.结构体类型说明的一般形式struct结构体名{类型名1成员名1;类型名2成员名2;…类型名n成员名n;};(1)“struct”关键字的书写,且必须为小写。(2)结构体类型中的成员必须用“{}”括起来,且不要忘记花括号外的分号。(3)结构体类型所占存储空间是各成员占用的存储空间之和。3.结构体类型说明的举例例1:P148structstudent{charname[10];charsex;shortage;floatscore;};说明了一个结构体student,里面有4个成员:name、sex、age、scorenamesexagescore二、定义结构体类型的变量、指针和数组1.直接在结构体类型说明之后定义结构体变量例3:P148structstudent{charname[10];charsex;shortage;floatscore;}s1,*ps,stu[3];首先说明了一个结构体student,里面有4个成员:name、sex、age、score定义了一个结构体student类型的变量s1,一个结构体student类型指针变量ps,和一个结构体student类型数组stu例4:P149struct{charname[10];charsex;shortage;floatscore;}s1,*ps,stu[3];说明结构体时省略了结构体的名字,语法上无错,但一般不采用该方法!定义了一个结构体student类型的变量s1,一个结构体student类型指针变量ps,和一个结构体student类型数组stu2.先说明结构体类型,再进行变量的定义例5:P149structstudent{charname[10];charsex;shortage;floatscore;};structstudents1,*ps,stu[3];此考点为上机考试重点,请考生注意!students1,*ps,stu[3];是错误的!3.使用typedef说明一个结构体类型名(1)typedef的使用方法:typedef只是说明一种新的数据类型名typedefintmyintinta,b,c;等价于myinta,b,c;typedef刘德华华仔刘德华的歌等价于华仔的歌(2)讲解P150例6typedefstruct{charname[10];charsex;shortage;floatscore;}STU;STUs1,*ps,stu[3];STU是一个具体的结构体类型,前面不用加struct4.重点讲解P155习题2以下结构体类型说明和变量定义正确的是()三、结构体变量赋初值1.结构体变量赋初值A)typedefstruct{intn;charc;}REC;B)structREC{intn;charc;};RECt1,t2;C)typedefstructREC;{intn=0;charc=‘A’;}t1,t2;D)struct{intn;charc;}RECt1,t2;例7:structstudent{charname[10];charsex;shortage;floatscore;}s1={“Jim”,’M’,20,89};namesexagescoreJim\0\0\0\0\0\0\0M20892.结构体数组赋初值例8:structstudent{charname[10];charsex;shortage;floatscore;}stu[3]={{“liudehua”,‘M’,50,98.5},{“Jim”,’M’,20,89},{“Lili”,’W’,19,100}};namesexagescoreliudehua\0\0M5098.5Jim\0\0\0\0\0\0\0M2089Lili\0\0\0\0\0\0W191003.结构体指针赋初值例7(补充):structstudent{charname[10];charsex;shortage;floatscore;}s1={“Jim”,’M’,20,89};structstudent*ps;ps=&s1;四、引用结构体变量1.对结构体成员的引用方法(1)结构体变量名.成员名;注:结构体数组中的每一个元素也可看作是一个结构体变量名。(2)结构体指针变量-成员名;(3)(*结构体指针变量).成员名;2.引用结构体数组元素及输出structstudent{charname[10];charsex;structdate{intyear;intmonth;intday;}birthday;intage;floatscore[3];}s1,*ps,s[3];structstudentstu={“Jim”,‘M’,1989,10,10,21,70.0,80,92};(1)分析结构体student的成员包括:name、sex、birtyday(结构体date的变量)、age、score共5个成员(2)引用结构体student中的age成员s1.ageps-ages[0].ageprintf(“%d”,stu.age);输出:21printf(“%c”,stu.sex);输出:M(3)引用结构体student中的name成员s1.nameps-names[0].nameprintf(“%s”,stu.name);输出:Jimname是一个字符串,输出的时候必须使用“%s”(4)引用结构体student中的score成员s1.score[1]ps-score[1]s[0].score[1]printf(“%d”,stu.score[0]);输出:70printf(“%d”,stu.score[2]);输出:92(5)引用结构体student中的year成员s1.birthday.yearps-birthday.years[0].birthday.yearprintf(“%d”,stu.birthday.year);输出:1989printf(“%d”,stu.birthday.month);输出:10printf(“%d”,stu.birthdat.day);输出:103.对结构体变量中成员进行输入不作讲解,考试不涉及五、函数间结构体变量的数据传递1.讲解P154例10#includestring.htypedefstruct{charname[10];charsex;intage;floatscore;}STU;结构体变量s:namesexagescoreJimM2089fun函数中形成结构体指针ps:namesexagescoreJimM2089strcpy(ps-name,”Jone”);将ps中的name改为了”Jone”,由于函数传递的是地址,因此ps中的name改变,则结构体变量s的name也将改变:namesexagescoreJoneM2089ps-sex=‘W’;namesexagescoreJoneW2089ps-age=21;namesexagescoreJoneW2189ps-score=78.5;namesexagescoreJoneW2178.5函数调用后,继续执行printf(“(2)s:%s%c%d%f\n”,s.name,s.sex,s.age,s.score);输出的结果为:(2)s:JoneW2178.52.讲解P155例11voidfun(STU*ps){strcpy(ps-name,”Jone”);ps-sex=‘W’;ps-age=21;ps-score=78.5;}main(){STUs={“Jim”,’M’,20,89};printf(“(1)s:%s%c%d%f\n”,s.name,s.sex,s.age,s.score);fun(&s);printf(“(2)s:%s%c%d%f\n”,s.name,s.sex,s.age,s.score);}#includestring.htypedefstruct{charname[10];charsex;intage;floatscore;}STU;实参传递地址给形参,因此形参的改变到值实参的改变,因此输出的结果为:(1)s:JimM2089(2)s:JoneM2289voidfun(char*pname,char*page){strcpy(pname,”Jone”);*page=22;}main(){STUs={“Jim”,’M’,20,89};printf(“(1)s:%s%c%d%f\n”,s.name,s.sex,s.age,s.score);fun(s.name,&s.age);printf(“(2)s:%s%c%d%f\n”,s.name,s.sex,s.age,s.score);}六、结构体在上机填空题中的考点1