HDOJ 1202 The calculation of GPA

举报
谙忆 发表于 2021/05/26 18:05:50 2021/05/26
【摘要】 Problem Description 每学期的期末,大家都会忙于计算自己的平均成绩,这个成绩对于评奖学金是直接有关的。国外大学都是计算GPA(grade point average) 又称GPR(grade point ratio),即成绩点数与学分的加权平均值来代表一个学生的成绩的。那么如何来计算GPA呢? 一般大学采用之计分法 A90 - 100 4 点...

Problem Description
每学期的期末,大家都会忙于计算自己的平均成绩,这个成绩对于评奖学金是直接有关的。国外大学都是计算GPA(grade point average) 又称GPR(grade point ratio),即成绩点数与学分的加权平均值来代表一个学生的成绩的。那么如何来计算GPA呢?

一般大学采用之计分法

A90 - 100 4 点
B80 - 89 3 点
C70 - 79 2 点
D60 - 69 1 点
E0 - 59 0 点

例如:某位学生修习三门课,其课目、学分及成绩分别为:
英文:三学分、92 分;化学:五学分、80 分;数学:二学分、60分,则GPA的算法如下:

科目 学分 分数 点数 分数×点数
英文 3 92 4 12
化学 5 80 3 15
数学 2 60 1 2
合计 10 29
29/10=2.9
2.9即为某生的GPA
下面有请你写一个用于计算GPA的程序。

Input
包含多组数据,每组数据的第一行有一个数N,接下来N行每行表示一门成绩。每行有两个实型的数 s,p,s表示这门课的学分,p表示该学生的成绩(百分制)。如果p=-1则说明该学生这门课缺考,是不应该计算在内的。

Output
对每组数据输出一行,表示该学生的GPA,保留两位小数。如果GPA不存在,输出-1。

Sample Input
3
3 92
5 80
2 60

Sample Output
2.90

注意:成绩和学分都可以是小数的!!!

import java.util.Scanner;

public class Main{ public static void main(String[] args) { Scanner sc = new Scanner(System.in); while(sc.hasNext()){ int n=sc.nextInt(); double a[][] = new double[n+1][3]; for(int i=0;i<n;i++){ a[i][0]=sc.nextDouble(); a[i][1]=sc.nextDouble(); } a[n][0]=0; a[n][2]=0; for(int i=0;i<n;i++){ if(a[i][1]>=0&&a[i][1]<60){ a[i][2]=0; a[n][0]=a[i][0]+a[n][0]; a[n][2]=(a[i][2]*a[i][0])+a[n][2]; //System.out.println(a[n][2]); }else if(a[i][1]>=60&&a[i][1]<70){ a[i][2]=1; a[n][0]=a[i][0]+a[n][0]; a[n][2]=(a[i][2]*a[i][0])+a[n][2]; //System.out.println(a[n][2]+"60-70"); }else if(a[i][1]>=70&&a[i][1]<80){ a[i][2]=2; a[n][0]=a[i][0]+a[n][0]; a[n][2]=(a[i][2]*a[i][0])+a[n][2]; //System.out.println(a[n][2]+"70-80"); }else if(a[i][1]>=80&&a[i][1]<90){ a[i][2]=3; a[n][0]=a[i][0]+a[n][0]; a[n][2]=(a[i][2]*a[i][0])+a[n][2]; //System.out.println(a[n][2]); }else if(a[i][1]>=90&&a[i][1]<=100){ a[i][2]=4; a[n][0]=a[i][0]+a[n][0]; a[n][2]=(a[i][2]*a[i][0])+a[n][2]; //System.out.println(a[n][2]); } } //System.out.println(a[n][0]); //System.out.println(a[n][2]); if(a[n][0]==0){ System.out.println(-1); }else{ System.out.printf("%.2f",a[n][2]/a[n][0]); System.out.println(); } } }

}

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56

文章来源: chenhx.blog.csdn.net,作者:谙忆,版权归原作者所有,如需转载,请联系作者。

原文链接:chenhx.blog.csdn.net/article/details/51049952

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。