练习 - 计算学生作业分数的平均值
在本练习中,你将计算和存储每个学生作业分数的平均值。 由于你知道每个学生的评分作业数,因此平均值通过除以作业分数的总和来计算。 若要存储平均值,将使用十进制数据类型。
创建变量以存储平均值
在此任务中,你将为每个学生创建一个变量,该变量可用于存储其评分作业的平均分数。
在 .NET 编辑器中,找到
Console.WriteLine()
用于显示每个学生的求和分数的语句。在
Console.WriteLine()
语句上方创建一个空白代码行。在创建的空白代码行中,若要声明将用于学生当前分数的十进制变量,请输入以下代码:
decimal sophiaScore; decimal nicolasScore; decimal zahirahScore; decimal jeongScore;
请注意,你只声明
decimal
变量,而不是初始化它们。 之所以选择decimal
类型,是因为你表示的是平均成绩,并且希望包含一个小数位,如果使用整数,该小数位将不可用。 这样,你可以看到学生是否得分为 89.9,并将他们从 B 提升到 A。在上一练习中,你初始化了整数变量,以便你可以立即在控制台输出中使用它们。 在这种情况下,这些
decimal
变量将在下一步使用您的现有数据进行计算,起始点是索菲亚的分数。若要将索菲亚在类中的当前分数分配给小数
sophiaScore
,请使用以下代码更新变量:decimal sophiaScore = sophiaSum / currentAssignments;
若要计算学生的当前课堂分数,可以将作业分数的总和除以作业总数。 课程中的每个学生都有五项作业,由你在设置过程中初始化的
currentAssignments
表示。若要分配学生的其余分数,请输入以下代码:
decimal nicolasScore = nicolasSum / currentAssignments; decimal zahirahScore = zahirahSum / currentAssignments; decimal jeongScore = jeongSum / currentAssignments;
最终,你想要在此应用程序中显示每个学生的成绩。 在下一步中,你将修改代码以显示每个学生的分数,而不是他们的作业总和。
若要显示每个学生的当前分数,请将 display 语句中的总和变量替换为分数变量:
Console.WriteLine("Sophia: " + sophiaScore); Console.WriteLine("Nicolas: " + nicolasScore); Console.WriteLine("Zahirah: " + zahirahScore); Console.WriteLine("Jeong: " + jeongScore);
花点时间考虑用于开发此应用程序的增量方法。
将问题分解成较小的部分是开发人员的重要技能。 以增量方式生成代码并经常检查工作,使你能够快速开发可靠的应用程序。 在本例中,可以在完成该过程的每个阶段时重新调整
Console.WriteLine()
的用途,验证计算是否正确。若要查看每个学生的当前成绩的值,请选择“ 运行”。
应会看到以下输出:
Sophia: 94 Nicolas: 83 Zahirah: 83 Jeong: 95
请注意,分数显示为整数而不是小数。
如果希望除法计算的结果为十进制值,则被除数或除数必须是 Decimal 类型(或两者都是)。 在计算中使用整数变量时,需要应用一种称为将整数“转换”为十进制的技术。
对于分数计算,可以通过将 sum 变量或
currentAssignments
强制转换为 Decimal 类型来获取十进制结果。 在本例中,将 sum 强制转换为 Decimal 类型。在除法运算中,若要将整数变量转换为小数,请按如下所示更新代码:
decimal sophiaScore = (decimal) sophiaSum / currentAssignments; decimal nicolasScore = (decimal) nicolasSum / currentAssignments; decimal zahirahScore = (decimal) zahirahSum / currentAssignments; decimal jeongScore = (decimal) jeongSum / currentAssignments;
只需要被除数或除数是 Decimal 类型,除法就会产生十进制值。 在此处,只强制转换用作被除数的 sum 变量。
查看以下教师用于分配字母成绩的评分表:
97 - 100 A+ 93 - 96 A 90 - 92 A- 87 - 89 B+ 83 - 86 B
下一步是根据每个学生的总分数为每个学生添加一个字母成绩。 将字母等级添加到显示的输出将是一个手动过程。
若要确定每个学生的当前成绩的值,请选择“ 运行”。
使用每个学生的当前成绩来确定适当的字母成绩,必要时向上或向下舍入。
要在每个学生的数字分数之后追加字母成绩,请更新代码,如下所示:
Console.WriteLine("Sophia: " + sophiaScore + " A"); Console.WriteLine("Nicolas: " + nicolasScore + " B"); Console.WriteLine("Zahirah: " + zahirahScore + " B"); Console.WriteLine("Jeong: " + jeongScore + " A");
检查你的工作
在此任务中,你将运行代码并验证输出是否正确。
将代码与以下内容进行比较:
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");
要运行代码并显示带有字母成绩的学生分数,请选择“运行”。
要验证代码是否按预期工作,请将应用程序的输出与以下输出进行比较:
Sophia: 94.6 A Nicolas: 83.6 B Zahirah: 83.4 B Jeong: 95.4 A
代码现在应将学生分数显示为十进制值,并且你应会看到你分配的字母成绩。
如果代码显示不同的结果,则需要查看代码以查找错误并进行更新。 再次运行代码以查看是否已解决问题。 继续更新并运行代码,直到代码生成预期结果。
重要
确保不要删除到目前为止已编写的任何代码。 在下一个练习中,你将在此代码的基础上进行改进。