C语言与程序设计-第8章_结构体与共用体 (1)

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

}stu[3]={{10010,“Liu Yin”,’M’,20,93.0,“Nanji ng”},{ },{ }};
根据结构体常量的个数确定元素 的个数:
stu[ ]= { {…},{…},{…} };
…};
struct student stu[ ]={{…},{… },{… }}; 25
吉林大学公共计算机教学与研究中心
}a={43090215,“Li Lin”,’M’,“10 Panshi Road”} ; printf(“No.:%ld\nname:%s\nsex:%c\naddress: %s\n”,a.num,,a.sex,a.addr); } 18
吉林大学公共计算机教学与研究中心
第8章 结构体与共用体
, &student1.score); scanf(“%d%s%f”,&student2.num,
, &student2.score);
不能加& 20
吉林大学公共计算机教学与研究中心
printf(第"8T章he结构h体ig与h共e用r体score is:\nC"程序)设; 计
{10106,"Li", 86 },
{10108,“Ling”, 73.5}, 常{1变0量110,“若Fu人n数”变, 为10300 } };
struct student temp;
const int n = 5 ; int i,j,k;
30
29
吉林大学公共计算机教学与研究中心
第8章 结构体与共用体
C程序设计
例8.1 输入两个学生的学号、姓名和成绩,输 出成绩较高学生的学号、姓名和成绩
解题思路:
(1)定义两个结构相同的结构体变量student1和 student2;
(2)分别输入两个学生的学号、姓名和成绩;
(3)比较两个学生的成绩,如果学生1的成绩高
于学生2,就输出学生1的全部信息,如果学
生2的成绩高于学生1,就输出学生2的全部
吉林大学公共计算机教学与研究中心
age score addr
20 93.0 Jilin
18 87.5 Nanjing 19 90.5 Beijing
24
第8章 结构体与共用体
C程序设计
2. 结构体数组的初始化
struct student { int num; char name[20]; char sex ; int age ; float score ; char addr[20];
}
return 0;
}
21
吉林大学公共计算机教学与研究中心
第8章 结构体与共用体
C程序设计
8.1.5 结构体数组
1. 定义结构体数组
由结构体类型的数据构成数组的元素,称为 结构体数组。 即每个元素都是结构体类型的数据, 每个元素中又分别包含各个成员项。
22
吉林大学公共计算机教学与研究中心
第8章 结构体与共用体
结构体变量名 . 成员名
对变量的成员赋值:
“.”是成员(分量)运算符, 优先级为1,因此可以把 student.num看成一个整体。
student1 . num=10001;
14
吉林大学公共计算机教学与研究中心
第8章 结构体与共用体
C程序设计
2)只能对最低级的成员进行操作, 若成员又是一个结构体类型,则要用若干个成 员运算符,逐级找到最低级的成员;
第8章 结构体与共用体
C程序设计
#include <stdio.h>
struct student
{ int num; char name[20]; float score; };
int main()
{ struct student stu[5]={{10101,"Zhang",78 },
{10103,"Wang",98.5},
但二者不代表同一对象。
10
吉林大学公共计算机教学与研究中心
第8章 结构体与共用体
C程序设计
例如: struct date { int month; int day; int year; };
吉林大学公共计算机教学与研究中心
struct student { int num;
char name[20]; char sex; int age; struct date birthday; char addr[30] }student1, student2 ;
第8章 结构体与共用体
C程序设计
student1 10001 Li Jin M 18 87.5 Jilin
student2 10002 Wu Dan F 19 90.5 Beijing
定义了结构体变量后,系统会按照在定义结构体类型 时的各成员类型所占字节数为它们分配单元。
7
吉林大学公共计算机教学与研究中心
23
吉林大学公共计算机教学与研究中心
第8章 结构体与共用体
struct student { 成员列表 } stu[3] ;
C程序设计
struct { 成员列表 } stu[3] ;
mun name sex
stu[2] 10002
Liu Yin
M
stu[1] 10001 Li Jin M
stu[0] 10010 Wu Dan F
for( j=0;j<3;j++)
if(strcmp(leader_name,leader[ j ].name==0)
leader[ j ].count++;
} printf(“\n”);
for(i=0;i<3;i++)
printf(“%5s:%d\n”,leader[i].name,leader_name[i].cou nt);
对结构体类型不分配单元; 对结构体类型变量名才分配单元。 有3种方法定义结构体类型变量:
1) 先声明结构体类型,再定义变量名:
如前已经定义了一个结构体类型:struct student
则可以用它来定义变量:
struct student student1, student2 ;
6
吉林大学公共计算机教学与研究中心
信息。如果二者相等,输出2个学生的全部信

19
吉林大学公共计算机教学与研究中心
第8章 结构体与共用体
C程序设计
#include <stdio.h> int main() { struct student
{ int num; char name[20]; float score;
}student1,student2; scanf("%d%s%f",&student1.num,
16
吉林大学公共计算机教学与研究中心
第8章 结构体与共用体
C程序设计
4)可以引用结构体成员的地址,也可以引用结构体 变量的地址;但不能整体输入/出结构体变量;
例如: scanf(“%d”,&student1 . num); printf(“%o”,&student1); 不能使用:
scanf(“%d,%s,%c,%d,%f,%s”,&student1
27
}吉林大学公共计算机教学与研究中心
第8章 结构体与共用体
C程序设计
例8.2 有n个学生的信息(包括学号、姓名、 成绩),要求按照成绩的高低顺序输 出各学生的信息。
解题思路:用结构体数组存放n个学生 信息,采用选择法对各元素进行排序 (进行比较的是各元素中的成绩)。
28
吉林大学公共计算机教学与研究中心
if (student1.score>student2.score)
printf("%d %s %6.2f\n",student1.num,
, student1.score);
else if (student1.score<student2.score)
printf("%d %s %6.2f\n",student2.num,
, student2.score);
else
{printf("%d %s %6.2f\n",student1.num,
, student1.score);
printf("%d %s %6.2f\n",student2.num,
, student2.score);
第8章 结构体与共用体
C程序设计
吉林大学公共计算机教学与研究中心
第8章 结构体与共用体
C程序设计
吉林大学公共计算机教学与研究中心
第8章 结构体与共用体
C程序设计
吉林大学公共计算机教学与研究中心
第8章 结构体与共用体
C程序设计
吉林大学公共计算机教学与研究中心
第8章 结构体与共用体
C程序设计
8.1.2 结构体变量的定义
C程序设计
#include <stdio.h>
struct student
例如:不能
printf(“%d,%s,%c,%d,%f,%s\n”,student 1);
可以:
printf(“%d\n”,student1 . num);
printf(“%s\n”,student1 . name);
13
吉林大学公共计算机教学与研究中心
第8章 结构体与共用体
C程序设计
由此可见,引用结构体变量中成员的方式为 :
}leader[3]={“Li”,0,“Zhang”,0,“Wan”,0
}; 吉林大学公共计算机教学与研究中心
26
第8章 结构体与共用体
C程序设计
void main()
投票箱数组
{int i,j; char leader_name[20];
投票人数
for(i=1;i<=10;i++)
{ scanf(“%s”,leader_name);
第8章 结构体与共用体
C程序设计
2) 在声明类型的同时定义变量名
例如:
struct student { int num;
char name[20]; char sex; int age; float score;
这种形式的定义的一般 形式表
char addr[30]
11
第8章 结构体与共用体
C程序设计
birthday
10002 Wu Dan F 19
addr
month day year
12
吉林大学公共计算机教学与研究中心
第8章 结构体与共用体
C程序设计
8.1.3 结构体变量的引用
应遵守以下规则: 1) 不能把结构体变量作为一个整体输入输出,
只能对各个成员分别进行输入输出;
}变量名列表;
}student1, student2 ;
8
吉林大学公共计算机教学与研究中心
第8章 结构体与共用体
C程序设计
3) 直接定义结构体类型变量
一般形式为:
struct
{
成员列表
即没有结构体名。
}变量名表 ;
9
吉林大学公共计算机教学与研究中心
第8章 结构体与共用体
C程序设计
说明: 1) 类型与变量是两个不同的概念; 2) 可以单独使用结构体中的成员; 3) 成员也可以是另一个结构体变量(嵌套); 4) 成员名可以与程序中的变量名相同,
); 吉林大学公共计算机教学与研究中心
17
第8章 结构体与共用体
C程序设计
8.1.4 结构体变量的赋值
例: 对结构体变量初始化
void main() { struct student
{ long int num ; char name[20] ; char sex ; char addr[20] ;
例如: student1 . num=10001; student1 . birthday . month=11;
15
吉林大学公共计算机教学与研究中心
第8章 结构体与共用体
C程序设计
3)对结构体变量的成员可以像对普通变量一样 进行各种操作;
例如: student2 . score = student1 . score; sum=student1 . score + student2 . score; student1 . age++; ++student1 . age;
第8章 结构体与共用体
结构体数组应用举例
C程序设计
例: 统计得票。有3人,每次输入1人名字,输出 每个人得票结果。
定义一个全局结构体数组leader (黑板数组),有 3个元素,并初始化 。
#include<string.h>
struct person
{ char name[20];
int count ;
C程序设计
struct student { int num;
char name[20];
与定义结构体变量的 方法相似。
char sex ; int age ; float score ; char addr[20];
定义数组stu,其元 素为struct student 类型,有3个元素。
};
struct student stu[3] ;
相关文档
最新文档