单元9-结构类型的使用_第1页
单元9-结构类型的使用_第2页
单元9-结构类型的使用_第3页
单元9-结构类型的使用_第4页
单元9-结构类型的使用_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

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

文档简介

<<C语言程序设计基础>>课程单元九

结构类型的使用主要内容结构类型概述结构类型的说明结构变量的定义(重点)结构变量的引用(重点)结构类型数据的处理用函数处理结构类型(难点)考号姓名笔试成绩面试成绩总成绩1501王虎89921502李雪82851503张扬7796…………某单位招聘考试成绩汇总表问题引入如何处理?数据特点:1.各行内数据不尽相同;2.各行间数据情况相同;3.以行为单位处理数据.unsignednum;charname[10];intexama;intexamb;inttotal;问题引入考号姓名笔试成绩面试成绩总成绩1501王虎89921502李雪82851503张扬7796绘制二维表格第一步:制作表头第二步:画出各行第三步:编辑各行数据使用结构类型第一步:结构说明第二步:结构变量定义第三步:结构变量引用某单位招聘考试成绩汇总表如何转换成C语言描述?9.1结构类型的基本使用9.1.1结构类型说明9.1.2结构变量定义9.1.3结构变量引用9.1结构类型的基本使用9.1.1结构类型说明unsignednum;charname[10];intexama;intexamb;inttotal;{};structjob_exam考号姓名笔试成绩面试成绩总成绩1501王虎89921502李雪82851503张扬7796某单位招聘考试成绩汇总表例9-19.1结构类型的基本使用9.1.1结构类型说明unsignednum;charname[10];intexama;intexamb;inttotal;{};structjob_exam结构类型说明的一般格式struct<结构名>

{<类型名1><成员变量名1>;<类型名2><成员变量名2>;......<类型名n><成员变量名n>;};

结构类型关键字结构类型说明的标识符结构类型成员列表结构成员起始终止标志分号为结构类型终止标记9.1结构类型的基本使用9.1.2结构变量定义考号姓名笔试成绩面试成绩总成绩1501王虎89921502李雪82851503张扬7796某单位招聘考试成绩汇总表structjob_exam*p=&a;structjob_exam

a,b;structjob_exam

s[3];

(1)定义两个结构变量a和b(2)定义结构变量数组s,有三个元素(3)定义结构指针p,指向结构变量aunsignednum;charname[10];intexama;intexamb;inttotal;{};structjob_exam例9-29.1结构类型的基本使用9.1.2结构变量定义结构类型说明和变量定义合二为一unsignednum;charname[10];intexama;intexamb;inttotal;{};structjob_examstructjob_exam*p=&a;structjob_exam

a,b;structjob_exam

s[3];

unsignednum;charname[10];intexama;intexamb;inttotal;{}a,b,s[3],*p;structjob_exam9.1结构类型的基本使用9.1.2结构变量定义结构体变量定义时同时初始化struct

job_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_exam9.1结构类型的基本使用9.1.2结构变量定义结构体变量的存储特点系统为结构变量分配内存的字节总数为:结构变量所包含的各个成员变量所占字节数之和。如结构变量a所占内存字节数为26。结构体变量的存储示意图nameexamaexambtotalnum10字节4字节4字节4字节4字节astruct

job_exam

{unsignednum; charname[10]; intexama; intexamb; inttotal;

}a={1501,"王虎",89,92},s[3]={{1501,"王虎",89,92},{1502,"李雪",87,96},{1503,"张扬",82,85}},

*p=&a;9.1结构类型的基本使用9.1.3结构变量引用(1)用成员运算符“.”引用结构变量成员(2)用指针引用结构变量成员a.total=a.exama+a.examb;p->total=p->exama+p->examb;struct

job_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;9.1结构类型的基本使用9.1.3结构变量引用#include<stdio.h>voidmain(){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.exama,a.examb,a.total);}运行结果:程序演示

例9-3实例应用1—引用变量成员9.1结构类型的基本使用9.1.3结构变量引用#include<stdio.h>voidmain(){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;i<3;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—引用变量成员9.1结构类型的基本使用9.1.3结构变量引用#include<stdio.h>voidmain(){structjob_exam {unsignednum; charname[10]; intexama,intexamb,inttotal; }t,s[3]={{1501,"王虎",89,92},{1502,"李雪",87,96},{1503,"张扬",82,85}};for(inti=0;i<3;i++)s[i].total=s[i].exama+s[i].examb;

t=s[0];

if(t.total<s[1].total)t=s[1];

if(t.total<s[2].total)t=s[2];printf("总成绩最高的考生信息:\n");printf("编号姓名笔试面试总成绩\n");printf("%4u%8s%6d%6d%6d\n",t.num,,t.exama,t.examb,t.total);}运行结果:程序演示

结构体变量整体的引用实例应用3—引用变量整体例9-59.1结构类型的基本使用有如下定义:

structjob_exama,b;请为结构变量a,b输入各成员值,交换a和b数据后输出。

考号姓名笔试成绩面试成绩总成绩1501王虎89921502李雪82851503张扬7796某单位招聘考试成绩汇总表【随堂练习9-1】【提示与思考】1.结构类型如何定义

2.结构变量的定义方式3.结构变量的赋值方式4.结构变量的交换

(1)变量成员的交换

(2)变量的整体交换程序演示

9.2用函数处理结构类型数据知识回顾:函数调用中的数据传递方式:

1.数值传递方式2.地址传递方式处理结构类型数据时,函数间传递结构变量的值还是地址?考号姓名笔试成绩面试成绩总成绩1501王虎89921502李雪82851503张扬7796某单位招聘考试成绩汇总表用函数完成:查找最高总成绩的考生信息。例9-69.2用函数处理结构类型数据【分析】结构变量不能作为一个整体输入和输出,但可以作为一个整体赋值、传递给函数以及作为函数返回值。【处理方法】当用结构变量作函数参数进行整体传送时,要将全部成员逐个传送,时间和空间开销很大,降低了程序效率。一般我们不将结构变量作为函数参数,而采用结构指针变量,实参传向形参的只是地址,减少了时间和空间开销。结构体变量的存储示意图nameexamaexambtotalnum10字节4字节4字节4字节4字节a结构类型变量特点分析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-69.2用函数处理结构类型数据【自定义函数】voidfind(structjob_exam*p){*p=s[0];for(inti=1;i<3;i++)if((*p).total<s[i].total) *p=s[i];}用函数完成:查找最高总成绩的考生信息。例9-6【主函数】voidmain(){inti;structjob_examt; for(i=0;i<3;i++)s[i].total=s[i].exama+s[i].examb;

温馨提示

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

评论

0/150

提交评论