华北电力大学C++第十五讲

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

结构体----Байду номын сангаас构体变量
结构体变量的引用 与数组类似,不能将一个结构体变量作为一个整体进行输 入输出,只能对结构体中的各个成员分别进行输入输出。 引用结构体成员的格式 如果本身又成员属于结构体类 结构体变量名.成员名 型,就要用若干成员运算符,一 . 成员运算符,优先级最高 级一级找到最低一级的成员 成员可以像普通变量一样参 加各种运算 struct date { int year; 可以将某个结构体变量的值 int month;}; 整体赋给另一个同类型的结构 struct student 体变量 { int num; cout<<st1.num; date birthday; cout<<st1.birthday.year; float score; st2=st1; } st1={101,1991,1,97}; sum=st1.score+st2.score; student st2;
结构体-指向结构体类型数据的指针
概述 一个结构体变量的指针就是该变量所占据的内存段的起始地址 可以设一个指针变量,用来指向一个结构体变量,此时该指针 变量的值是结构体变量的起始地址 指针变量也可以用来指向结构体数组中的数组元素。
//定义结构体类型student struct student p { int num; char name[20]; &stu_1 float score;}; //定义结构体变量stu_1 struct student stu_1; //定义指向结构体类型的指针p struct student *p; //p指向结构体变量stu_1 p=&stu_1;
stu_1
成员num
name[0]
……
name[19] 成员score
……
成员name
结构体-指向结构体类型数据的指针
#include <iostream.h> 指向结构体变量的指针 定义指向结构体类型的指针变 void main() 101zj96.7 例如:struct student *p; 量 { struct student 101zj96.7 指针变量指向结构体变量 { int num; 101zj96.7 将结构体变量的地址赋给指针变量 char name[20]; 例如:p=&stu_1; float score;}stu_1,*p; 用指针变量引用结构体变量 student stu_2={101,"zj",96.7}; *p 引用stu_1 p=&stu_1;//p指向stu_1 等 (*p).num 引用stu_1.num *p=stu_2;//stu_2的值赋给stu_1 价 p->num 引用stu_1.num stu_1 //输出stu_2 p 成员num cout<<stu_2.num<< &stu_1 stu_2.name<<stu_2.score; cout<<endl<<(*p).num<< 成员name (*p).name<<(*p).score; cout<<endl<<p->num<< 成员score p->name<<p->score;}
结构体----结构体变量
定义结构体类型变量的方法 方法二 方法三 定义结构体类型的同时定义变量 格式 直接定义结构体类型变量 struct 结构体名 例如: { 成员表 }变量表; struct { int num; 例如: char name[20]; struct student float score; { int num; }st1,st2; char name[20]; 不出现结构体名 float score; }st1,st2;
„L‟
„\0‟

