c语言—-结构体课件

合集下载

C语言程序设计教程PPT完整全套教学课件

C语言程序设计教程PPT完整全套教学课件

联合体定义和使用场景分析
联合体定义
使用`union`关键字定义联合体类型,指定联合体名 称和成员列表。
内存共享
联合体的所有成员共享同一块内存空间。
使用场景
适用于多种数据类型但只需存储其中一种的场景, 如混合类型的数据存储和处理。
枚举类型定义及应用举例
枚举类型定义
使用`enum`关键字定义枚举类型,指定枚举名称和枚举常量列表。
01
跳转语句的概念和 特点
改变程序执行流程,实现程序的 跳转。
02
跳转语句的语法和 示例
break语句、continue语句、 goto语句等。
03
跳转语句的应用场 景
适用于需要中断循环、跳过某些 操作等特殊情况。
04
函数与模块化设计
函数定义和调用
函数定义的基本语法
返回类型 函数名(参数列表) { 函数体 }
将数组元素作为实参传递给形参,形参和实参类型必须一致;
数组名作为函数参数
将数组名作为实参传递给形参,形参和实参类型可以不一致,但形 参数组的大小必须大于等于实参数组的大小;
多维数组作为函数参数
多维数组可以作为函数参数传递,但需要注意多维数组的传递方式 和一维数组的传递方式不同。
06
指针与动态内存管理
02
数据类型、运算符与表达式
基本数据类型
01
整型(int)
02
浮点型(float、 double)
字符型(char)
03
04
布尔型(bool)
常量与变量
常量
在程序运行过程中,其值不能被改变 的量。
变量
在程序运行过程中,其值可以被改变 的量。
运算符和表达式

C语言程序设计第4章选择结构程序设计ppt课件

C语言程序设计第4章选择结构程序设计ppt课件

8
printf("grade is E" );
9 else if (score >=60 && score<70 )
10
printf( "grade is D");
11 else if (score >=70 && score<80 )
12
printf( "grade is C");
13 else if (score>=80 && score<90 )
printf("a,b="); scanf("%d,%d",&a,&b); if (a>b) max=a; else max=b; printf("max=%d\n",max); }
结束
8
3.if-else if-else语句
(1)语句格式:
if (表达式1) 语句1
else if (表达式2) 语句2
不再判断,顺序执 行下面的语句
21
4.2 switch语句
switch (表达式) {case 常量表达式1:语句1 case 常量表达式2:语句2 …… case 常量表达式n:语句n [default:语句n+1] }
注意:
1. <表达式>可以是整型或字 符型表达式; 2. case后面必须是常量表达 式,不能包含变量; 3. 每个常量表达式的值应互 不相同; 4. case语句先后顺序随意; 5.若从上至下没有找到与表 达式的值相匹配的case,含有 default子句时,执行语句n+1。

C语言的指针和结构体

C语言的指针和结构体

– 如果分配成功,原存储块的内容就可能改变了,因此不
允许再通过ptr去使用它精选。课件ppt
17
结构体
精选课件ppt
18
结构体的定义
• 结构体类型定义的一般形式为:
struct 结构名 {
//关键字struct和它后
类型名
结构成员名1;
面的结构名一起组成 一个新的数据类型名
类型名 结构成员名2;
所需要的存储空间。 (3)使指针指向获得的内存空间,以便用指
针在该空间内实施运算或操作。 (4)当使用完毕内存后,释放这一空间。
精选课件ppt
13
动态存储分配函数malloc()
void *malloc(unsigned size)
在内存的动态存储区中分配一连续空间,其长度为 size
– 若申请成功,则返回一个指向所分配内存空间的起 始地址的指针
& : 取地址运算符,给出变量的地址。
int *p, a = 3;
p = &a; 把 a 的地址赋给 p,即 p 指向 a
p
a
&a
3
*p
//指针变量的类型和它所指向变量的类型相同
* :间接访问运算符,访问指针所指向的变量。
*p:指针变量 p 所指精向选课的件p变pt 量。
4
p
a
说明 int a = 3, *p;
};
name ↓
Zhang
age ↓
26
telephone ↓
精选课件ppt
23
结构体变量成员的使用
结构体变量名 .成员名
friend1.age = 26; strcpy(, "Zhang San"); strcpy(friend1.addr.zip, " 210044 ");

C语言PPT课件_C_13_构造类型

