表单数据组织-结构体.PDFVIP

  • 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)

1亿VIP精品文档

相关文档