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

C#代码修复:如何实现无20分成绩时的提示输出

修复无人得20分的判断逻辑问题

我来帮你排查并修复这个问题,先梳理下现有代码里导致判断失效的核心问题:

  • 没有定义并初始化is20变量,也没在遍历成绩时更新它的状态
  • Console.Write的格式字符串不完整,会直接编译报错
  • 缺少遍历结束后的判断逻辑和行数输出步骤

下面是修复后的完整代码,我会一步步解释关键修改点:

using System;
namespace ConsoleApp1 {
    class Program {
        static void Main(string[] args) {
            double[,] points = new double[50, 5];
            Random r = new Random();
            // 初始化is20为false,默认假设没人拿到20分
            bool is20 = false;
            int totalRows = points.GetLength(0); // 灵活获取总行数,避免硬编码

            for (int k = 0; k < totalRows; k++) {
                for (int j = 0; j < 5; j++) {
                    points[k, j] = r.NextDouble() * 5 + 15.5;
                    if (points[k, j] > 20) points[k, j] = 20;
                    // 检测到20分就标记状态
                    if (points[k, j] == 20) {
                        is20 = true;
                    }
                    // 修复格式化输出,保留两位小数并优化排版
                    Console.Write("{0:F2} ", points[k, j]);
                }
                Console.WriteLine(); // 每行结束换行,让输出更清晰
            }

            // 遍历完成后做最终判断
            if (!is20) {
                Console.WriteLine("\nno one got 20 points");
                Console.WriteLine($"总行数:{totalRows}");
            }
        }
    }
}

关键修改说明:

  1. 初始化状态变量:一开始把is20设为false,只要遍历中发现任何一个20分,就将其改为true,确保最后判断的是所有成绩的整体状态
  2. 修复输出格式:原来的Console.Write("{0:...");是不完整的语法,改成"{0:F2} "可以规范输出两位小数,同时添加换行让每行成绩独立显示
  3. 灵活获取行数:用points.GetLength(0)获取二维数组的行数,比直接写50更灵活,后续修改数组大小无需同步调整这里
  4. 后置判断逻辑:所有成绩生成完成后再检查is20状态,此时的状态是遍历全部数据后的最终结果,判断逻辑自然会生效

另外补充:你生成成绩的逻辑是对的——r.NextDouble() *5 +15.5的范围是[15.5,20.5),截断后确实会出现20分的情况,这个部分不需要改动。

内容的提问来源于stack exchange,提问作者user9748546

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 04:08:11