/*
*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;
}
根据结构体数组中某一数据项对结构体数组排序
最新推荐文章于 2024-07-27 21:14:19 发布