定义一个二维数组用于存储学生的学号,姓名和c#课程的考试成绩,然后输入学号、姓名和c#成绩。最后按c#成绩升序和降序输出成绩单。
在C#编程中,处理学生数据的场景非常常见,特别是在教育和培训领域。在这个问题中,我们需要定义一个二维数组来存储学生的基本信息,包括学号、姓名以及他们在C#课程中的考试成绩。接下来,我们将详细讲解如何实现这个功能,并按照成绩的升序和降序输出成绩单。 我们需要创建一个二维数组,它将代表学生数据的表格。在C#中,我们可以定义一个数组的数组,即二维数组,来实现这一目标。例如: ```csharp string[,] studentData = new string[5, 3]; // 假设我们有5个学生 ``` 这里,`5`是行数,`3`是列数,分别对应学生的数量和每个学生包含的信息项(学号、姓名、成绩)。 接下来,我们需要从用户那里获取输入,填充这个二维数组。可以使用`Console.ReadLine()`函数来读取控制台输入: ```csharp for (int i = 0; i < 5; i++) { Console.WriteLine($"请输入第{i + 1}个学生的学号:"); string id = Console.ReadLine(); Console.WriteLine("请输入姓名:"); string name = Console.ReadLine(); Console.WriteLine("请输入C#成绩:"); string scoreStr = Console.ReadLine(); int score = int.Parse(scoreStr); // 将字符串转换为整数 studentData[i, 0] = id; studentData[i, 1] = name; studentData[i, 2] = score.ToString(); // 将整数转换回字符串,以便与字符串数组兼容 } ``` 然后,我们需要编写函数来对成绩进行排序。C#提供了`Array.Sort()`方法,但不能直接用于二维数组。因此,我们需要创建一个辅助的一维数组,包含学生的成绩,然后根据成绩对索引进行排序: ```csharp int[] sortedIndexes = new int[5]; for (int i = 0; i < 5; i++) { sortedIndexes[i] = i; } // 升序排序 Array.Sort(sortedIndexes, (a, b) => int.Parse(studentData[a, 2]) - int.Parse(studentData[b, 2])); // 降序排序 // Array.Sort(sortedIndexes, (a, b) => // int.Parse(studentData[b, 2]) - int.Parse(studentData[a, 2])); ``` 在上面的代码中,我们使用了匿名函数作为比较器,将学号作为排序的依据。根据需要,你可以切换升序或降序排序。 我们遍历排序后的索引,输出成绩单: ```csharp Console.WriteLine("\n升序成绩单:"); for (int i = 0; i < 5; i++) { Console.WriteLine($"学号: {studentData[sortedIndexes[i], 0]}, 姓名: {studentData[sortedIndexes[i], 1]}, 成绩: {studentData[sortedIndexes[i], 2]}"); } Console.WriteLine("\n降序成绩单:"); // 无需重新排序,只需切换输出顺序即可 for (int i = 4; i >= 0; i--) { Console.WriteLine($"学号: {studentData[sortedIndexes[i], 0]}, 姓名: {studentData[sortedIndexes[i], 1]}, 成绩: {studentData[sortedIndexes[i], 2]}"); } ``` 这个程序展示了如何利用C#的二维数组处理和排序学生数据。通过这种方式,我们可以方便地管理大量学生的信息,并按需进行各种操作,如查找、统计等。在实际项目中,可能需要进一步封装这些功能到类或结构体中,以提高代码的可读性和复用性。
- 1
- 粉丝: 27
- 资源: 12
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
- 1
- 2
前往页