奖项排名 (20分)

编程入门 行业动态 更新时间:2024-10-09 18:22:39

<a href=https://www.elefans.com/category/jswz/34/1763955.html style=奖项排名 (20分)"/>

奖项排名 (20分)

7-5 奖项排名 (20分)

第一届程序设计大赛采用PTA平台,参赛选手可以通过排名实时查看自己名次和成绩。该比赛奖项设置如下:一等奖、二等奖、三等奖、优秀奖个数分别为参赛人数的5%、10%、20%、30%,例如参赛人数为57,则一等奖、二等奖、三等奖、优秀奖获奖人数分别为2、5、11、17。比赛结束后,参赛选手想即时查看自己获得的奖项。请你通过编程重新显示排行榜,不但能够看到所有参赛选手的名次和成绩,还可以看到所获奖项信息。

输入格式:
输入第一行为一个正整数n(20≤n≤100),表示参赛人数,随后n行,每行给出每个参赛选手的准考证号和成绩,用空格分割。其中准考证号为形如“lyu201809090601”的15位字符数字串,成绩为一个正整数。

输出格式:
按照排名从高到低的顺序输出所有选手信息,一个参赛选手信息占一行,包括名次、准考证号、成绩、奖项,中间用空格进行分割。名次从高到低为1、2、3、…,依次类推。一等奖、二等奖、三等奖和优秀奖分别用数字1、2、3、4表示,没有获奖输出0。题目保证所有成绩均不相同。

输入样例:

36
lyu201309290406 194
lyu201409300205 74
lyu201409300229 191
lyu201509010102 67
lyu201509010602 172
lyu201509090223 34
lyu201509100425 21
lyu201509230239 66
lyu201509310201 169
lyu201509310223 60
lyu201609000503 142
lyu201609060103 146
lyu201609060105 55
lyu201609100301 9
lyu201709000415 79
lyu201709000416 49
lyu201709000504 106
lyu201709000505 147
lyu201709040103 177
lyu201709040104 163
lyu201709040110 116
lyu201709090109 38
lyu201709090111 29
lyu201709090726 112
lyu201709100313 130
lyu201709100625 108
lyu201809000118 189
lyu201809000238 127
lyu201809040321 3
lyu201809150107 100
lyu201809150121 35
lyu201809150125 10
lyu201809150126 30
lyu201809150128 23
lyu201809150129 18
lyu201809150326 119

输出样例:

1 lyu201309290406 194 1
2 lyu201409300229 191 2
3 lyu201809000118 189 2
4 lyu201709040103 177 2
5 lyu201509010602 172 3
6 lyu201509310201 169 3
7 lyu201709040104 163 3
8 lyu201709000505 147 3
9 lyu201609060103 146 3
10 lyu201609000503 142 3
11 lyu201709100313 130 3
12 lyu201809000238 127 4
13 lyu201809150326 119 4
14 lyu201709040110 116 4
15 lyu201709090726 112 4
16 lyu201709100625 108 4
17 lyu201709000504 106 4
18 lyu201809150107 100 4
19 lyu201709000415 79 4
20 lyu201409300205 74 4
21 lyu201509010102 67 4
22 lyu201509230239 66 0
23 lyu201509310223 60 0
24 lyu201609060105 55 0
25 lyu201709000416 49 0
26 lyu201709090109 38 0
27 lyu201809150121 35 0
28 lyu201509090223 34 0
29 lyu201809150126 30 0
30 lyu201709090111 29 0
31 lyu201809150128 23 0
32 lyu201509100425 21 0
33 lyu201809150129 18 0
34 lyu201809150125 10 0
35 lyu201609100301 9 0
36 lyu201809040321 3 0

#include<stdio.h>
#include<string.h>
struct student{char num[20];int score;
}stu[101];void swap(int *a,int *b){			//交换操作int tmp;tmp=*a;*a=*b;*b=tmp;
}int main(){int n,i,j,max;int first,second,third,excelent,cnt=0;char temp[20];scanf("%d",&n);first=n*0.05; 			//写出各奖项人数second=n*0.1; third=n*0.2; excelent=n*0.3;getchar();for(i=0;i<n;i++)		scanf("%s %d",&stu[i].num,&stu[i].score);for(i=0;i<n;i++){				//按照排名从高到低的顺序排序max=i;for(j=i+1;j<n;j++){if(stu[j].score>stu[max].score)swap(&max,&j);			//交换下标,大的下标往前放。}//printf("%d\n",max);swap(&stu[i].score,&stu[max].score);	//下标交换了,分数也要交换/*	下面是交换准考证号*/strcpy(temp,stu[i].num);				strcpy(stu[i].num,stu[max].num);strcpy(stu[max].num,temp);}//printf("%s %d",stu[1].num,stu[1].score);/*排好序就简单了,按名次输出*/int k=first;for(i=0;i<first;i++){printf("%d %s %d 1\n",++cnt,stu[i].num,stu[i].score);}k=k+second;for(i=cnt;i<k;i++){printf("%d %s %d 2\n",++cnt,stu[i].num,stu[i].score);}k=k+third;for(i=cnt;i<k;i++){printf("%d %s %d 3\n",++cnt,stu[i].num,stu[i].score);}k=k+excelent;for(i=cnt;i<k;i++){printf("%d %s %d 4\n",++cnt,stu[i].num,stu[i].score);}for(i=cnt;i<n;i++){printf("%d %s %d 0\n",++cnt,stu[i].num,stu[i].score);}return 0;
}

更多推荐

奖项排名 (20分)

本文发布于:2024-02-13 11:54:16,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1758753.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:奖项

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!