问题描述
把学生成绩(包含姓名和成绩)从高到低排序后输出学生信息
代码
分析:需要定义一个学生结构体,包含学生姓名和成绩,然后对成绩排序,交换的时候注意是交换整个学生结构体,而不仅仅是里面的成绩
#include<stdio.h>
typedef struct Student{
char name[20];
float score;
}Student;
int main()
{
int i,j;
Student temp;//中间变量结构体
Student stu[5]={{"张三",90.2},{"李四",80.7},{"jerry",68.2},{"tom",98},{"王五",94}};//结构体数组,里面有5个结构体变量
for(i=0;i<5;i++){
for(j=i;j<5;j++){
if(stu[i].score<stu[j].score){//前面的小,就和后面的交换
temp=stu[i];
stu[i]=stu[j];//注意:应该整个结构体变量进行交换,而不是仅仅交换成绩
stu[j]=temp;
}
}
}
for(i=0;i<5;i++){
printf("%s的成绩是%.1f\n",stu[i].name,stu[i].score);
}
}