C Day 16 · 93/100

把七天的知识放进检测,
用 93 分验证真实理解

今天复习 C Day 9—15,完成基础概念、输出预测、找错修改和综合编程四部分检测,并用多条实际路线验证“整数筛选累计菜单”。

第二次 C 语言阶段检测:93/100

本次检测不引入新语法,范围包括逻辑运算、短路判断、switch、三种循环、复合赋值、breakcontinue 和输入控制菜单。

  • 基础概念:20/20
  • 执行过程与输出预测:19/20
  • 找错与修改:21/25
  • 综合编程:33/35

基础概念全部答对

能够准确说明 && 的同时成立、短路判断如何避免除零、switch 的 case 穿透、循环中 breakcontinue 的区别,以及 whiledo ... while 的首次执行差异。

输出预测漏掉了循环外的一行

四道预测题正确追踪了短路判断、case 穿透、跳过与提前结束,以及 do ... while 的变量变化。唯一失分是在正确写出循环内部的 1、3、4 后,漏写循环外仍会执行的“结束”。

这次失分提醒我:预测不能只盯着循环体,循环结束后还要继续向下阅读程序。

找错时要先检查更新方向

找错部分正确修复了成绩范围条件、whilecontinue 前的变量更新、do ... while 的末尾分号和 switch 的缺失 break

主要失分来自错误的 for:目标是从 1 输出到 5,更新部分却写成 number--。虽然发现它会持续循环,但没有准确指出应改成 number++,还一度混淆了赋值 = 与相等判断 ==

综合编程:整数筛选累计菜单

综合程序使用 do ... while 重复显示菜单,使用 switch 处理开始、退出与无效选项,并验证最大值必须处于 1—20。

review_test_c2.c
if (maximum >= 1 && maximum <= 20)
{
    int sum = 0;

    for (int number = 1; number <= maximum; number++)
    {
        if (number == 3)
        {
            continue;
        }

        if (number == 10)
        {
            break;
        }

        sum += number;
    }

    printf("总和是:%d\n", sum);
}
else
{
    printf("最大值必须在 1 到 20\n");
}

循环从 1 到用户输入的最大值,跳过 3,并在遇到 10 时停止,所以 3 和 10 都不会加入总和。初次提交漏掉了非法最大值的 else 提示,检查后补全,因此综合编程扣 2 分。

五条路线全部通过

  • 最大值 8:累计得到 33
  • 最大值 15:在 10 前停止,累计得到 42
  • 最大值 0:提示“最大值必须在 1 到 20”
  • 菜单选项 7:提示“无效选项”
  • 菜单选项 0:正确退出

五条路线在一次连续运行中完成,结果全部符合预测,程序正常退出,代码为 0。

从 92 分到 93 分

第一次 C 语言阶段检测是 92 分,本次提高 1 分;其中基础概念从 18/20 提高到 20/20。接下来需要继续训练完整追踪循环外输出,并优先检查循环变量的更新方向。

今天真正完成的内容

  • 系统复习 C Day 9—15 的逻辑、分支与循环
  • 在基础概念部分取得满分
  • 能够独立组合菜单、输入、范围判断和累计循环
  • 完成正常、非法范围、无效菜单与退出边界测试
  • 明确下一阶段需要加强的两个具体问题

下一步将进入 C 语言一维整数数组,学习数组声明、初始化、下标与使用 for 遍历数组。