第一次 C 语言
阶段复习与检测
今天没有学习新语法,而是复习 C 语言前七天的输入输出、整数运算、条件判断和边界处理。四部分检测取得 92 分,综合编程获得满分。
检测范围与成绩
检测由基础概念、执行过程与输出预测、找错修改和综合编程四部分组成,只使用此前实际学过的语法。
基础概念 18 / 20 · 输出预测 19 / 20 · 找错修改 20 / 25 · 综合编程 35 / 35 · 总分 92 / 100
基础概念中的表达细节
能够说明 scanf_s() 会把键盘输入写入变量,但最初没有完整说出 &number 提供的是变量地址,也就是输入数据应该写入的位置。
review
int number = 0;
scanf_s("%d", &number); /* &number 提供变量的地址 */同时再次确认:除法和取余的第二个数都不能为 0,因此两种运算都必须放在除零判断之后。
else 不会再次检查条件
输出预测题中正确判断输入 0 最终会进入 else,但一度把它描述成再次检查“小于 0”。订正后确认:else 不带条件,只有前面的条件都不成立时才直接执行。
范围条件必须注意顺序
找错题中,若先写 score <= 100,那么 59 等较小数值会提前进入这个分支,后面的 score <= 59 就无法执行。范围判断应先检查较小的上界,再检查较大的上界。
review
if (score <= 59)
{
printf("未及格\n");
}
else if (score <= 100)
{
printf("及格\n");
}独立完成安全整数分析器
综合编程要求输入两个整数,始终输出和、差、积;第二个数非零时继续计算商和余数,并判断商是正数、负数还是零;第二个数为零时跳过危险计算并输出提示。
review_test_c1.c
if (second == 0)
{
printf("除数不能为0");
}
else
{
int quotient = first / second;
int remainder = first % second;
printf("两数之商是%d\n", quotient);
printf("余数是%d\n", remainder);
if (quotient > 0)
{
printf("商是正数");
}
else if (quotient < 0)
{
printf("商是负数");
}
else
{
printf("商是0");
}
}四条关键路线全部通过
9, 4:商为 2,余数为 1,商是正数-9, 4:商为 -2,余数为 -1,商是负数0, 4:商和余数均为 0,商是 09, 0:输出和、差、积后提示“除数不能为0”
四次运行都正常结束,退出代码为 0。除数为零时没有执行除法和取余,综合编程获得 35 分满分。
这次检测后的结论
- 已经能独立使用变量、输入、输出和整数运算
- 能在运算前保护除零情况
- 能用多分支判断正数、负数和零
- 能够预测变量重新赋值后的真实结果
- 综合程序的数据流和四条测试路线全部正确
- 仍需继续练习地址、无条件的
else和范围条件顺序的精确表达
下一步将学习逻辑与运算符 &&,让两个条件同时成立时才进入指定分支。