题目描述:
每学期的期末,大家都会忙于计算自己的平均成绩,这个成绩对于评奖学金是直接有关的。国外大学都是计算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的程序。
一般大学采用之计分法
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的程序。
水题,锻炼一下C#而已,注意数据类型,AC代码:
using System;
namespace a1
{
class Program
{
public static void Main(string[] args)
{
string str = string.Empty;
double f, j, zf, zg;
while ((str = Console.ReadLine()) != null) {
int n;
n = Convert.ToInt32(str);
zf = 0;
zg = 0;
while (n-- > 0) {
str = Console.ReadLine();
string[] s = str.Split(' ');
f = Convert.ToDouble(s[0]);
j = Convert.ToDouble(s[1]);
if (j == -1)
continue;
if (j >= 90) {
zg += 4 * f;
} else if (j >= 80) {
zg += 3 * f;
} else if (j >= 70) {
zg += 2 * f;
} else if (j >= 60) {
zg += 1 * f;
} else if (j >= 0) {
zg += 0;
} else
continue;
zf += f;
}
if (zg == 0)
Console.WriteLine("-1");
else
Console.WriteLine("{0}", (zg / zf).ToString("0.00"));
}
}
}
}