c#键盘接收n位同学姓名和成绩,输出分数最高的同学的姓名和分数,输出他们的平均分和高于平均分的同学姓名
时间: 2024-10-08 14:03:11 浏览: 36
在C#中,你可以使用`Console.ReadLine()`从控制台读取用户输入,然后遍历输入的数据,找出最高分、平均分以及高于平均分的学生信息。以下是一个基本的示例代码:
```csharp
using System;
using System.Collections.Generic;
class Program
{
static void Main()
{
int n;
Console.Write("请输入学生人数:");
if (!int.TryParse(Console.ReadLine(), out n)) // 检查输入是否有效整数
return;
Dictionary<string, double> scores = new Dictionary<string, double>();
for (int i = 0; i < n; i++)
{
string[] input = Console.ReadLine().Split(' ');
if (input.Length != 2)
continue; // 如果输入格式错误跳过
string name = input[0];
double score;
if (!double.TryParse(input[1], out score)) // 检查成绩是否为有效数字
continue;
scores[name] = score;
}
// 找出最高分、平均分及高于平均分的学生
double maxScore = double.MinValue;
double averageScore = CalculateAverage(scores.Values);
List<(string Name, double Score)> aboveAverageStudents = new List<(string Name, double Score)>();
foreach (KeyValuePair<string, double> pair in scores)
{
if (pair.Value > maxScore)
{
maxScore = pair.Value;
bestStudentName = pair.Key;
}
if (pair.Value >= averageScore)
aboveAverageStudents.Add((pair.Key, pair.Value));
}
Console.WriteLine($"分数最高的学生是 {bestStudentName},分数为:{maxScore}");
Console.WriteLine($"平均分为:{averageScore}");
Console.WriteLine("\n高于平均分的学生有:");
foreach ((string name, double score) in aboveAverageStudents)
Console.WriteLine($"{name}: {score}");
}
static double CalculateAverage(IEnumerable<double> values)
{
double sum = 0;
foreach (double value in values)
sum += value;
return sum / values.Count();
}
}
```
这个程序会提示用户输入学生人数,然后逐个输入学生的姓名和成绩。然后,它会计算最高分,平均分,并找到高于平均分的学生名单。
阅读全文