C语言PPT课件_C_13_构造类型
27
结构体作函数参数
3
构造类型
以下程序的运行结果是 typedef struct { char s[5], t; } A; A f(A a) BBm { A b = {"BB",'m'}; a.t = b.t; strcpy(a.s, b.s); return a; } main() { A c = {"CC",'f'}, d = f(c); printf("%s%c", d.s, d.t); }
14
结构体指针
例:(*p).num或p->num都是访问其指向对 象的num成员的形式。 p->num得到p指向的结构体变量中的成 员num的值 p->num++得到p指向的结构体变量中的 成员num的值,用完该值后使它加1 ++ p->num得到p指向的结构体变量中 的成员num的值加1 ,然后再使用它 (++p)->num先使p自加1,然后得到它指 向的元素中的num成员值 (p++)->num先得到p->num的值,然后 使p自加1
结构体 指针p
构造类型
结构体 变量w
w的成员
name
sex
s的成员
p
w h y
s
m
d
18
用户自定义类型
①用原类型名定义变量。 typedef
构造类型
例如:int a; ②在前面加上typedef, 把变量名换成新类型名。 例如: typedef int INTEGER; ③用INTEGER代替int作 整型变量的类型说明。 例如:INTEGER a;

C语言程序设计-杨路明第9章课件

