分校C课件第14讲结构体32-1-3节.ppt

  1. 1、本文档共32页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
分校C课件第14讲结构体32-1-3节

第十四讲 结构体 第十四讲 结构体 结构体的概念 结构体类型的定义 结构体变量 定义和声明 初始化 使用 结构体数组 结构体 结构体 结构体类型定义的一般形式为: struct 结构体名 { 类型名1 成员名1; 类型名2 成员名2; …… 类型名n 成员名n; }; struct date {int year; int month; int day; }; 也可以写成: struct date {int year,month,day;}; 结构体类型的定义 结构体定义说明 同一个结构体内不可以有同名的成员。 不同结构体的成员名可以相同,不互相冲突。 结构体类型的定义 结构体定义说明 结构体的成员可以是基本类型和构造类型(数组和其他结构体)。 结构体定义说明 只是创建了新的数据类型,并不能保留内存空间。 必须定义结构体变量来获得内存空间。 定义(声明)结构体变量 有三种方法: 定义结构体类型后,像声明普通变量一样声明结构体变量。 结构体变量 定义声明结构体变量 2.在定义结构体类型的同时,声明结构体变量 struct student /* student是结构体名,结构体成员有num,name,sex,date,scre[4] */ { int num; char name[8],sex; struct date /*date是结构体名,其结构体变量表是birthday,成员包括年月日*/ ? { int year,month,day; }birthday; float score[4]; /*score[4]是数组,数组成员类型浮点型 */ }xuesh; 结构体的操作 结构体变量可以执行的操作 将结构体变量赋给相同类型的结构体变量。 得到结构体变量的地址。 访问结构体变量的成员。 使用 sizeof 确(测)定结构体变量的大小。 结构体变量的初始化 给全部成员赋初值 结构体变量的初始化 初始化结构体变量 给部分成员赋初值。 访问结构体成员的两种方式 结构体成员运算符:. 用于结构体变量 结构体指针运算符:- 用于指向结构体的指针 等价于 (*cardPtr).face 案例分析:结构体变量的成员 问题:访问结构体变量的成员。(cw1301.c) 问题:编写函数实现结构体的复制。 案例分析:结构体作为函数的参数 结构体数组 结构体数组 数组的元素是结构体变量。 常用结构体来表示记录,那么结构体数组就可以表示一组记录。 案例分析 全班 N 个学生,每个学生有学号、姓名、四门课的成绩。 结构体数组 结构体数组 案例分析 那么,可以定义结构体数组来保存 N 个学生的数据。 这样,每个学生的数据就对应一个结构体变量(一条记录),便于编程处理。 程序举例 设某班有N名学生,每个学生数据包括学号,姓名,性别,年龄,平均成绩。要求输入任意一个学号,输出该学生的所有数据。 分析:从一组数据中查找所需要的具有某特征的内容,最简单的是顺序查找。直到找到或找完为止。 /*Cw1303.c 教材P171L11-1*/ #include stdio.h #define N 2 struct student //定义结构体 { long int num; //学号 char name[7]; //姓名 char sex[3]; //性别 int age,score; //成绩 }stu[N]; //定义结构体数组 main() { int i,t=-1; //t=-1为未查找到时的标志 long int xuehao; //查找学号变量 struct student stu[N]; //定义结构体类型数组 printf(请按下列顺序输入%d个学生的信息:\n,N); //为结构体变量赋值 printf(\t学号 姓名 性别 年龄 平均\n); for (i=0;iN;i++) { printf(NO%d:\t,i+1); scanf(%ld%s%s%d%d,stu[i].num,stu[i].name,stu[i].sex,stu[i].age,stu[i].score); }printf(请输入需查找学生的学号:); scanf(%ld,xuehao); for(i=0;iN;i++) { if(xuehao==stu[i].num) { t=i;break;} } if (t!=-1) /*以下输出检索结果*/ printf(%ld%8s%4s%4d%4d\n,stu[t].num,s

文档评论(0)

shuwkb + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档