C Day 7

把边界包含进条件,
让成绩判断更准确

今天学习 >=<=,理解“等于边界”也是条件的一部分,并用有顺序的多分支判断处理合法成绩、及格线和非法输入。

为什么只写大于还不够

如果及格线是 60 分,条件 score > 60 不会包含刚好 60 分。要让边界值也成立,需要写成 score >= 60

>=:大于或等于
<=:小于或等于

第一次边界测试中,输入 60 会输出“及格”,输入 59 会输出“未及格”,说明 >= 正确包含了及格线本身。

独立判断会分别执行

练习过程中曾使用两组独立的 if / else:第一组判断是否达到 60 分,第二组判断是否超过 100 分。输入 101 时,两组判断会分别输出“及格”和“成绩超过100分”。

这不是程序矛盾,而是因为两组判断互不相属,各自都会执行。要让程序只选择一种最终结果,需要把条件整理为同一组 if / else if / else

按顺序划分成绩范围

day7.c
if (score < 0)
{
    printf("成绩不能小于0分\n");
}
else if (score <= 59)
{
    printf("未及格\n");
}
else if (score <= 100)
{
    printf("及格\n");
}
else
{
    printf("成绩不能大于100分\n");
}

第三个条件为什么只写上界

程序能到达 score <= 100,说明前面的 score <= 59 已经不成立。因此当前成绩自然至少是 60,只需要继续检查它是否没有超过 100。

这让我进一步理解:多分支判断不仅要看当前条件,还要记住前面的条件已经排除了哪些值。

六个边界值全部验证

-1:成绩不能小于0分
0:未及格
59:未及格
60:及格
100:及格
101:成绩不能大于100分

六次生成和运行都成功,退出代码均为 0。这些输入覆盖了下界外、合法下界、及格线两侧、合法上界和上界外。

今天真正掌握的内容

  • 理解 >=<= 都包含等于边界
  • 能准确区分“大于等于”与“小于等于”的方向
  • 理解两组独立判断会分别执行
  • 理解一组多分支判断最多只命中一个分支
  • 能按从小到大的顺序划分成绩范围
  • 会主动测试边界值和边界外的输入

下一次是 C 语言第 8 天,将进行第一次 C 语言阶段复习与检测,只复习和运用前七天已经学过的内容。