lesson 15 数据组织结构二 结构体
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
31 学习目标:
➢学会使用结构体表达数据
结构体的概念
32
int x=1;
int 表示一个类型:整数 x是这种类型的变量 在x中存放了一个整数1
结构体的概念
32
a
c b
在C语言中能不能用一个变量来表示点 abc
结构体的概念
32 rect1
rect2
rect3
在C语言中能不能用一个变量来表示矩 形:rect1 rect2 rect3
顶点lefttop
顶点rightbottom
例如:一个矩形可以使用左上角的顶点和右下 角的顶点表示,即只需要包含两个成员。 而这个成员又是一个点(point)类型
结构体
3
struct point_type{
int x; /*x坐标*/
注意:
int y; };
/*y坐标必*须/ 先定义point_type结构 体类型
s[i].name,s[i].no,s[i].class,&(s[i].age),&(s[i].scor
e));
for(i=0;i<5;i++)
printf(“%s %s %s %d %d\n”,
s[i].name,s[i].no,s[i].class,s[i].age,s[i].score);
return 0;
struct stu{ char name[10]; char no[20]; char class[10]; int age; int score;
};
int main(){ struct stu s[10];
lesson15_02.c
int i;
for (i=0;i<5;i++)
scanf(“%s%s%s%d%d”,
结构体使用
35
程序中定义了结构体类型后,只是声明了一 种数据类型,定义了一个模板,在这个模 板中,规定了其数据的组成(包含结构)
一定要使用结构体类型定义该类型的变量, 才可以表示、存储该类型的数据
结构体使用
35
定义结构体变量的方法: struct 结构体名 变量名
struct stu stu1; struct date d1,d2;
结构体的概念
32
我叫 angle 今 年5岁 电话是
12345
我叫 刘德华 今年45岁 电话 是 54321
在C语言中能不能用一个变量来表示 angle 和刘德华
结构体的概念
32
分析以上信息包含的内容: 1、点:横坐标、纵坐标 2、矩形:左上角的坐标 长、宽 3、人物:姓名、年龄、电话 总之:他们是一个组合体
结构体使用
35
也可以直接在定义结构体类型时定义
struct stu{ 结构体类型名称 char name[10]; char no[20]; char class[10]; int age; int score;
} stu1,stu2;
结构体变量名称
结构体使用
35
在C语言中,允许用户为已经存在的数据类 型起一个别名,其说明格式为: typedef 原数据类型 新数据类型名;
}; 定义了一个类型point_type,他包含两部分:
整型的x 和整型的y
结构体
3Fra Baidu bibliotek
例如:定义一个结构体类型stu,其组成应 该包含如下部分:
姓名(字符串) 学号(字符串) 班级(字符串) 年龄(整数) 成绩(小数)
结构体
3
注意: 1、每个组成部分都有名称
例如:
2、每个组成部分都有类型 3、组成部分排名不分先后
}p1,p2; p1.x =2; /*p1的x坐标赋值为2*/ p2.y=5;/*p2的y坐标赋值为5*/
结构体使用
p1
35
x
y
struct point_type{
p2
int x;
x
y
int y; }p1,p2;
结构体类型只是一个模板,只是 规定了其内容的结构,该类型的 变量具有和他一样的结构 p1和p2的结构一样,都有x,y 其中x和y都是整型变量
}
课堂练习
37
使用结构体的方法计算两个坐标点的距离 坐标点使用结构体表示
结构体数组
38
结构体数组 与一般变量可以构成数组一样 int a[10] 结构体类型也有数组
定义方法:类型 数组名 [长度] struct date d[10];
结构体数组
38
结构体数组的初始化
struct point_type{ int x; int y;
gets(s1.no); 输出s1和s2的平均年龄
printf(“%f”,(s1.age+s2.age)/2.0)
name
name
no
class
age score
no
class
age score
结构体使用
35
结构体型变量的基本操作 struct date d; 1. 结构体型变量的输入:针对成员进行
结构体的概念
32
如果需要在C语言中表达这类信息: 需要告诉C语言他们是一个什么样的结 构,即告诉C语言,他们包含哪些内容? 例如:如果需要在计算机中表达“点”, 则需要告诉计算机点是应该包含两部分: 横坐标、纵坐标
结构体的概念
32
结构体类型的概念 结构体是一种可以将若干个不同数据类型的变量 组合在一起的复合型数据类型。 人们常常借助于它将表达同一对象的不同属性封 装在一起,使之达到逻辑概念与程序变量一一对 应的目的。 从而提高程序的清晰度,降低程序的复杂度,改 善程序的可维护性。
• 针对整体:将一个变量的值赋给另一个类 型完全相同的变量,
d2=d1;
结构体使用
35
结构体型变量的基本操作 4.结构体型变量的初始化
struct point_type{ int x; int y;
}; struct point_type p1={2,5};
结构体应用
36
例1:编写程序,实现复数的加法 分析:定义一个新的类型,可以保存复数信息 这个类型具有什么样的结构?
p[0]
2
5
p[1]
5
6
p[2]
7
9
};
struct point_type p[3]={{2,5},{5,6},{7,9}};
结构体数组
38
例2:输入如下的5个学生的信息并输出
张三 2011230111 T1123-1 19 98 李四 2011230112 T1123-1 19 67 王五 2011230113 T1123-1 20 88 赵六 2011230210 T1123-2 19 78 刘七 2011230219 T1123-2 21 80
}
39 课后练习
➢定义一个书籍的结构体类型,具体信息 包括:书名、作者、出版日期、价格。 从键盘输入5本书的信息后输出。
POINT p1;
结构体使用
35
结构体变量的使用
使用结构体变量时,一般不能作为一个整体 使用,除了允许具有相同类型的结构变量相 互赋值以外,一般对结构变量的使用,包括 赋值、输入、输出、运算等都是通过结构变 量的成员来实现的。
结构体使用
35
结构体变量的使用
使用方法: 变量名.成员名
struct point_type{ int x; int y;
2 + 3i 4 - 8i
实部 虚部
结构体应用
36
lesson15_01.c
stirnutcrtecaol;mplex在{ 定义类型时定义变量 int imge;
} c1,c2,c3;
int main(){ printf(“请输入第一个复数”); spcrianntff((““请%d输%入d分第”别,&二运c个1算.r复ea数l,&”c)1; .imge); scanf(“%d%d”,&c2.real,&c2.imge); c3.real=c1.real+c2.real; c3.imge=c1.imge+c2.imge; pirntf(“复数和:%d +%di”,c3.real,c3.imge); return 0;
结构体使用
35
注意:“类型名”必须是系统提供的数据类 型或用户已定义的数据类型。定义替代类型名 的作用是:给已有的类型起个别名标识符
例如: typedef int INTEGER; int 和INTEGER 完全等价
INTEGER a;
结构体使用
35
typedef struct point_type{ int x; int y; }POINT; ❖ 在这里,POINT与struct point_type完全等价
scanf(“%d%d%d”, &d.year, &d.month, &d.day); 2. 结构体型变量的输出:针对成员进行
printf(“%d %d %d”, d.year, d.month, d.day);
结构体使用
35
结构体型变量的基本操作 3.结构体型变量的赋值
• 针对成员
struct date d1,d2; d1.year = 2005; d1.month = 5; d1.day = 20;
struct stu{
4、组成部分的数量不受限
char name[10];制,根据需要定义
char no[20];
char class[10];
int age;
float score;
};
结构体
3
一个结构体可以包含另一个结构体作为其成员 结构体类型:嵌套的结构体 例:如何定义结构体类型表示平面上的矩形
结构体
3
注意:只是告诉计算 机,程序中定义了一
定义结构体类型 一般方法
种新的类型(模板), 这种类型的变量具有 这样的结构(组成)
struct 结构体名{
类型 成员1的名字;
类型 成员2的名字;
….
….
}; 注意分号
结构体
3
例如:
struct point_type{ int x; /*x坐标*/ int y; /*y坐标*/
让p1的x等于3:p1.x=3; 从键盘给p2的y输入scanf(“%d”,&p2.y);
struct stu{ char name[10]; char no[20]; char class[10]; int age; int score;
}; struct stu s1,s2;
把””放到s1的name中: strcpy(s1.name,””); 从键盘输入s1的no
用point_type类型声明结构体类型:
struct rectangle_type{
struct point_type lefttop; /*左上角坐标*/
struct point_type rightbottom; /*右下角坐标*/
};
课堂练习
34
定义一个日期结构体类型,其组成结构为: 年、月、日
➢学会使用结构体表达数据
结构体的概念
32
int x=1;
int 表示一个类型:整数 x是这种类型的变量 在x中存放了一个整数1
结构体的概念
32
a
c b
在C语言中能不能用一个变量来表示点 abc
结构体的概念
32 rect1
rect2
rect3
在C语言中能不能用一个变量来表示矩 形:rect1 rect2 rect3
顶点lefttop
顶点rightbottom
例如:一个矩形可以使用左上角的顶点和右下 角的顶点表示,即只需要包含两个成员。 而这个成员又是一个点(point)类型
结构体
3
struct point_type{
int x; /*x坐标*/
注意:
int y; };
/*y坐标必*须/ 先定义point_type结构 体类型
s[i].name,s[i].no,s[i].class,&(s[i].age),&(s[i].scor
e));
for(i=0;i<5;i++)
printf(“%s %s %s %d %d\n”,
s[i].name,s[i].no,s[i].class,s[i].age,s[i].score);
return 0;
struct stu{ char name[10]; char no[20]; char class[10]; int age; int score;
};
int main(){ struct stu s[10];
lesson15_02.c
int i;
for (i=0;i<5;i++)
scanf(“%s%s%s%d%d”,
结构体使用
35
程序中定义了结构体类型后,只是声明了一 种数据类型,定义了一个模板,在这个模 板中,规定了其数据的组成(包含结构)
一定要使用结构体类型定义该类型的变量, 才可以表示、存储该类型的数据
结构体使用
35
定义结构体变量的方法: struct 结构体名 变量名
struct stu stu1; struct date d1,d2;
结构体的概念
32
我叫 angle 今 年5岁 电话是
12345
我叫 刘德华 今年45岁 电话 是 54321
在C语言中能不能用一个变量来表示 angle 和刘德华
结构体的概念
32
分析以上信息包含的内容: 1、点:横坐标、纵坐标 2、矩形:左上角的坐标 长、宽 3、人物:姓名、年龄、电话 总之:他们是一个组合体
结构体使用
35
也可以直接在定义结构体类型时定义
struct stu{ 结构体类型名称 char name[10]; char no[20]; char class[10]; int age; int score;
} stu1,stu2;
结构体变量名称
结构体使用
35
在C语言中,允许用户为已经存在的数据类 型起一个别名,其说明格式为: typedef 原数据类型 新数据类型名;
}; 定义了一个类型point_type,他包含两部分:
整型的x 和整型的y
结构体
3Fra Baidu bibliotek
例如:定义一个结构体类型stu,其组成应 该包含如下部分:
姓名(字符串) 学号(字符串) 班级(字符串) 年龄(整数) 成绩(小数)
结构体
3
注意: 1、每个组成部分都有名称
例如:
2、每个组成部分都有类型 3、组成部分排名不分先后
}p1,p2; p1.x =2; /*p1的x坐标赋值为2*/ p2.y=5;/*p2的y坐标赋值为5*/
结构体使用
p1
35
x
y
struct point_type{
p2
int x;
x
y
int y; }p1,p2;
结构体类型只是一个模板,只是 规定了其内容的结构,该类型的 变量具有和他一样的结构 p1和p2的结构一样,都有x,y 其中x和y都是整型变量
}
课堂练习
37
使用结构体的方法计算两个坐标点的距离 坐标点使用结构体表示
结构体数组
38
结构体数组 与一般变量可以构成数组一样 int a[10] 结构体类型也有数组
定义方法:类型 数组名 [长度] struct date d[10];
结构体数组
38
结构体数组的初始化
struct point_type{ int x; int y;
gets(s1.no); 输出s1和s2的平均年龄
printf(“%f”,(s1.age+s2.age)/2.0)
name
name
no
class
age score
no
class
age score
结构体使用
35
结构体型变量的基本操作 struct date d; 1. 结构体型变量的输入:针对成员进行
结构体的概念
32
如果需要在C语言中表达这类信息: 需要告诉C语言他们是一个什么样的结 构,即告诉C语言,他们包含哪些内容? 例如:如果需要在计算机中表达“点”, 则需要告诉计算机点是应该包含两部分: 横坐标、纵坐标
结构体的概念
32
结构体类型的概念 结构体是一种可以将若干个不同数据类型的变量 组合在一起的复合型数据类型。 人们常常借助于它将表达同一对象的不同属性封 装在一起,使之达到逻辑概念与程序变量一一对 应的目的。 从而提高程序的清晰度,降低程序的复杂度,改 善程序的可维护性。
• 针对整体:将一个变量的值赋给另一个类 型完全相同的变量,
d2=d1;
结构体使用
35
结构体型变量的基本操作 4.结构体型变量的初始化
struct point_type{ int x; int y;
}; struct point_type p1={2,5};
结构体应用
36
例1:编写程序,实现复数的加法 分析:定义一个新的类型,可以保存复数信息 这个类型具有什么样的结构?
p[0]
2
5
p[1]
5
6
p[2]
7
9
};
struct point_type p[3]={{2,5},{5,6},{7,9}};
结构体数组
38
例2:输入如下的5个学生的信息并输出
张三 2011230111 T1123-1 19 98 李四 2011230112 T1123-1 19 67 王五 2011230113 T1123-1 20 88 赵六 2011230210 T1123-2 19 78 刘七 2011230219 T1123-2 21 80
}
39 课后练习
➢定义一个书籍的结构体类型,具体信息 包括:书名、作者、出版日期、价格。 从键盘输入5本书的信息后输出。
POINT p1;
结构体使用
35
结构体变量的使用
使用结构体变量时,一般不能作为一个整体 使用,除了允许具有相同类型的结构变量相 互赋值以外,一般对结构变量的使用,包括 赋值、输入、输出、运算等都是通过结构变 量的成员来实现的。
结构体使用
35
结构体变量的使用
使用方法: 变量名.成员名
struct point_type{ int x; int y;
2 + 3i 4 - 8i
实部 虚部
结构体应用
36
lesson15_01.c
stirnutcrtecaol;mplex在{ 定义类型时定义变量 int imge;
} c1,c2,c3;
int main(){ printf(“请输入第一个复数”); spcrianntff((““请%d输%入d分第”别,&二运c个1算.r复ea数l,&”c)1; .imge); scanf(“%d%d”,&c2.real,&c2.imge); c3.real=c1.real+c2.real; c3.imge=c1.imge+c2.imge; pirntf(“复数和:%d +%di”,c3.real,c3.imge); return 0;
结构体使用
35
注意:“类型名”必须是系统提供的数据类 型或用户已定义的数据类型。定义替代类型名 的作用是:给已有的类型起个别名标识符
例如: typedef int INTEGER; int 和INTEGER 完全等价
INTEGER a;
结构体使用
35
typedef struct point_type{ int x; int y; }POINT; ❖ 在这里,POINT与struct point_type完全等价
scanf(“%d%d%d”, &d.year, &d.month, &d.day); 2. 结构体型变量的输出:针对成员进行
printf(“%d %d %d”, d.year, d.month, d.day);
结构体使用
35
结构体型变量的基本操作 3.结构体型变量的赋值
• 针对成员
struct date d1,d2; d1.year = 2005; d1.month = 5; d1.day = 20;
struct stu{
4、组成部分的数量不受限
char name[10];制,根据需要定义
char no[20];
char class[10];
int age;
float score;
};
结构体
3
一个结构体可以包含另一个结构体作为其成员 结构体类型:嵌套的结构体 例:如何定义结构体类型表示平面上的矩形
结构体
3
注意:只是告诉计算 机,程序中定义了一
定义结构体类型 一般方法
种新的类型(模板), 这种类型的变量具有 这样的结构(组成)
struct 结构体名{
类型 成员1的名字;
类型 成员2的名字;
….
….
}; 注意分号
结构体
3
例如:
struct point_type{ int x; /*x坐标*/ int y; /*y坐标*/
让p1的x等于3:p1.x=3; 从键盘给p2的y输入scanf(“%d”,&p2.y);
struct stu{ char name[10]; char no[20]; char class[10]; int age; int score;
}; struct stu s1,s2;
把””放到s1的name中: strcpy(s1.name,””); 从键盘输入s1的no
用point_type类型声明结构体类型:
struct rectangle_type{
struct point_type lefttop; /*左上角坐标*/
struct point_type rightbottom; /*右下角坐标*/
};
课堂练习
34
定义一个日期结构体类型,其组成结构为: 年、月、日