tt[1] {100002,"WL",78.5,}}; cout<<tt[0].num<<tt[0].name<< tt[0].score;
78.5
成员score
结构体----结构体数组
#include <stdio.h> 例2 编程统计某次选举中各候选人的票数。假设有三位候选人, #include <string.h> 每张选票中有三位候选人的名字,只能选其一,要求逐一输入每 void main() 张选票选中的候选人,统计并输出各候选人的选举最终得票数。 { struct person 定义结构体类型 { char name[20]; int count; } lx[3]={"ZS",0,"LS",0,"WW",0}; char xp[20]; int i,j; for(i=0;i<10;i++) { gets(xp); void main() for(j=0;j<3;j++) {struct person if(strcmp(xp,lx[j].name)==0) { char name[20]; lx[j].count++; } int count; for(i=0;i<3;i++) }; person lx[3]={"ZS",0,"LS",0,"WW",0}; printf("\n%5s:%d", lx[i].name,lx[i].count);} 定义结构体数组
结构体----结构体变量
结构体变量的引用 #include <iostream.h> 例1 输入一个学生的姓名和4门课程的成绩,求出其平均分。 void main() 定义结构体类型 { struct student student { char name[20] ; student的成员: int score[4]; name 字符数组 float ave;}st1; score 整型数组 int i;st1.ave=0;cin>>st1.name; for(i=0;i<4;i++) ave 平均值 { cin>>st1.score[i]; 定义结构体变量 st1.ave+=st1.score[i];} struct student st1.ave=st1.ave/4; { char name[20] ; cout<<st1.name<<" "; int score[4] ; for(i=0;i<4;i++) float ave; cout<<st1.score[i]<<" "; }; cout<<st1.ave; student st1; }
结构体----结构体变量
定义结构体类型变量的方法 方法一 先定义结构体类型,再定义变量 定义结构体类型 格式二 typedef struct 结构体名 格式一 struct 结构体名 { 成员表 }; { 成员表 }; 例如: 或 struct student typedef struct { int num; { 成员表 } 结构体名; char name[20]; float score; 例如: }; typedef struct student 定义结构体变量 { int num; char name[20]; 结构体名 变量表 float score; 例如: }; student st1; struct student st2;
结构体----结构体数组
问题 如何存储表格中的数据 tt[0] tt[1] tt[9] 类型: 结构体 用结构体数组存储 变量个数: 数组tt有十个元素 10个数组tt 每个元素都是一 个结构体变量 tt[0] 表格中一行数 tt[1] 据存储在一个数 ......
定义结构体数组的方法 先定义结构体 例: 组元素中 类型,再定义结 //定义结构体类型 构体数组 tt[9] struct table 定义结构体类 { int num; 成员num char name[20]; 型的同时定义结 name[0] 构体数组 float score; 成员name 直接定义结构 }; name[19] 体类型的数组 //定义结构体数组 table tt[10]; 成员score
结构体----结构体变量
定义结构体类型变量的方法 结构体变量的初始化 和其他类型变量一样,结构体变量也可以初始化。 初始化时将结构体变量的成员所对应的初始值按顺序给出 struct date { int year; int month; int day; }; struct student { int num; char name[20]; date birthday; float score; } st1={101,“zh",1991,1,2,97}; student st2={101,"lili",1993,10,2,85};
高级语言程序设计
结构体、共用体、位运算和文件
– 结构体
– 共用体 – 位运算 – 文件
结构体
概述 结构体变量 结构体数组 指向结构体类型数据的指针 用指针处理链表
结构体----概述
问题的提出 如何存储某个同学的个人信息
方法一
定义6个变量(或数组) 名字 类型 存储内容 num 整型变量 学号 name 字符数组 姓名 sex 字符变量 性别 age 整型变量 年龄 score 实型变量 成绩 addr 字符数组 住址 问题 需要存储的6个数据项具有相 关性,都属于一个同学 存储这6个数据项的变量相互 独立,难以反映数据之间的内 在联系 应当把6个数据项组织成一个 组合项 ——结构体
……
……
tt[0]
结构体----结构体数组
结构体数组初始化 和普通数组初始化方式一样 结构体数组元素的引用方法 和普通的结构体变量的引用 方法一样 数组tt tt[0] 例如: tt[1] struct table tt[2] { int num; char name[20]; float score; tt[9] }; table tt[10]={{100001,"ZX",90.5}, ......
st1 name[0] name[19] 成员score
……
……
成员name
结构体----结构体变量
定义结构体类型变量的方法 结构体成员可以是一个结构体变量 例如:定义一个包含年、月、日的结构体类型date,然后再 定义一个包含学号、姓名、生日、成绩的结构体类型student struct date { int year; 定义结构体类型date int month; int day; }; struct student { int num; 定义结构体类型student char name[20]; date birthday; float score; };
tt[0] tt[1] tt[9]
100001 成员num
„Z‟
tt[0]
„X‟ „\0‟

name[0] name[1] name[2] 成员name name[19]
90.5
„W‟
成员score
name[0] name[1] name[2] 成员name name[19]
100002 成员num
结构体----结构体变量
定义结构体类型变量的方法
结构体变量在内存中的存储方式
//定义结构体类型 struct student { int num; char name[20]; float score; }; //定义结构体变量 student st1; struct student st2;
成员num
结构体----概述
问题的提出 如何存储某个同学的个人信息 <iostream.h> #include #include <string.h> void main() 定 { struct student 方法二 用结构体变量存储 义 { int num; 结 结构体的概念 char name[20]; 构 构造数据类型。 体 float score; 若干个不同类型但相关的变量 类 }; 构成数据集合体 型 集合体使用一个唯一的名称, student st1; 定义结构 其中的每一个变量称为成员。 体变量 st1.num=100001; 结构体的使用方法 ...... 定义结构体类型 cout<<st1.num; 定义这种结构类型的结构体变量 ...... } 引用结构体st1中的成员num 引用结构体变量
……
相关文档
最新文档