C语言程序设计 结构体和共用体(12.1.3)--12.1节-12.3节

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

【例 12.2】下面程序用于演示结构体所占内存字节数的计算方法。
1 #include <stdio.h>
2 typedef struct sample
3{
4
char m1;
5
int m2;
6
char m3;
7 }SAMPLE;
/* 定义结构体类型 SAMPLE */
8 int main()
9{
10
SAMPLE s = {'a', 2, 'b'}; /* 定义结构体变量 s 并对其进行初始化 */
23 {98,72,89,66}},
24
{100310124," 陈 莉 莉 ",'F',{1992,3,22},
25 {87,95,78,90}}
26
};
27
for (i=0; i<4; i++)
28
{
29
sum[i] = 0;
30
for (j=0; j<4; j++)
31
{
32
sum[i] = sum[i] + stu[i].score[j];
100310122 李小明 M 1992/08/20 88 92 78 78 84.0
wk.baidu.com
100310123 王丽红 F 1991/09/19 98 72 89 66 81.3
100310124 陈莉莉 F 1992/03/22 87 95 78 90 87.5
【例题解析】本例用于演示结构体数组的初始化方法。
11
printf("bytes = %d\n", sizeof(s));/* 打印结构体变量 s 所占内存字节数 */
12
return 0;
13 }
【例题解析】结构体类型所占内存的字节数,并非是所有成员所占内存字节数的总和,
它不仅与所定义的结构体类型有关,还与计算机系统本身有关。计算结构体实际所占用的内 存字节数时,一定要使用 sizeof 运算符。
int i, j, sum[30];
19
STUDENT stu[30] = {{100310121,"王刚",'M',{1991,5,19},{72,83,90,82}},
20
{100310122," 李 小 明 ",'M',{1992,8,20},
21 {88,92,78,78}},
22
{100310123," 王 丽 红 ",'F',{1991,9,19},
/* 学号 */
11
char studentName[10];
/* 姓名 */
12
char studentSex;
/* 性别 */
13
DATE birthday;
/* 出生日期 */
14
int score[4];
/* 4 门课程的成绩 */
15 }STUDENT;
16 int main()
17 {
18
STUDENT stu1 = {100310121, "王刚", 'M', {1991,5,19}, {72,83,90,82}};
19
STUDENT stu2;
20
stu2 = stu1;
/* 同类型的结构体变量之间的赋值操作 */
21
printf("stu2:%10ld%8s%3c%6d/%02d/%02d%4d%4d%4d%4d\n",
【例 12.3】利用结构体数组计算每个学生的 4 门课程的平均分。
1 #include <stdio.h>
2 typedef struct date
3{
4
int year;
5
int month;
6
int day;
7 }DATE;
8 typedef struct student
9{
10
long studentID;
25
return 0;
26 }
程序的运行结果为:
stu2: 100310121 王刚 M 1991/05/19 72 83 90 82
【例题解析】本例用于演示结构体变量的赋值和引用方法。C 语言允许对具有相同结构体
类型的变量进行整体赋值。在对两个同类型的结构体变量赋值时,实际上是按结构体的成员
顺序逐一对相应成员进行赋值的。
33
}
34
printf("%10ld%8s%3c%6d/%02d/%02d%4d%4d%4d%4d%6.1f\n",
35
stu[i].studentID,
36
stu[i].studentName,
37
stu[i].studentSex,
38
stu[i].birthday.year,
39
stu[i].birthday.month,
22
stu2.studentID, stu2.studentName, stu2.studentSex,
23
stu2.birthday.year, stu2.birthday.month, stu2.birthday.day,
24
stu2.score[0], stu2.score[1], stu2.score[2], stu2.score[3]);
【例 12.1】下面程序用于演示结构体变量的赋值和引用方法。
1 #include <stdio.h>
2 typedef struct date
3{
4
int year;
5
int month;
6
int day;
7 }DATE;
8 typedef struct student
9{
10
long studentID;
/* 学号 */
11
char studentName[10];
/* 姓名 */
12
char studentSex;
/* 性别 */
13
DATE birthday;
/* 出生日期 */
14
int score[4];
/* 4 门课程的成绩 */
15 }STUDENT;
16 int main()
17 {
18
40
stu[i].birthday.day,
41
stu[i].score[0],
42
stu[i].score[1],
43
stu[i].score[2],
44
stu[i].score[3],
45
sum[i]/4.0);
}
return 0;
}
程序的运行结果为:
100310121 王刚 M 1991/05/19 72 83 90 82 81.8
相关文档
最新文档