问题的提出 令例8-1下表为学生的信息表,要求从键盘输入 学生的信息,并将学生成绩小于平均成绩的学 生信息输出。 char name[NI[20 char N; int ageN; float score[NI; 、学号处名性别年龄「成 int num; 1001 Zhang M 19 88.5 1002 18 90.0 1003 Wang 20 89.0 1004 Zhao 83.5 ☆☆第8章结构体、共用体与枚举类型
☆☆ 第8章 结构体、共用体与枚举类型 1 ❖例8-1 下表为学生的信息表,要求从键盘输入 学生的信息,并将学生成绩小于平均成绩的学 生信息输出。 学 号 姓 名 性 别 年 龄 成 绩 1001 Zhang M 19 88.5 1002 Li M 18 90.0 1003 Wang F 20 89.0 1004 Zhao M 19 83.5 int num[N]; char name[N][20]; char sex[N]; int age[N]; floatscore[N]; 问题的提出
问题的提出 #include <stdio. h> #define n 4 void main( int numN ∥存放各学生的学号 char nameN20;∥存放各学生的姓名 char sex ne ∥存放各学生的性别 int ageN ∥存放各学生的年龄 float scoreN; ∥存放各学生的成绩 Int l float sum=0,aver;∥/表示总成绩和平均成绩 for(i=0; i<N; i+ scanf("%d", &numi: scanf("%s", nameiD; fflush(stdin) /清除输入缓冲区中剩余的内容 scanf("%", &sexi scanf(%d", &agei scanf("%f", &score i) 问题: sum+=scorei]; num、name、sex、age、 score aver-sum 分别定义为互相独立的数组,难以 printf("n 反映它们之间的内在联系。 for(i=0; i<N; i++) if(scorei<aver) printf("%d %s%c %d%f\n, num il, namei,sex i, agel, score[i; ☆☆第8章结构体、共用体与枚举类型
☆☆ 第8章 结构体、共用体与枚举类型 2 问题的提出 #include <stdio.h> #define N 4 void main() { int num[N]; // 存放各学生的学号 char name[N][20]; // 存放各学生的姓名 char sex[N]; // 存放各学生的性别 int age[N]; // 存放各学生的年龄 float score[N]; // 存放各学生的成绩 int i; float sum=0,aver; // 表示总成绩和平均成绩 for(i=0;i<N;i++) { scanf("%d",&num[i]); scanf("%s",name[i]); fflush(stdin); //清除输入缓冲区中剩余的内容 scanf("%c",&sex[i]); scanf("%d",&age[i]); scanf("%f",&score[i]); sum+=score[i]; } aver=sum/N; printf("\n"); for(i=0;i<N;i++) if(score[i]<aver) printf("%d %s %c %d %f\n",num[i],name[i],sex[i], age[i],score[i]); } 问题: num、name、sex、age、score 分别定义为互相独立的数组,难以 反映它们之间的内在联系
第8章结构体、共用体与枚举类型 ◆本章要求 理解构造数据类型的概念 ■掌握结构体变量的定义和使用 掌握结构体数组、结构体指针的定义和使用 了解链表的概念和链表的常见操作 ■了解共用体变量的定义和使用 ■了解枚举数据类型及自定义数据类型的使用 ◆本章难点 结构体数组 结构体指针 ☆☆第8章结构体、共用体与枚举类型
☆☆ 第8章 结构体、共用体与枚举类型 3 第8章 结构体、共用体与枚举类型 ❖本章要求 ▪ 理解构造数据类型的概念 ▪ 掌握结构体变量的定义和使用 ▪ 掌握结构体数组、结构体指针的定义和使用 ▪ 了解链表的概念和链表的常见操作 ▪ 了解共用体变量的定义和使用 ▪ 了解枚举数据类型及自定义数据类型的使用 ❖本章难点 ▪ 结构体数组 ▪ 结构体指针
第8章结构体、共用体与枚举类型 ◆8.1结构体类型与结构体变量 ◆82结构体数组 ◆8.3结构体与函数 ◆8.4动态数据结构—链表 ◆8.5共用体 ◆86枚举类型 ◆8.7自定义类型标识符 ☆☆第8章结构体、共用体与枚举类型
☆☆ 第8章 结构体、共用体与枚举类型 4 第8章 结构体、共用体与枚举类型 ❖8.1 结构体类型与结构体变量 ❖8.2 结构体数组 ❖8.3 结构体与函数 ❖8.4 动态数据结构——链表 ❖8.5 共用体 ❖8.6 枚举类型 ❖8.7 自定义类型标识符
81结构体类型与结构体变量 ◆81.2结构体的声明 °声明结构体类型的一般形式: struct结构体名 声明结构体类型的 关键字,不能省略 数据成员1; 标识符,由用户给定 数据成员2; 今用两个花括号括住的内容}; 数据成员m;÷举例: struct student 是该结构体中的各个成员 i int num; 令每个成员有自己的数据类 char name 20: 型,都应进行类型说明 char sex: int age fle oat score; ☆☆第8章结构体、共用体与枚举类型
☆☆ 第8章 结构体、共用体与枚举类型 5 8.1 结构体类型与结构体变量 ❖8.1.2 结构体的声明 声明结构体类型的 关键字,不能省略 •声明结构体类型的一般形式: struct 结构体名 { 数据成员1; 数据成员2; …… 数据成员n; }; 标识符,由用户给定 ❖ 用两个花括号括住的内容 是该结构体中的各个成员 ❖ 每个成员有自己的数据类 型,都应进行类型说明 ❖举例: structstudent { int num; char name[20]; char sex; int age; floatscore; };