练习 - 计算学生作业分数的平均值

已完成

在本练习中,计算并存储每个学生的作业分数平均值。 由于你知道每个学生的评分作业数,因此平均值通过将作业分数之和除以作业数来计算。 若要存储平均值,你将使用 Decimal 数据类型。

创建变量以存储平均值

在此任务中,为每个学生创建一个变量,该变量可用于存储其评分作业的平均分数。

  1. 在 .NET 编辑器中,找到用于显示每个学生的总分的 Console.WriteLine() 语句。

  2. Console.WriteLine() 语句上方创建空白代码行。

  3. 在创建的空白代码行上,若要声明将用于学生当前分数的 Decimal 变量,请输入以下代码:

    decimal sophiaScore;
    decimal nicolasScore;
    decimal zahirahScore;
    decimal jeongScore;
    
    

    请注意,你只声明 decimal 变量而不初始化它们。 之所以选择 decimal 类型,是因为你表示的是平均成绩,并且希望包含一个小数位,如果使用整数,该小数位将不可用。 这样,你便可以查看学生是否获得 89.9 分的分数,并将其从 B 提升到 A。

    在上一个练习中,你初始化了 Integer 变量,以便可以在控制台输出中立即使用它们。 在本例中,这些 decimal 变量将在下一步中使用现有数据的计算进行初始化,从 Sophia 的分数开始。

  4. 要将 Sophia 在课程中的当前分数分配为十进制 sophiaScore,请使用以下代码更新该变量:

    decimal sophiaScore = sophiaSum / currentAssignments;
    
    

    要计算某学生的当前课程分数,请将作业分数的总和除以作业总数。 课程中的每个学生都有五项作业,由你在设置过程中初始化的 currentAssignments 表示。

  5. 要分配其余学生的分数,请输入以下代码:

    decimal nicolasScore = nicolasSum / currentAssignments;
    decimal zahirahScore = zahirahSum / currentAssignments;
    decimal jeongScore = jeongSum / currentAssignments;
    
    

    最终,你想要在此应用程序中显示每个学生的成绩。 在下一步中,修改代码以显示每个学生的分数,而不是他们的作业总和。

  6. 要显示每个学生的当前分数,请将 display 语句中的 sum 变量替换为 score 变量:

    Console.WriteLine("Sophia: " + sophiaScore);
    Console.WriteLine("Nicolas: " + nicolasScore);
    Console.WriteLine("Zahirah: " + zahirahScore);
    Console.WriteLine("Jeong: " + jeongScore);
    
    
  7. 花一点时间考虑用于开发此应用程序的增量方法。

    将一个问题分解成更小的部分是开发人员的一项重要技能。 以增量方式生成代码并经常检查工作,这可让你快速开发可靠的应用程序。 在本例中,可以在完成该过程的每个阶段时重新调整 Console.WriteLine() 的用途,验证计算是否正确。

  8. 要查看每个学生当前成绩的值,请选择“运行”

    应会看到以下输出:

    Sophia: 94
    Nicolas: 83
    Zahirah: 83
    Jeong: 95
    
  9. 请注意,分数显示为整数而不是小数。

    如果希望除法计算的结果为十进制值,则被除数或除数必须是 Decimal 类型(或两者都是)。 在计算中使用 Integer 变量时,需要应用一种称为强制转换的技术来将整数“转换”为小数。

    对于分数计算,可以通过将 sum 变量或 currentAssignments 强制转换为 Decimal 类型来获取十进制结果。 在本例中,将 sum 强制转换为 Decimal 类型。

  10. 在除法运算中,要将 Integer 变量强制转换为 Decimal 类型,请更新代码,如下所示:

    decimal sophiaScore = (decimal) sophiaSum / currentAssignments;
    decimal nicolasScore = (decimal) nicolasSum / currentAssignments;
    decimal zahirahScore = (decimal) zahirahSum / currentAssignments;
    decimal jeongScore = (decimal) jeongSum / currentAssignments;
    

    只需要被除数或除数是 Decimal 类型,除法就会产生十进制值。 在此处,只强制转换用作被除数的 sum 变量。

  11. 查看以下教师用于分配字母成绩的评分表:

    97 - 100    A+
    93 - 96     A
    90 - 92     A-
    87 - 89     B+
    83 - 86     B
    

    下一步是根据每个学生的总分数为每个学生添加一个字母成绩。 将字母成绩添加到显示的输出将是一个手动过程。

  12. 要确定每个学生当前成绩的值,请选择“运行”

    使用每个学生的当前成绩来确定适当的字母成绩,必要时向上或向下舍入。

  13. 要在每个学生的数字分数之后追加字母成绩,请更新代码,如下所示:

    Console.WriteLine("Sophia: " + sophiaScore + " A");
    Console.WriteLine("Nicolas: " + nicolasScore + " B");
    Console.WriteLine("Zahirah: " + zahirahScore + " B");
    Console.WriteLine("Jeong: " + jeongScore + " A");
    

检查工作

在此任务中,运行代码并验证输出是否正确。

  1. 将代码与以下内容进行比较:

    int currentAssignments = 5;
    
    int sophia1 = 93;
    int sophia2 = 87;
    int sophia3 = 98;
    int sophia4 = 95;
    int sophia5 = 100;
    
    int nicolas1 = 80;
    int nicolas2 = 83;
    int nicolas3 = 82;
    int nicolas4 = 88;
    int nicolas5 = 85;
    
    int zahirah1 = 84;
    int zahirah2 = 96;
    int zahirah3 = 73;
    int zahirah4 = 85;
    int zahirah5 = 79;
    
    int jeong1 = 90;
    int jeong2 = 92;
    int jeong3 = 98;
    int jeong4 = 100;
    int jeong5 = 97;
    
    int sophiaSum = sophia1 + sophia2 + sophia3 + sophia4 + sophia5;
    int nicolasSum = nicolas1 + nicolas2 + nicolas3 + nicolas4 + nicolas5;
    int zahirahSum = zahirah1 + zahirah2 + zahirah3 + zahirah4 + zahirah5;
    int jeongSum = jeong1 + jeong2 + jeong3 + jeong4 + jeong5;
    
    decimal sophiaScore = (decimal) sophiaSum / currentAssignments;
    decimal nicolasScore = (decimal) nicolasSum / currentAssignments;
    decimal zahirahScore = (decimal) zahirahSum / currentAssignments;
    decimal jeongScore = (decimal) jeongSum / currentAssignments;
    
    Console.WriteLine("Sophia: " + sophiaScore + " A");
    Console.WriteLine("Nicolas: " + nicolasScore + " B");
    Console.WriteLine("Zahirah: " + zahirahScore + " B");
    Console.WriteLine("Jeong: " + jeongScore + " A");
    
  2. 要运行代码并显示带有字母成绩的学生分数,请选择“运行”

  3. 要验证代码是否按预期工作,请将应用程序的输出与以下输出进行比较:

    Sophia: 94.6 A
    Nicolas: 83.6 B
    Zahirah: 83.4 B
    Jeong: 95.4 A
    

    代码现在应将学生分数显示为十进制值,并且你应会看到你分配的字母成绩。

    如果代码显示不同的结果,则需要查看代码以查找错误并进行更新。 再次运行代码以查看是否已解决问题。 继续更新和运行代码,直到代码生成预期结果。

重要

确保不要删除到目前为止已编写的任何代码。 在下一个练习中,你将基于此代码进行生成。