/*
*copyright(c) 2018,HH
*All rights reserved.
*作 者:HH
*完成日期:2018年8月17日
*版本号:v1.0
*
*问题描述:输入结构体数组,并根据结构体中的某一数据项对整个结构体数组进行排序
*输入描述:;
*程序输出:
*/#include<stdio.h>
#include<string.h>struct student
{int num;char name[20];int cpp;int math;int english;int grade;double average;
};
struct student per[6];
struct student test;int main()
{int n,m;printf("请输入需要统计信息的学生个数:\n");scanf("%d",&m);printf("请依次输入该%d名学生的信息\n",m);for(n=0;n<m;n++){printf("请输入第%d个学生学号:\n",n+1);scanf("%d",&per[n].num);printf("请输入第%d个学生姓名:\n",n+1);scanf("%s",&per[n].name);printf("请输入第%d个学生C语言成绩:\n",n+1);scanf("%d",&per[n].cpp);printf("请输入第%d个学生数学成绩:\n",n+1);scanf("%d",&per[n].math);printf("请输入第%d个学生英语成绩:\n",n+1);scanf("%d",&per[n].english);per[n].grade=per[n].math+per[n].cpp+per[n].english;printf("第%d个学生的总成绩是%d:\n",n+1,per[n].grade);per[n].average=per[n].grade/3;printf("第%d个学生的平均成绩是%f:\n",n+1,per[n].average);}int i,j;for(i=0;i<m;i++){for(j=0;j<m-i-1;j++)//此处很重要{if(per[j].cpp<per[j+1].cpp)//根据单一数据项,对整个结构体进行排序{test=per[j+1];//结构体允许整体赋值per[j+1]=per[j];per[j]=test;}}}printf("该%d名学生按照C语言成绩的排序分别是:\n",m);for(i=0;i<m;i++){printf("c语言第%d名的信息如下:\n",i+1);printf("%d %s\n",per[i].num,per[i].name);printf("%d %d %d %d %f\n",per[i].cpp,per[i].math,per[i].english,per[i].grade,per[i].average);}return 0;
}














