您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 其它文档 > 单元9-结构类型的使用
Page1C语言程序设计基础C语言程序设计基础课程单元九结构类型的使用Page2C语言程序设计基础主要内容结构类型概述结构类型的说明结构变量的定义(重点)结构变量的引用(重点)结构类型数据的处理用函数处理结构类型(难点)Page3C语言程序设计基础考号姓名笔试成绩面试成绩总成绩1501王虎89921502李雪82851503张扬7796…………某单位招聘考试成绩汇总表问题引入如何处理?数据特点:1.各行内数据不尽相同;2.各行间数据情况相同;3.以行为单位处理数据.unsignednum;charname[10];intexama;intexamb;inttotal;Page4C语言程序设计基础问题引入考号姓名笔试成绩面试成绩总成绩1501王虎89921502李雪82851503张扬7796绘制二维表格第一步:制作表头第二步:画出各行第三步:编辑各行数据使用结构类型第一步:结构说明第二步:结构变量定义第三步:结构变量引用某单位招聘考试成绩汇总表如何转换成C语言描述?Page5C语言程序设计基础9.1结构类型的基本使用9.1.1结构类型说明9.1.2结构变量定义9.1.3结构变量引用Page6C语言程序设计基础9.1结构类型的基本使用9.1.1结构类型说明unsignednum;charname[10];intexama;intexamb;inttotal;{};structjob_exam考号姓名笔试成绩面试成绩总成绩1501王虎89921502李雪82851503张扬7796某单位招聘考试成绩汇总表例9-1Page7C语言程序设计基础9.1结构类型的基本使用9.1.1结构类型说明unsignednum;charname[10];intexama;intexamb;inttotal;{};structjob_exam结构类型说明的一般格式struct结构名{类型名1成员变量名1;类型名2成员变量名2;......类型名n成员变量名n;};结构类型关键字结构类型说明的标识符结构类型成员列表结构成员起始终止标志分号为结构类型终止标记Page8C语言程序设计基础9.1结构类型的基本使用9.1.2结构变量定义考号姓名笔试成绩面试成绩总成绩1501王虎89921502李雪82851503张扬7796某单位招聘考试成绩汇总表structjob_exam*p=&a;structjob_exama,b;structjob_exams[3];(1)定义两个结构变量a和b(2)定义结构变量数组s,有三个元素(3)定义结构指针p,指向结构变量aunsignednum;charname[10];intexama;intexamb;inttotal;{};structjob_exam例9-2Page9C语言程序设计基础9.1结构类型的基本使用9.1.2结构变量定义结构类型说明和变量定义合二为一unsignednum;charname[10];intexama;intexamb;inttotal;{};structjob_examstructjob_exam*p=&a;structjob_exama,b;structjob_exams[3];unsignednum;charname[10];intexama;intexamb;inttotal;{}a,b,s[3],*p;structjob_examPage10C语言程序设计基础9.1结构类型的基本使用9.1.2结构变量定义结构体变量定义时同时初始化structjob_exam{unsignednum;charname[10];intexama;intexamb;inttotal;}a={1501,王虎,89,92},s[3]={{1501,王虎,89,92},{1502,李雪,87,96},{1503,“张扬”,82,85}},*p=&a;unsignednum;charname[10];intexama;intexamb;inttotal;{}a,b,s[3],*p;structjob_examPage11C语言程序设计基础9.1结构类型的基本使用9.1.2结构变量定义结构体变量的存储特点系统为结构变量分配内存的字节总数为:结构变量所包含的各个成员变量所占字节数之和。如结构变量a所占内存字节数为26。结构体变量的存储示意图nameexamaexambtotalnum10字节4字节4字节4字节4字节astructjob_exam{unsignednum;charname[10];intexama;intexamb;inttotal;}a={1501,王虎,89,92},s[3]={{1501,王虎,89,92},{1502,李雪,87,96},{1503,张扬,82,85}},*p=&a;Page12C语言程序设计基础9.1结构类型的基本使用9.1.3结构变量引用(1)用成员运算符“.”引用结构变量成员(2)用指针引用结构变量成员a.total=a.exama+a.examb;p-total=p-exama+p-examb;structjob_exam{unsignednum;charname[10];intexama;intexamb;inttotal;}a={1501,王虎,89,92},s[3]={{1501,王虎,89,92},{1502,李雪,87,96},{1503,张扬,82,85}};引用变量成员(*p).total=(*p).exama+(*p).examb;Page13C语言程序设计基础9.1结构类型的基本使用9.1.3结构变量引用#includestdio.hvoidmain(){structjob_exam{unsignednum;charname[10];intexama;intexamb;inttotal;}a={1501,王虎,89,92};a.total=a.exama+a.examb;//计算总成绩printf(编号姓名笔试面试总成绩\n);printf(%4u%8s%6d%6d%6d\n,a.num,a.name,a.exama,a.examb,a.total);}运行结果:程序演示例9-3实例应用1—引用变量成员Page14C语言程序设计基础9.1结构类型的基本使用9.1.3结构变量引用#includestdio.hvoidmain(){structjob_exam{unsignednum;charname[10];intexama;intexamb;inttotal;}*p,s[3]={{1501,王虎,89,92},{1502,李雪,87,96},{1503,张扬,82,85}};p=s;printf(编号姓名笔试面试总成绩\n);for(inti=0;i3;i++){(*p).total=(*p).exama+(*p).examb;printf(%4u%8s%6d%6d%6d\n,p-num,p-name,p-exama,p-examb,p-total);p++;}}运行结果:程序演示例9-4实例应用2—引用变量成员Page15C语言程序设计基础9.1结构类型的基本使用9.1.3结构变量引用#includestdio.hvoidmain(){structjob_exam{unsignednum;charname[10];intexama,intexamb,inttotal;}t,s[3]={{1501,王虎,89,92},{1502,李雪,87,96},{1503,张扬,82,85}};for(inti=0;i3;i++)s[i].total=s[i].exama+s[i].examb;t=s[0];if(t.totals[1].total)t=s[1];if(t.totals[2].total)t=s[2];printf(总成绩最高的考生信息:\n);printf(编号姓名笔试面试总成绩\n);printf(%4u%8s%6d%6d%6d\n,t.num,t.name,t.exama,t.examb,t.total);}运行结果:程序演示结构体变量整体的引用实例应用3—引用变量整体例9-5Page16C语言程序设计基础9.1结构类型的基本使用有如下定义:structjob_exama,b;请为结构变量a,b输入各成员值,交换a和b数据后输出。考号姓名笔试成绩面试成绩总成绩1501王虎89921502李雪82851503张扬7796某单位招聘考试成绩汇总表【随堂练习9-1】【提示与思考】1.结构类型如何定义2.结构变量的定义方式3.结构变量的赋值方式4.结构变量的交换(1)变量成员的交换(2)变量的整体交换程序演示Page17C语言程序设计基础9.2用函数处理结构类型数据知识回顾:函数调用中的数据传递方式:1.数值传递方式2.地址传递方式处理结构类型数据时,函数间传递结构变量的值还是地址?考号姓名笔试成绩面试成绩总成绩1501王虎89921502李雪82851503张扬7796某单位招聘考试成绩汇总表用函数完成:查找最高总成绩的考生信息。例9-6Page18C语言程序设计基础9.2用函数处理结构类型数据【分析】结构变量不能作为一个整体输入和输出,但可以作为一个整体赋值、传递给函数以及作为函数返回值。【处理方法】当用结构变量作函数参数进行整体传送时,要将全部成员逐个传送,时间和空间开销很大,降低了程序效率。一般我们不将结构变量作为函数参数,而采用结构指针变量,实参传向形参的只是地址,减少了时间和空间开销。结构体变量的存储示意图nameexamaexambtotalnum10字节4字节4字节4字节4字节a结构类型变量特点分析Page19C语言程序设计基础9.2用函数处理结构类型数据考号姓名笔试成绩面试成绩总成绩1501王虎89921502李雪82851503张扬7796某单位招聘考试成绩汇总表用函数完成:查找最高总成绩的考生信息。structjob_exam{unsignednum;charname[10];intexama;intexamb;inttotal;}s[3]={{1501,“王虎”,89,92},{1502,“李雪”,87,96},{1503,张扬,82,85}};例9-6Page20C语言程序设计基础9.2用函数处理结构类型数据【自定义函数】voidfind(structjob_exam*p){*p=s[0];for(inti=1;i3;i++)if((*p).totals[i].total)*p=s[i];}用函数完成:查找最高总成绩的考生信息。例9-6【主函数】voidmain(){inti;structjob_examt;for(i=0;i3;i++)s[i].total=s[i].exama+s[i].examb;find(&t);printf(“总成绩最高考生:\n);printf(“编号姓名笔试面试总成绩\n);printf(%4u%8s%6d%6d%6d\n,t.num,t.name,t.exama,t.examb,t.total);}Page21C语言程序设计基础课程小结:我们学习了什么?考号姓名笔试成绩面试成绩总成绩1501王虎89921502李雪82851503张扬7796某单位招聘考试成绩汇总表unsignednum;charname[10];intexama;intexamb;inttotal;{};structjob_exam结构类型的说明结构成员构成特点结构整体构成特点结构类型变量的定义独立定义和结构类型同时定义结构类型变量的操作结构成员的引用结构变量的引用用函数处理结构类型数据Page22C语言程序设计基础课程实验:实验内容•实例9-3利用VC环境实现
本文标题:单元9-结构类型的使用
链接地址:https://www.777doc.com/doc-2593119 .html