1193: 单科成绩排序(结构体专题)
2017-08-17 16:54
609 查看
Description
有一学生成绩表,包括学号、姓名、3门课程成绩。请按要求排序输出:若输入1,则按第1门课成绩降序输出成绩表,若输入为i(1<=i<=3),则按第i门课成绩降序输出成绩表。Input
首先输入一个整数n(1<=n<=100),表示学生人数;然后输入n行,每行包含一个学生的信息:学号(12位)、姓名(不含空格且不超过20位),以及3个整数,表示3门课成绩,数据之间用空格隔开。
最后一行输入一个整数i,表示要求按第i门课成绩降序排序输出,若该门课成绩相同,则按学号升序。
Output
输出按第i门课降序排序的结果,格式见样例。Sample Input
3541207010188 Zhangling 89 78 95
541207010189 Wangli 85 87 99
541207010190 Fangfang 85 68 761
Sample Output
541207010188 Zhangling 89 78 95541207010189 Wangli 85 87 99
541207010190 Fangfang 85 68 76
HINT
Source
#include <stdio.h>#include <stdlib.h>
#include <string.h>
//包括学号、姓名、3门课程成绩
typedef struct student
{
char ID[13];
char name[25];
int score[3];
}STU;
int main()
{
int n,m;
STU p[101],temp;
scanf("%d",&n);
int i,j,k;
for(i=0;i<n;i++)
{
scanf("%s", p[i].ID);
scanf("%s", p[i].name);
for(j=0; j<3; j++)
scanf("%d",&p[i].score[j]);
}
scanf("%d",&m);
m=m-1;
for(k=0; k<n; k++)
{
for(j=k+1; j<n; j++)
{
if( p[k].score[m]<p[j].score[m])
{
temp=p[k];
p[k]=p[j];
p[j]=temp;
}
else if(p[k].score[m]==p[j].score[m])
{
if(strcmp(p[k].ID,p[j].ID)>0)
{
temp=p[k];
p[k]=p[j];
p[j]=temp;
}
}
}
}
for(k=0; k<n; k++)
{
printf("%s %s",p[k].ID,p[k].name);
for(j=0; j<3; j++)
printf(" %d",p[k].score[j]);
printf("\n");
}
return 0;
}
相关文章推荐
- ZZULI-1193: 单科成绩排序(结构体专题)
- 1193: 单科成绩排序(结构体专题)
- ZZULI-1194: 总成绩排序(结构体专题)
- 1478 Problem A 总成绩排序(结构体专题)——软四课堂小测试2——2017-12-22
- 1194: 总成绩排序(结构体专题)
- 【慢慢学算法】:成绩排序(qsort对结构体的多级排序)
- 结构体—根据学生的成绩从高到低排序
- 1184: 平面点排序(二)(结构体专题)
- 15-07-10 结构体-输入学生成绩进行排序
- 1190: 按出生日期排序(结构体专题)
- JustOj 1256: 成绩排名 (结构体排序)
- 有5名学生保存在结构体数组中,编程按学生的成绩升序排序,按学生的姓名降序排序,按年龄从低到高排序
- //有5名学生保存在结构体数组中,编程查找成绩最高者,输出该学生全部信息。 // //对上述5名学生数组,按成绩从高到低排序,并输出。
- ZZULUI-1183平面点排序(一)(结构体专题)
- ZULIOJ-1182: 按出生日期排序(结构体专题)
- 有 4000 5名学生保存在结构体数组中,编程按学生的成绩升序排序,按学生的姓名降序排序,按年龄从低到高排序
- ZZULI-1184 平面点排序(二)(结构体专题)
- C语言结构体+数组实现学生学号成绩的统计、排序
- flag28 成绩排序,输出单科最排名以及每个学生每科排名以及总分排名
- C/C++动态自定义结构体数组实例锻炼-学生成绩排序