You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 12:24:04