C语言程序设计-杨路明第9章课件
现在定义了一个结构体数组students,它有3个元素,又定义了一个结构体变量 student1,则下面的赋值合法。 student1=students[0]; students[2]=students[1]; students[1]=student1;
9.3.3 结构体数组的使用
(3) 不能把结构体数组元素作为一个整体直接进行输入或输出,只能以单个成 员对象进行输入输出。例如:
/*学号*/
char name[20]; /*姓名*/
char sex;
/*性别*/
int age;
/*年龄*/
float score;
/*C成绩*/
char addr[40];
};
注:‘;’不能省
结构体类型定义描述结构 的组织形式,不分配内存
9.1 结构体类型的定义
例如,考虑10门课程成绩, 加上总成绩与平均成绩,可作如下定义:
struct是关键字,不能省略
struct
[结构体类型名] {
成员说明列表: ……….
}
成员类型可以是 基本型或构造型
9.1 结构体类型的定义
实例:定义结构体类型,描述下列数据 (1) 学生情况: 包含学生的学号、 姓名、 性别、 年龄、C语言课程成绩,地址:
struct student
{ int num;
输出stud变量,应该使用如下方式:
应该如何输出stud变量?
printf(″%s,%s,%ld\n″,,stud.addr,stud.num); 输入stud变量的各成员值,则用:
scanf(″%s%s%ld″,,stud.addr,&stud.num);
9.3 结构体类型数组
9.4.2 指向结构体数组元素的指针

C语言第9章结构体、共用体、枚举

C语言第9章结构体、共用体、枚举

结构体变量.成员
struct date { int year;
int month; int day;
“.”是成员运算符, 优先级最高
printf("%d,%d,%d",birth);
printf("%d,%d,%d",birth.year,
}; struct date birth;
birth.month,birth.day);
scanf("%f",&student2.score[2])7; 8
student2
结构变量的整体赋值 student3 = student2;
02 Zhang Zi Liang 88 78
student3
02 Zhang Zi Liang 88 78
湖南工业大学计算机与通信学院
例9-1学生的基本信息包括学号、姓名、3门成绩、平均分、总分。输入一 个学生的前3项基本信息,计算平均分和总分并输出。
湖南工业大学计算机与通信学院
9.1 问题的提出
又如,在学生信息管理系统中填 加个属性:是否是中共党员,如 果不是属性的值为0(int),如
果是属性的值为入党的时间 (char)。在某一时间,属性只有 一种值,而且数据类型不同,这 种情况用什么数据类型描述呢?
对于这种应用,C语言引入了共用体类型。
共用体是一种同一存储区域由不同类型变量共享的数据 类型,它提供—种方法能在同一存储区中操作不同类型 的数据,也就是说共用体采用的是覆盖存储技术,准许 不同类型数据互相覆盖。
基本数据类型并不能方便地解决所有问题
❖ 复合数据类型是基本数据类型迭代派生而来
典型的代表就是“结构”,数组、指针也可算作此类

C语言详细教程(完整版)ppt课件

C语言详细教程(完整版)ppt课件

C语言有很多种,如:Microsoft C、Turbo C、
Quick C、Borland C++、Visual C等。本课程通
.
过Turbo C的环境来学习C语言。
C Programming Language
三、C程序格式和结构特点
例1.1 第一个程序 Hello,World!
/* example1.1 The first C Program*/
– 答疑时间:星期四 12:00~13:30 – 地点:鉴主-12楼-计算机技术研究所 – 第6周到第18周
考试
. C Programming Language
上机安排
地点:南湖计算中心机房
时间:待定 上机内容:随教学进度根据配套的实验书( 上机调试每次课堂作业) 要求:
• 所有作业必须独立完成
• 作业必须经上机调试通过
. C Programming Language
开始
N=0
N<10吗?
Y
输入 X
X>=0吗? N N=N+1
N
结束
Y 输出 X
[例1.4] 输入10个数,求它们的平均值。
N=0, SUM=0 当N<10 输入X SUM=SUM+X N=N+1 AVER=SUM/10 输出AVER的值
. C Programming Language
定点法
数制转换
数值数据:二进制
浮点法
数据
西文:ASCII
非数值数据:编码 汉字:国标码
. C Programming Language
图形:……
有符定点整数
ds dn dn-1 dn-2 ……..

C语言程序设计第9单元

C语言程序设计第9单元

9.3 结构体指针
*(结构体指针变量).成员名 (*p).sno=20160101; (*p).name="李磊"; (*p).grade[0]=90; 结构体指针变量->.成员名 p->.sno=20160101; p->. name="李磊"; p->. grade[0]=90;
9.3 结构体指针
9.1 结构体类型 9.1.4 结构体变量的引用
9.1.4 结构体变量的引用
如何引用结构体变量中的一个成员,其语法结构是:
结构体变量名.成员名 【例】 stu1.sno=20160101;
="李磊";
stu1.classname="软件16级1班"; stu1.grade[0]=90;
【例】要求通过键盘输入一个学生信息,并且输出这个学生的 所有信息。(用指针变量引用结构体变量的成员。)
9.4 结构体与函数
9.4 三种:


结构体变量作为函数参数
结构体指针作为函数参数 函数的返回值是结构体类型。
#include <stdio.h> struct student { int sno; char name[20]; double grade[3]; }; void showStuInfo(struct student stu) 值传递 { printf("学号:%d\n",stu.sno); printf("姓名:%s\n",); printf("课程1:%lf\n",stu.grade[0]); printf("课程2:%lf\n",stu.grade[1]); printf("课程3:%lf\n",stu.grade[2]); } int main() { struct student stu1={20160101,"李磊",{90,85,80}}; showStuInfo(stu1); return 0; }

c语言 ppt课件

c语言 ppt课件

程序调试和优化
01
02
03
调试技巧
断点、单步执行、变量监 视等。
优化方法
代码优化、算法优化、数 据结构优化等。
性能分析
时间复杂度、空间复杂度 等。
C语言在实际项目中的应用
系统编程
游戏开发
网络编程
嵌入式系统
操作系统内核、驱动程 序等。
游戏引擎、游戏逻辑等 。
网络协议、服务器端编 程等。
智能硬件、物联网等。
05
C语言常见问题和陷阱
内存泄漏和野指针
内存泄漏
当动态分配的内存未被释放时,会导 致内存泄漏。长时间运行程序会导致 可用内存逐渐减少,影响程序性能。
野指针
指针被释放后仍然被使用,或者未初 始化的指针被使用,导致程序行为不 可预测。
数组越界和段错误
数组越界
访问数组时超出其界限,可能导致读取或写入其他内存区域 ,造成数据损坏或程序崩溃。
系统软件
C语言也广泛应用于系统软件 开发,如编译器、数据库管理
系统和网络协议栈等。
02
C语言基础语法
数据类型
数据类型
定义变量时,必须指定其数据类 型,以便编译器了解如何存储和 操作该变量。C语言中的数据类 型包括整型、浮点型、字符型等

整型
用于存储整数,包括short、int 、long等类型。
THANKS
指针可以进行加减运算,指向数组元 素的指针可以进行算术运算,以访问 数组中的其他元素。
地址
每个变量在内存中都有一个唯一的地 址,通过地址可以访问变量的值。在 C语言中,地址可以通过取地址符&获 取。
结构体和联合体
01
结构体
结构体是一种自定义数据类型,可以包含多个不同类型的数据成员。通

C语言开发基础教程(Dev-C++) 第8章 结构体

C语言开发基础教程(Dev-C++) 第8章 结构体


8.5 typedef的使用
3、为结构体类型取别名 typedef struct Student{
int num; char name[10]; char sex; }STU; STU stu1; //struct Student stu1;

8.6 阶段案例——学生成绩管理系统
一、案例描述 案例要求模拟开发一个学生成绩管理系统,此系统具有以下功能: (1)添加学生信息,包括学号、姓名、语文、数学成绩; (2)显示学生信息,将所有学生信息打印输出; (3)修改学生信息,可以根据姓名查找到学生,然后可以修改学生姓 名、成绩项;

8.1.2 结构体变量定义
1、先声明结构体类型,再声明结构体变量 定义了结构体变量stu1与stu2之后,stu1与stu2便占据了内存空间,它 们具有结构体特征。
stuu11: 201403001 Zhang San Man
23
Beijing
ssttuu22: 201403002 Li Yun
struct student {
char a; double b; int c; short d; };
字节对齐

脚下留心:结构体嵌套
结构体类型中的成员可以是一个结构体变量。这种情况称为结构体嵌套。
struct Date {
int year; int month; int day; };
struct student{ char num[12]; double b; int c; struct Date d;
};
struct Student students[3] = { 定义数组 {20140101, "Zhang San",'M'}, {20140102, "Li Si",'W'} {20140103, "Zhao Liu",'M'} };

四川大学《c语言程序设计》课件-第8章 结构体与共用体

四川大学《c语言程序设计》课件-第8章 结构体与共用体
男 1999
90 83 72 82
2 林平之
男 1999
78 92 88 78
3 岳灵珊
女 1999
89 72 98 66
4 任盈盈
女 1999
78 95 87 90
结构体的解决方法
struct STUDENT
{ int studentID;
/*每个学生的序号*/
char studentName[10];/*每个学生的姓名*/
};
结构体变量的指针
struct STUDENT
{
int
studentID;
char
studentName[10];
char
studentSex[4];
struct date timeOfEnter;
int
scoreComputer;
int
scoreEnglish;
int
scoreMath;
int
结构体的内存占用
double 占用内存字节数 = 8 struct 类型用内存字节数 = ? 是所有成员变量的内存总和吗?
用运算符sizeof获得结构体大小 sizeof(变量或表达式) sizeof(类型)
struct number
{ short i; char ch;
float f;
};
printf("%d\n", sizeof(struct number));
struct STUDENT *pStu; /*定义结构体指针*/
pStu = &stu;
通过stu和成员运算符访问结构体成员
– stu. studentID = 1;
通过pStu和指向运算符访问结构体成员

C语言1-结构体类型概述、结构体类型变量

C语言1-结构体类型概述、结构体类型变量

章节名称结构体类型概述、结构体类型变量授课类型□理论□实验☑理实一体□实训□实习班级地点周次星期节次授课进度☑符合□超前□滞后☑符合□超前□滞后☑符合□超前□滞后教学目标知识目标1.掌握结构体类型的声明方法2.掌握结构体类型变量的定义、初始化和引用方法能力目标能根据实际需要声明结构体类型教学重点1.结构体类型的声明方法2.结构体类型变量的定义、初始化和引用方法教学难点结构体类型的声明、结构体变量的引用教学方法讲授法、对比法、启发法、练习法教学手段多媒体、机房电脑、板书教学资源教材、教学PPT、微课视频、课程网站教学设计教学环节内容要点教学方法与手段时间分配导入前面已经学习了基本类型(整型、实型、字符型)和一种构造类型——数组,数组是将相同类型的多个数据组合在一起。

在实际问题中,一组数据往往具有不同的数据类型。

例如,在学生成绩表中,一个学生的学号为整型、姓名为字符型、成绩为实型,显然不能用一个数组将某个学生的这些数据组合在一起。

为解决这一问题,用户可以建立由不同类型数据组成的组合型数据结构——结构体。

5新课教学一、结构体类型的声明:关键字struct、结构体名、成员名讲授法10二、结构体类型变量1、定义结构体变量的方法(1)先声明结构体类型,再定义结构体变量(2)在声明结构体类型的同时定义结构体变量(3)不指定结构体名而直接定义结构体变量2、说明:(1)结构体成员也可以是一个结构体变量(2)结构体成员名可与程序中其他变量同名讲授法、对比法30二、结构体变量的初始化和引用1、结构体变量的初始化2、结构体变量成员的引用:结构体变量名.成员名【例6.1】讲授法、练习法30 3、结构体变量的说明:(1)结构体变量成员的运算(2)结构体变量地址和成员地址的引用讲授法10课堂小结结构体类型声明的方法,结构体变量的定义、初始化及引用方法 3 作业布置复习本次课内容;预习6.3节“结构体类型数组” 27S管理整理、整顿、清扫、清洁、素养、节约、安全课后教学效果及改进思路。

C语言程序设计-结构体

C语言程序设计-结构体

struct student {
char name[20]; float math; float physics; float english; float aver; float count; }; … struct student s={“王军”,84,88,71,81,243};
结构体变量的引用
3. 如果是嵌套定义,用若干个
char publisher[40]; struct date pub_date; int pages; float price;
成员运算符,一级一级地找 } ebook,mbook;
到最低的一级成员
ebook.pages=200;
ebook.pub_date.month ebook.pub_date.year ebook.pub_date.day
相关的数据组织起来, {
作为一个整体(集合)。
char name[20]; float math;
• 结构体的定义:
float physics;
struct 结构体名
成员 {
列表
数据类型 成员1;
float english; float aver; float count; };
struct book {
结构体变量的引用
• 结构体整体引用
– 在程序中可以使用结构体指针或结构体名完成结构体 变量的整体引用
struct student {
char name[20]; float math; float physics; float english; float aver; float count; };
name
name
publisher
Math

C语言 结构体

C语言  结构体

}
第六页,编辑于星期三:五点 四十五分。
9.1.2 结构的概念与定义
结构与数组比较:
使用结构来表示学生信息: •都是构造类型,是多个变量
struct student{
的集合
int num;
/* 学号 */
•数组成员类型相同,结构成
char name[10];
/* 姓名 */ 员类型不同
int computer, english, math; /* 三门课程成绩 */
第二十二页,编辑于星期三:五点 四十五分。
9.2.2 结构数组操作
结构数组的初始化
struct student students[50] = { { 101,"zhang", 76, 85, 78 }, {102, "wang", 83,
92, 86} };
students[0] 101 Zhang 76 85 78
struct student{
int num;
/* 学号 */
char name[10];
/* 姓名 */
int computer, english, math; /* 三门课程成绩 */
double average;
/* 个人平均成绩 */
};
struct student s1,s2;
第十二页,编辑于星期三:五点 四十五分。
int main(void)
{ int course, i, n, num, pos, score;
struct student students[50]; /* 定义结构数组 */ … /* 输入n个学生信息 */
在我们的实际生活中,一个较大的实体可能由多个成 员构成,而这些成员中有些又有可能是由一些更小的 成员构成。

C语言课件(精华版)

C语言课件(精华版)

循环结构
(1) 当型 (while 型循环 ) 当条件成立, 执行循环体, 否则跳出循环体。
条件
F
T
语句块
条件 语句块
L形框——用于表示循环结构
(2) 直到型循环 (do-while型循环 )
首先执行循环体, 若条件不成立继续执行循环体, 直到条件成立为止。
语句块
条件 F T
语句块 条件
【例1.2】在屏幕上显示一行文字“Welcome to C!”。
//声明部分, 定义变量类型
② 赋初值 ③ 计算 ④ 输出
a=123; b=456;
//执行部分, 赋值语句
sum=a+b;
//执行部分, 赋值语句
printf(“sum=%d\n”, sum); //执行部分,输出语句 }
程序运行结果:
sum=579
【例1.4】求两个数中的较大值
程序由两个函数组成: − main 函数和max 函数。
面向过程的程序设计
所谓面向过程的程序设计, 是指利用面向过程的语言工具 (如Pascal、Fortran和C语言等)进行程序开发的各项活动。
基本思想:
把一个需要求解的复杂问题分为 若干个模块来处理,每个模块处 理一个子问题;设计时遵循自顶 向下、逐步细化、模块化设计和 结构化编码的原则。
优点:编程简单、结构性强、可读性好;
读入x, y, z
T
x>y
F
maxx maxy
z>max
T
F
maxz
打印max单元的值
结构化程序设计
C语言是结构化程序设计语言, 有三种基本结构。 顺序结构 选择结构 循环结构 程实序践设证计明的,目任标何在复正杂确的的算前法提都下可, 以其用重这要三性种排基列本次 序结依构次来为描: 述可。读、可维护、可移植和高效。

精品-清华大学C语言课件 第13章01 结构体指针

精品-清华大学C语言课件 第13章01 结构体指针
struct Student* pStruct;/*定义结构体类型指针*/ pStruct=&student;/*指针指向结构体变量*/ printf("-----学生信息-----\n");/*消息提示*/ printf(“姓名: %s\n”,(*pStruct).cName);使用指针引用变量中的成员*/ printf("学号: %d\n",(*pStruct).iNumber); printf("性别: %s\n",(*pStruct).cSex); printf("年级: %d\n",(*pStruct).iGrade); return 0; }
【例13.2】 使用指向运算符引用结构体对象成员。 在本实例中,定义结构体变量但不为其进行初始化操作,使用指针指向结构体变量并为其成员进行赋值操作。
#include<stdio.h> #include<string.h>
struct Student/*学生结构*/ { char cName[20];/*姓名*/ int iNumber;/*学号*/ char cSex[3];/*性别*/ int iGrade;/*年级*/ }student;/*定义变量*/
pStruct ->成员名;
这种方法使用的是指向运算符,例如使用指向运算符引用一个变量的成员:
pStruct->iNumber=12061212;
假如student为结构体变量,pStruct为指向结构体变量的指针,可以看出以下三种形式的效果是等价的:
student.成员名 (*pStruct).成员名 pStruct->成员名
Display(student.fScore[0]);
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

3、直接定义结构体类型变量 struct 不出现类型名 { num; int num; name[20 20] char name[20]; score; int score; stmin; }st, stmax, stmin; 常用第一种方法
说明: 说明: 类型与变量不同,只对变量分配空间与操作。 ①类型与变量不同,只对变量分配空间与操作。 ②对成员可以单独使用,相当于普通变量。 对成员可以单独使用,相当于普通变量。 成员也可以是一个结构体变量。 ③成员也可以是一个结构体变量。 struct date struct student { int month; { int num; int day; char name[20]; int year; struct date birthday; }; }st1, st2; 成员名可以与程序中的变量名相同, ④成员名可以与程序中的变量名相同,两者代 表不同的对象。 表不同的对象。
或: struct student { int num; char name[20]; int score; } a[2]= {{1001,”LiLi”,85},{1002,”wang”,90}};
■结构体数组元素的引用 成员引用: 成员引用: a[0 num=1001 1001; a[0].num=1001; strcpy(a[0 name,”wang wang”) strcpy(a[0].name, wang ); a[0 score=85 85; a[0].score=85; 整体引用: 整体引用: a[1]=a[0 a[1]=a[0]; 与普通数组元素的引用相同 ■结构体数组的应用 输入100 个学生的学号、 姓名和考试成绩, 100个学生的学号 输入 100 个学生的学号 、 姓名和考试成绩 , 然 后按从高分到低分的顺序排列后输出。 后按从高分到低分的顺序排列后输出。
main() { int i; struct student st,stmax,stmin; stmax.score=0; stmin.score=100; for(i=1;i<=100;i++) { scanf(“%d%s%d”,&st.num,,&st.score); if(st.score>stmax.score) stmax=st; if(st.score<stmin.score) stmin=st; } printf(“\n%5d%15s%5d”,stmax.num,, stmax.score); printf(“\n%5d%15s%5d”,stmin.num,, stmin.score); }
11.3 结构体变量的引用 ■成员引用 可以对成员单独引用,形式为: 可以对成员单独引用,形式为: 结构体变量名 . 成员名 成员运算符 st.num=1001;st.score=90;strcpy(,”Li”); printf(“%d%s%d”,st.num,,st.score); scanf(“%d%s%d”,&st.num,,&st.score) ;
第十一章 结构体
11. 11.1 概述 在实际应用中, 在实际应用中,有不少应用问题如果只采用 已学的变量和数组作为数据结构显得很不方便。 已学的变量和数组作为数据结构显得很不方便。 100个学生的学号 例:输入100个学生的学号、姓名和考试成绩, 输入100个学生的学号、姓名和考试成绩, 编写程序找出高分者和低分者。 编写程序找出高分者和低分者。 用变量和数组作数据结构可编写程序如下 可编写程序如下: 用变量和数组作数据结构可编写程序如下:
■结构体数组的初始化 在定义结构体数组的同时指定初值。 在定义结构体数组的同时指定初值。 struct student { num; int num; name[20 20] char name[20]; score; int score; }; struct student a[2]= {{1001,”LiLi”,85},{1002,”wang”,90}};
266例11. 例:(p266例11.2) 对候选人得票的统计程序。设有三个候选人, 对候选人得票的统计程序。设有三个候选人, 每次输入一个得票候选人的名字, 每次输入一个得票候选人的名字 ,要求最后输出 各候选人的得票结果。 各候选人的得票结果。 string. #include “string.h” string struct person name[20 20] { char name[20]; count; int count; }leader[3]={“Li Li”, zhang”, wang wang”, }leader[3]={ Li ,0,”zhang ,0,”wang ,0}; zhang
通过指针变量引用结构体变量: 通过指针变量引用结构体变量: ①成员引用 (*p).num=1001; 或 p->num=1001; (*p).score=85; 或 p->score=85; strcpy((*p).name,”wang”); 或 strcpy(p->name,”wang”); ②整体引用 st1=*p; 等效于 st1=st;
struct student { int num; char name[20]; int score; }; main() { int i, j; struct student a[100], t; for(i=0;i<100;i++) scanf(“%d%s%d”,&a[i].num,a[i].name, &a[i].score);
main() { int i, num, maxnum, minnum; char name[20], maxname[20], minname[20]; int score, maxscore, minscore; maxscore=0; minscore=100; for(i=1; i<=100; i++) { scanf(%d%s%d”,&num,name,&score); if(score>maxscore) { maxscore=score; maxnum=num; strcpy(maxname,name); } if(score<minscore) {minscore=score; minnum=num; strcpy(minname,name);} } 输出 }
11.4 结构体变量的初始化 对结构体变量可以在定义时指定初始值 struct student { int num; char name[20]; int score; }st={1001,”wang”,95};
11.5 结构体数组 可以定义结构体数组来存放批量数据。 可以定义结构体数组来存放批量数据。 ■结构体数组的定义 struct student { int num; char name[20]; int score; };struct student a[100]; ; 定义a数组,可以存放100个学生的数据。 100个学生的数据 定义a数组,可以存放100个学生的数据。 数组的每个元素又是一个结构体变量。 a数组的每个元素又是一个结构体变量。
ห้องสมุดไป่ตู้
struct student { int num; char name[20]; int score; };
类型名 成员表
定义了一个结构体类型,它包含三个成员。 定义了一个结构体类型,它包含三个成员。
11. 11.2 定义结构体类型变量的方法 前面定义的结构体类型只是一种“ 模型” 前面定义的结构体类型只是一种 “ 模型 ” , 还必须定义结构体变量后才能存放数据。 还必须定义结构体变量后才能存放数据。 定义结构体变量有三种方法: 定义结构体变量有三种方法: 1、先定义结构体类型再定义结构体变量 定义了结构体类型后: 定义了结构体类型后: stmin; struct student st, stmax, stmin; 类型符 变量名
可以引用成员的地址
如果成员本身又属一个结构体类型, 如果成员本身又属一个结构体类型,则要用 若干个成员运算符, 若干个成员运算符,一级一级地找到最低一级的 成员,只能对最低级的成员进行存取与运算。 成员,只能对最低级的成员进行存取与运算。 st1.birthday.year=1960; st1.birthday.month=5; st1.birthday.day=15;
main() { int i, j ; char leader_name[20]; for(i=1;i<=100;i++) { scanf(“%s”,leader_name); for(j=0;j<3;j++) if(strcmp(leader_name,leader[j].name)==0) leader[j].count++; }
■指向结构体数组的指针 struct student a[100]; ; struct student *p; p=a; 通过指针变量引用结构体数组元素: 通过指针变量引用结构体数组元素: ①成员引用 (*p).num=1001; 或 p->num=1001; (*p).score=85; 或 p->score=85; strcpy((*p).name,”wang”); 或strcpy(p->name,”wang”);
结构体应用举例: 结构体应用举例: 编写程序输入100个学生的学号、 100个学生的学号 编写程序输入 100 个学生的学号 、 姓名和考试 成绩,找出高分者和低分者。 成绩,找出高分者和低分者。
struct student { int num; char name[20]; int score; };
定义了三个结构体变量,每个变量包含三个成员, 定义了三个结构体变量,每个变量包含三个成员, 每个变量可存放一个学生的数据。 每个变量可存放一个学生的数据。
相关文档
最新文档