小组成绩排名



Description

为了保证每位ACMer学习的进度,检验其学习成果,每隔一段时间就要进行一次内部测验。Samsara被逼迫去评测,并且要给每个人一个分数,自然作为弱菜的他是没有时间和精力来进行排名统计了,希望会编程的你能帮他输出前三名的成绩。

Input

输入包含若干组数据,每组数据都有两行,第一行一个正整数n(3<=n<=1000000),第二行n个精确到百分位的浮点型小数,以空格隔开,分别代表第一个人到第n个人的成绩A[i](0<=A[i]<=100)。
读入以文件尾结束。

Output

对于每组输入对应一行输出。按顺序输出前三名的成绩,保留两位小数。

Sample Input

5
1.00 2.00 3.00 4.00 5.00

Sample Output

5.00 4.00 3.00

HINT

代码

#include<iostream>
using namespace std;
void insert(float a[],int k,float t){
 if(k==0){a[2]=a[1];a[1]=a[0];a[0]=t;}
 if(k==1){a[2]=a[1];a[1]=t;}
 if(k==2){a[2]=t;}
}
main()
{
 int n;
 
 while(scanf("%d",&n)!=EOF){
  float a[3]={0.00,0.00,0.00};
  float t;
  for(int i=0;i<n;i++){
   scanf("%f",&t);
   for(int j=0;j<3;j++){
    if(t>a[j]) {insert(a,j,t);break;}
   }
  }
   printf("%0.2f %0.2f% 0.2f",a[0],a[1],a[2]);
  printf("\n");
}
}

此题思路还是比较简单的,只是要注意数组的插入,今天刚看了线性结构,借给用上了,因为数组只有3个值,并没有用一般情况下插入方法(其实我是刚学完,想起来费劲。。。), 在一个要注意输出时;本来我是想用循环输出来着就是这样printf("%f ",a[i]);,改了n次,输出格式错误,凭我敏锐的观察力(想了很久。。。)终于发现了猫腻,我这样输出最后一个数后面也会有空格,会不会是它的问题,于是我就直接输出整个数组,中间有两个空格,然后AC,哈哈哈哈,不过对于大一点的数组这种方法就不行了,貌似见过这种问题解决办法,弄一个标志变量??  具体忘了,  以后遇到再说  哈哈哈哈

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值