期末考试结束后要对同学们的考试成绩进行排序,张老师已经计算好了每一位同学的总成绩。请编写程序,输入每位同学的总成绩并输出一个按成绩高低排列的名次表。
该问题中,在成绩排序的同时,需要相应的学号和姓名一起随之变化。因此,我们可以使用结构体,学号、姓名、成绩以及名次作为结构体成员。通过对结构体对象成员(总成绩)的大小判断,实现把结构体对象作为一个整体进行排序操作。
我们定义一个结构体对象的数组 stu 用来存放多个学生信息,每一个数组元素都是一个结构体对象:
struct student{
char id[5]; //学号
char name[40]; //姓名
float score; //期末总成绩
int num; //名次
}stu[100]; //定义一个结构体对象的数组stu
判断两个数组元素 stu[i] 和 stu[j] 中的结构体对象成员 stu[i].score 和 stu[j].score 的大小,从而决定是否交换数组元素 stu[i] 和 stu[j] 的值:
if(stu[i].score < stu[j].score){
temp = stu[i];
stu[i] = stu[j];
stu[j] = temp;
}
C语言代码清单 1:输入学生成绩并排列名次
#include
#include
int main( )
{
struct student //声明结构体 student
{
char id[5]; //学生学号