C程序设计第9章 用户自己建立数据类型

更新时间:2023-04-24 13:13:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

第四版

第9章 用户自己建立数据类型9.1 定义和使用结构体变量 9.2 使用结构体数组 9.3 结构体指针 9.4 用指针处理链表 9.5 共用体类型 9.6 使用枚举类型 9.7 用typedef声明新类型名 声明新类型名

第四版

9.1 定义和使用结构体变量9.1.1 自己建立结构体类型 9.1.2 定义结构体类型变量 9.1.3 结构体变量的初始化和引用

第四版

9.1.1 自己建立结构体类型用户自己建立由不同类型数据组成的组合型的数据结 构,它称为结构体。 它称为结构体。 结构体 例如,一个学生的学号、姓名、性别、年龄、成绩、 例如,一个学生的学号、姓名、性别、年龄、成绩、 家庭地址等项,是属于同一个学生的,因此组成一个 家庭地址等项,是属于同一个学生的,因此组成一个 组合数据, 的变量, 组合数据,如student_1的变量,反映它们之间的内 的变量 在联系。 在联系。

第四版

9.1.1 自己建立结构体类型struct Student { int num; char name[20]; char sex; int age; float score; char addr[30]; }; 由程序设计者指定了一个结 构体类型struct Student。 构体类型 。 它包括 num,name,sex,age,score,ad dr等不同类型的成员。 等不同类型的成员。 等不同类型的成员

第四版

9.1.1 自己建立结构体类型声明一个结构体类型的一般形式为: 声明一个结构体类型的一般形式为: 一个结构体类型的一般形式为 struct 结构体名 { 成员表列 }; 成员名; 类型名 成员名

第四版

9.1.1 自己建立结构体类型说明: 说明: (1) 可以根据需要设计出多种结构体类型,例如 可以根据需要设计出多种结构体类型, 根据需要设计出多种结构体类型 struct Teacher struct Worker struct Date等结构体类型 等结构体类型 各自包含不同的成员

第四版

9.1.1 自己建立结构体类型说明: 说明: (2)结构体成员可以属于另一个结构体类型。 结构体成员可以属于另一个结构体类型。 结构体成员可以属于另一个结构体类型 struct Date { int month; int day; int year; };

struct Stu { int num;char name[20]; char sex;int age; struct Date birthday; char addr[30]; }; num name sex age birthday month day year addr

第四版

9.1.2 定义结构体类型变量1. 先声明结构体类型,再定义该类型变量 先声明结构体类型, struct Student { int num; char name[20]; char sex; int age; float score; char addr[30]; }; struct Student student1,student2; 结构体类型名 结构体变量名

第四版

9.1.2 定义结构体类型变量2.在声明类型的同时定义变量 在声明类型的同时定义变量 struct Student { int num; char name[20]; char sex; int age; float score; char addr[30]; } student1,student2;

第四版

9.1.2 定义结构体类型变量3. 不指定类型名而直接定义结构体类型变量 struct { int num; char name[20]; char sex; int age; float score; char addr[30]; } student1,student2;

第四版

9.1.2 定义结构体类型变量(

1) 结构体类型与结构体变量是不同的概念,不要混同。只能对变 结构体类型与结构体变量是不同的概念,不要混同。 量赋值、存取或运算,而不能对一个类型赋值、存取或运算。 量赋值、存取或运算,而不能对一个类型赋值、存取或运算。在编译 时,对类型是不分配空间的,只对变量分配空间。 对类型是不分配空间的,只对变量分配空间。 (2) 结构体类型中的成员名可以与程序中的变量名相同,但二者不 结构体类型中的成员名可以与程序中的变量名相同, 代表同一对象。 代表同一对象。 (3) 结构体变量中的成员可以单独使用,它的作用与地位相当于普 结构体变量中的成员可以单独使用, 通变量。 通变量。

第四版

9.1.3 结构体变量的初始化和引用把一个学生的信息(包括学号 姓名、性别、住址)放在一个结构 包括学号、 例9.1 把一个学生的信息 包括学号、姓名、性别、住址 放在一个结构 体变量中,然后输出这个学生的信息。 体变量中,然后输出这个学生的信息。 #include <stdio.h> int main() { struct student { long int num; char name[20]; char sex; char addr[20]; }a={10101,"Li Lin",'M',"123 Beijing Road"}; printf("NO.:%ld\nname:%s\nsex:%c\naddress:%s\n", a.num,,a.sex,a.addr); return 0; }

第四版

#include <stdio.h> int main() { struct Student { long int num; char sex; char name[20]; char addr[20];

}a={10101,“Li Lin”,‘M’, “123 Beijing Road”}; a.num=10010; 对

printf(“%s\n”,a); 不对 …… }

第四版

#include <stdio.h> int main() { struct Student { long int num; char sex; struct Student b; b=a; …… } 对 对 b.num++; char name[20]; char addr[20];

}a={10101,“Li Lin”,‘M’, “123 Beijing Road”};

第四版

#include <stdio.h> int main() { struct Student { long int num; char sex; char name[20]; char addr[20]; 对

}a={10101,“Li Lin”,‘M’, “123 Beijing Road”}; scanf(″%ld″,&a.num); printf(″%o″,&a); …… } 对

scanf(“%ld,%s,%c,%s\n”,&a); 错

第四版

#include <stdio.h> int main() { struct Date { int month; int day; int year; }; struct Stu { int num;char name[20]; char sex;int age; struct Date birthday; char addr[30]; }a,b; a.birthday.month=12; 对 a.age=10; b.age=9; 对 sum=a.age+b.age; 对 …… }

第四版

输入两个学生的学号、姓名和成绩,输出成绩较高学生的学号、姓名和成绩。 例9.2 输入两个学生的学号、姓名和成绩,输出成绩较高学生的学号、姓名和成绩。 #include <stdio.h> int main() { struct stu { int num; char name[20]; float score; }stu1,stu2; scanf("%d%s%f",&stu1.num,,&stu1.score); scanf("%d%s%f",&stu2.num,,&stu2.score); printf("The higher score is:\n"); if (stu1.score>stu2.score) printf("%d %s %6.2f\n",stu1.num,, stu1.score); else if (stu1.score<stu2.score) printf("%d %s %6.2f\n",stu2.num,, stu2.score); else { printf("%d %s %6.2f\n",stu1.num,stu1.nam

e, stu1.score); printf("%d %s %6.2f\n",stu2.num,, stu2.score); } return 0; }

第四版

9.2 使用结构体数组9.2.1 定义结构体数组 9.2.2 结构体数组的应用举例

第四版

9.2.1定义结构体数组 9.2.1定义结构体数组例9.3 有3个候选人,每个选民只能投票选一人, 个候选人,每个选民只能投票选一人, 个候选人 要求编一个统计选票的程序, 要求编一个统计选票的程序,先后输入被选人的名字 ,最后输出各人得票结果。 最后输出各人得票结果。

本文来源:https://www.bwwdw.com/article/2bxq.html

Top