使用C#循环查找学生最高成绩的代码调试问题求助
问题分析
你的代码存在以下几处明显问题,导致无法实现需求:
- 缺少
studentname、grade两个变量的声明,代码无法正常编译 - 仅存储了最高分的数值,没有同步存储取得最高分的学生姓名和学号,最终输出的只会是最后一个录入学生的信息,和最高分无关
- 输出语句的占位符使用错误,
{3}超出了传入参数的索引范围,且无用变量number被传入输出参数,导致运行报错 - 最高分初始值设为0,若所有学生成绩均低于0会出现判断错误(如果作业限定成绩为非负可以忽略,建议优化初始值)
修正后的可运行代码
static void Main(string[] args) { int counter = 0; int bestGrade = int.MinValue; // 优化初始值,覆盖所有可能的成绩情况 int bestStudentId = 0; string bestStudentName = string.Empty; for (counter = 0; counter < 10; counter++) { Console.WriteLine("请输入学生姓名:"); string studentName = Console.ReadLine(); // 新增变量声明 Console.WriteLine("请输入学生学号:"); int studentId = Convert.ToInt32(Console.ReadLine()); Console.WriteLine("请输入该学生的FoP预科成绩:"); int grade = Convert.ToInt32(Console.ReadLine()); if (grade > bestGrade) { // 同步更新最高分和对应的学生信息 bestGrade = grade; bestStudentId = studentId; bestStudentName = studentName; } } Console.WriteLine("{0},学号:{1},取得了最高分{2}", bestStudentName, bestStudentId, bestGrade); }
补充说明
如果需要适配不同班级人数,只需要把for循环的终止条件10改成对应的学生总数即可。如果需要处理学号输入非数字、成绩输入非数字的异常情况,可以额外加int.TryParse做输入校验,避免程序崩溃。
内容的提问来源于stack exchange,提问作者dan peralta
相关产品推荐
相关产品推荐

