多个学生信息排序(结构体+数组)
描述
假设学生的基本信息包括学号、姓名、三门功课成绩以及个人平均成绩。用结构体表示学生信息。输入10个学生的信息,计算平均分,并按照平均分从高到低排序后输出,两列数据之间用'\t'分隔,成绩保留两位小数。
输入输出示例
输入 输出
示例 1 20180001 爱丽丝 29 45.6 0020180002 刘德华 49 55.6 9020180003 张老三 69 65.6 8020180004 李老四 99 95.6 9020180005 杰克瑞 49 65.6 8020180006 孙大圣 89 45.6 0020180007 唐小僧 79 55.6 9020180008 王小二 69 65.6 8020180009 郭德纲 59 75.6 4020180010 小岳岳 49 85.6 80
李老四 94.87
唐小僧 74.87
张老三 71.53
王小二 71.53
小岳岳 71.53
刘德华 64.87
杰克瑞 64.87
郭德纲 58.20
孙大圣 44.87
爱丽丝 24.87
#include<stdio.h>
struct student
{
/*请补充代码*/
char id[10];
char name[10];
double point[3];
double aver;
};
int main(void)
{
struct student stu[10];
struct student stu1;
/*请补充代码*/
int i;
for(i=0;i<10;i++)
{
scanf("%s %s %lf %lf %lf",&stu[i].id,&stu[i].name,&stu[i].point[0],&stu[i].point[1],&stu[i].point[2]);
}
for(i=0;i<10;i++)
{
stu[i].aver=(stu[i].point[1]+stu[i].point[2]+stu[i].point[0])/3.0;
}
int j;
for(i=0;i<9;i++)
{
for(j=0;j<10-i-1;j++)
{
if(stu[j].aver<stu[j+1].aver)
{
stu1=stu[j];
stu[j]=stu[j+1];
stu[j+1]=stu1;
}
}
}
for(i=0;i<10;i++)
{
printf("%s\t%.2lf\n",stu[i].name,stu[i].aver);
}
return 0;
}
0.0分
1 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复