52. 键盘接收n位同学姓名和成绩,输出分数最高的同学的姓名和分数,输出他们的平均分和高于平均分的同学姓名。用C#
时间: 2024-09-26 21:13:07 浏览: 6
在C#中,你可以创建一个控制台应用来实现这个功能。这里有一个简单的示例:
```csharp
using System;
using System.Collections.Generic;
class Program
{
static void Main(string[] args)
{
Dictionary<string, int> studentScores = new Dictionary<string, int>();
// 接收n位同学姓名和成绩
for (int i = 0; i < n; i++)
{
Console.Write($"请输入第{i + 1}位同学的姓名(空格分隔): ");
string name = Console.ReadLine();
Console.Write($"请输入第{i + 1}位同学的成绩: ");
int score;
if (Int32.TryParse(Console.ReadLine(), out score))
{
studentScores.Add(name, score);
}
else
{
Console.WriteLine("无效的分数,请输入整数。");
i--;
continue;
}
}
// 找到最高分、计算平均分及高于平均分的学生
int maxScore = 0;
double averageScore = 0;
List<string> aboveAverageStudents = new List<string>();
foreach (KeyValuePair<string, int> entry in studentScores)
{
maxScore = Math.Max(maxScore, entry.Value);
averageScore += entry.Value;
}
averageScore /= studentScores.Count;
foreach (KeyValuePair<string, int> entry in studentScores)
{
if (entry.Value > averageScore)
aboveAverageStudents.Add(entry.Key);
}
// 输出结果
Console.WriteLine($"最高分学生是{studentScores.OrderByDescending(x => x.Value).First().Key},分数是{maxScore}。");
Console.WriteLine($"平均分为{averageScore:F2}。");
Console.WriteLine("高于平均分的学生有:");
foreach (string student in aboveAverageStudents)
{
Console.WriteLine(student);
}
}
}
// 注意:你需要替换 'n' 为实际需要接收的姓名数量,例如 `int n = 5;`
```
这段代码首先接收学生姓名和成绩,然后找到最高分、平均分,并筛选出高于平均分的学生。最后输出结果。