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

关于5名学生成绩统计代码的逻辑疑问:初始最高分设为0是否合理?

成绩统计中最高分查找逻辑的疑问解答

这个细节抓得太到位了!我们结合实际的成绩范围要求,一步步理清这个逻辑的合理性和潜在问题:

1. 当成绩范围是你原本预想的1-100时

把highestmark初始值设为0完全没问题:因为所有学生的成绩都大于0,第一次读取的成绩会直接覆盖初始的0,后续每次循环都能正确比较并更新最高分,最终结果不会出错。

2. 当成绩范围是实际要求的0-100时

这个逻辑在绝大多数场景下是正常工作的,但算不上最严谨的写法:

  • 如果所有学生的成绩都是0:代码里highestmark初始为0,每次判断0>0都不成立,最终结果还是0,和实际最高分一致,是正确的。
  • 如果有至少一个学生成绩大于0:后续的成绩会正常替换掉初始的0,结果也完全正确。

但为什么说它不够严谨?因为如果后续需求调整(比如允许负分,虽然当前题目不要求),或者你不小心把初始值设成了一个超出成绩范围的正数,就会直接导致最高分计算错误。

更通用的优化方案

解决这类问题的稳妥做法是用第一个学生的成绩来初始化最高分,而不是固定值:
如果是逐个读取成绩的场景,可以这样写:

// 先读取第一个学生的成绩,直接作为最高分的初始值
int highestmark;
scanf("%d", &highestmark);

// 循环读取剩下的4个学生成绩并比较
for (int i = 1; i < 5; i++) {
    int mark;
    scanf("%d", &mark);
    if (mark > highestmark) {
        highestmark = mark;
    }
}

这种写法完全不依赖成绩的具体范围,不管成绩是0-100还是其他合法区间,都能准确找到最高分,从根源上避免了初始值设置不当的问题。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 08:51:48