- 1
- 0
- 约2.41万字
- 约 17页
- 2018-12-02 发布于天津
- 举报
表单数据组织-结构体
第八章 表单数据组织-结构体
8.1 成绩单管理
回顾第六章例 6.15 成绩排序,一个学生的信息包括学号、姓名、成绩三个子数据,各个
子数据的类型不同,如图 8.1,不能由一个数据表示。最好一个学生的信息能表示成一个数据
——“成绩单”,整个一个班的信息为成绩单数组。
struct achievement{
学号(整数): int number ;
姓名(字符串): char name[L];
int achieve ;
成绩(整数):
};
图8.1 一个学生成绩单
图 8.2 一个学生成绩单结构体
现实世界中有很多这类数据:一个数据项由多个子数据组成,而每个子数据的类型可能
不一样。本章介绍一种新的数据组织方式――结构体(struct),使用结构体可以描述这一类由不
同类型子数据项组成的数据,可以把一个学生的信息学号、姓名、成绩表示成一个数据,如图
8.2。结构体类型是构造型数据类型。
【例 8.1】重编例 6.15 程序。输入一个班 50 名学生的程序设计课程成绩,按成绩由高到
低的顺序输出每名学生的学号、姓名、成绩。
解:如图 8.2,把一个学生的学号、姓名、成绩用结构体保存。整个班的成绩单保存在一
个结构体数组中。修改例 6.15 的程序,得到程序如下:
#include stdio.h
#define N 50
#define L 20
struct achievement{ // 成绩单结构体类型
int number ; // 学号
char name[L]; // 姓名
int achieve ; // 成绩
} tab_achievement [N] ; // 全班成绩单为结构体数组
/* 输入函数 */
void input_achievement(struct achievement *achievement1, int i ){
achievement1-number = i ; // 学号不用初值,而改为直接赋值
·1·
printf(please input No.%d name 、achievement :,i);
scanf(“%s%d”,( achievement1-name),( achievement1-achieve));
}
/* 输出函数 */
void output_achievement(struct achievement achievement2 ){
printf(%4d\t %s \t%4d\n,achievement2.number, achievement2.name,achievement2.achieve );
}
/* 冒泡排序 */
void sort_tab(struct achievement *tab){
int i ;
bool flag = true ;
struct achievement r ; // 声明一个结构体变量,用于交换中间变量
while ( flag ) {
flag = false ;
for ( i=0 ; iN-1 ; i++ )
if (tab[i].achieve tab[i+1].achiev
原创力文档

文档评论(0)