提问人:westella 提问时间:11/16/2023 最后编辑:Bill Hilemanwestella 更新时间:11/16/2023 访问量:79
挑战项目 - 开发 foreach 和 if-elseif-else 结构以在 C 语言中处理数组数据#
Challenge project - Develop foreach and if-elseif-else structures to process array data in C#
问:
因此,我是 C# 的新手,我决定开始 Microsoft 学习培训。在这个特定模块中,我必须创建一个学生评分应用程序,以根据学生的评分考试和额外学分作业来计算和报告学生的成绩。输出应包含学生姓名、考试成绩、总成绩和额外学分。
我很确定我做对了大部分这些事情(我可以看到所需的输出),但我不喜欢额外的学分部分,我基本上只是硬编码了它。我想,标记或标记会派上用场,但我不知道如何使用它。任何帮助都值得赞赏,谢谢。
这是我的最终代码:
int examAssignments = 5;
string[] studentNames = new string[] { "Sophia", "Andrew", "Emma", "Logan" };
int[] sophiaScores = new int[] { 90, 86, 87, 98, 100, 94, 90 };
int[] andrewScores = new int[] { 92, 89, 81, 96, 90, 89 };
int[] emmaScores = new int[] { 90, 85, 87, 98, 68, 89, 89, 89 };
int[] loganScores = new int[] { 90, 95, 87, 88, 96, 96 };
int[] studentScores = new int[10];
string currentStudentLetterGrade = "";
// display the header row for scores/grades
Console.Clear();
Console.WriteLine("Student\t\tExam Score\tOverall\t\tGrade\t\tExtra Credit\n");
/*
The outer foreach loop is used to:
- iterate through student names
- assign a student's grades to the studentScores array
- sum assignment scores (inner foreach loop)
- calculate numeric and letter grade
- write the score report information
*/
foreach (string name in studentNames)
{
string currentStudent = name;
if (currentStudent == "Sophia")
studentScores = sophiaScores;
else if (currentStudent == "Andrew")
studentScores = andrewScores;
else if (currentStudent == "Emma")
studentScores = emmaScores;
else if (currentStudent == "Logan")
studentScores = loganScores;
int sumAssignmentScores = 0;
decimal currentStudentGrade = 0;
int gradedAssignments = 0;
/*
the inner foreach loop sums assignment scores
extra credit assignments are worth 10% of an exam score
*/
foreach (int score in studentScores)
{
gradedAssignments++;
if (gradedAssignments <= examAssignments)
sumAssignmentScores += score;
else
sumAssignmentScores += score / 10;
}
currentStudentGrade = (decimal)(sumAssignmentScores) / examAssignments;
int sumExamScore = 0;
decimal examScore = 0;
int neededAssignments = 0;
foreach (int together in studentScores)
{
neededAssignments += 1;
if (neededAssignments <= examAssignments)
sumExamScore += together;
else
break;
}
examScore = (decimal)(sumExamScore) / examAssignments;
if (currentStudentGrade >= 97)
currentStudentLetterGrade = "A+";
else if (currentStudentGrade >= 93)
currentStudentLetterGrade = "A";
else if (currentStudentGrade >= 90)
currentStudentLetterGrade = "A-";
else if (currentStudentGrade >= 87)
currentStudentLetterGrade = "B+";
else if (currentStudentGrade >= 83)
currentStudentLetterGrade = "B";
else if (currentStudentGrade >= 80)
currentStudentLetterGrade = "B-";
else if (currentStudentGrade >= 77)
currentStudentLetterGrade = "C+";
else if (currentStudentGrade >= 73)
currentStudentLetterGrade = "C";
else if (currentStudentGrade >= 70)
currentStudentLetterGrade = "C-";
else if (currentStudentGrade >= 67)
currentStudentLetterGrade = "D+";
else if (currentStudentGrade >= 63)
currentStudentLetterGrade = "D";
else if (currentStudentGrade >= 60)
currentStudentLetterGrade = "D-";
else
currentStudentLetterGrade = "F";
// Student Grade
// Sophia: 92.2 A-
decimal extraCredit = 0;
int extraGrade = 0;
int sumExtraCredit = 0;
decimal extraPoints = 0;
decimal earnedPoints = 0;
foreach (int extra in studentScores)
{
extraGrade++;
if (extraGrade > 5)
sumExtraCredit += extra;
else
continue;
}
//extra credit
if (currentStudent == "Sophia")
extraCredit = (decimal)(sumExtraCredit) / 2;
else if (currentStudent == "Andrew")
extraCredit = (decimal)(sumExtraCredit);
else if (currentStudent == "Emma")
extraCredit = (decimal)(sumExtraCredit) / 3;
else if (currentStudent == "Logan")
extraCredit = (decimal)(sumExtraCredit);
//extra credit points
if (currentStudent == "Sophia")
earnedPoints = (decimal)(sumExtraCredit) / 10 / 5;
else if (currentStudent == "Andrew")
earnedPoints = (decimal)(sumExtraCredit) / 10 / 5;
else if (currentStudent == "Emma")
earnedPoints = (decimal)(sumExtraCredit) / 10 / 5;
else if (currentStudent == "Logan")
earnedPoints = (decimal)(sumExtraCredit) / 10 / 5;
Console.WriteLine($"{currentStudent}\t\t{examScore}\t\t{currentStudentGrade}\t\t{currentStudentLetterGrade}\t\t{extraCredit}\t({earnedPoints} pts)");
}
// required for running in VS Code (keeps the Output windows open to view results)
Console.WriteLine("\n\rPress the Enter key to continue");
Console.ReadLine();
答: 暂无答案
上一个:抽象类的哈希可散列性
评论
switch