upc考试成绩(c++)

                                

                                                问题 F: 考试成绩

                       时间限制: 1.000 Sec  内存限制: 128 M

题目描述

考试结束了,晨晨的班主任知道了每个学生语、数、英三科的成绩,但她更希望知道每个学生的排名及各人的总分与班平均分的差,于是她求助于晨晨。

输入

第一行:一个整数n,表示晨晨班的学生人数。(n<=100)
接下来n行,每行三个120以内的整数,按学号顺序给出了各学生语、数、英三科成绩。

输出

输出n行,每行是用空格分开的两个数,按学号顺序给出各学生的排名情况及学生总分与班平均分的差(保留小数点后一位小数)。

样例输入 Copy

5
89 91 88
87 97 93
97 87 93
96 96 80
95 93 91

样例输出 Copy

5 -6.6
2 2.4
2 2.4
4 -2.6
1 4.4

思路:

        这题比较入门,有一个难点就是排名时遇到会有并列情况(当时比赛时就卡到这上面没有想到巧方法),实际上只需这个人的成绩和其他人的成绩比较,如果成绩比别人低,加一就行。

代码:

        

#include <bits/stdc++.h>
using namespace std;
int a[105][3],c[105];
double b[105];
int main(){
	int n;
	cin>>n;
	int i,j;
	double ans=0;
	for (i=0;i<n;i++){
		for (j=0;j<3;j++){
			cin>>a[i][j];
			b[i]=a[i][j]+b[i];
		}
		ans=ans+b[i];
	}
	ans=ans/n*1.0;
	for (i=0;i<n;i++){
		b[i]=b[i]-ans;
	}
	for (i=0;i<n;i++){
		for (j=0;j<n;j++){
			if (b[i]<b[j]){
				c[i]++;
			}
		}
	}
	for (i=0;i<n;i++){
		printf("%d %.1lf\n",c[i]+1,b[i]);
	}
}

               

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值