第八期 回顾 - 运算符 (算术与赋值)
- 知识回顾: CAPL 的算术运算符(
+,-,*,/,%)与 C 语言的主要区别是什么?(提示:考虑指针相关的运算符) - 知识回顾: 表达式
15 / 4在 CAPL 中的计算结果是多少?为什么? - 逻辑推理: 如果
float f = 10.0; int i = 4;,那么表达式f / i的结果的数据类型是什么?值是多少? - 知识回顾: 如果想让两个整数相除得到带小数的结果,应该怎么做?(写出代码示例)
- 知识回顾: 取余运算符
%能否用于float或double类型的操作数? - 知识回顾: 复合赋值运算符
a *= 3;等价于哪个表达式? - 知识回顾:
++运算符的作用是什么?前置 (++a) 和后置 (a++) 在单独作为语句使用时(如a++;)效果有区别吗? - 逻辑推理:
int x = 5; int y = x++;执行后,x和y的值分别是多少? - 逻辑推理:
int x = 5; int y = ++x;执行后,x和y的值分别是多少? - 逻辑推理:
int a = 10; a %= 4;执行后,a的值是多少?
第九期 (capl学习-09.txt) 回顾 - 运算符 (关系与逻辑)
- 知识回顾: 关系运算符(如
>,==,<=)运算结果的数据类型是什么?用什么值表示“真”和“假”? - 知识回顾: 写出“不等于”的关系运算符和“逻辑与”的逻辑运算符。
- 逻辑推理: 表达式
(5 > 3) && (10 == 10)的计算结果是 0 还是 1? - 逻辑推理: 表达式
(5 < 3) || (10 != 10)的计算结果是 0 还是 1? - 逻辑推理: 表达式
!(5 == 3)的计算结果是 0 还是 1? - 知识回顾: 逻辑非运算符
!的优先级与其他逻辑运算符(&&,||)和关系运算符相比,是高还是低?在不确定时,推荐使用什么来明确运算顺序? - 逻辑推理: 假设
int age = 20; int salary = 5000;,表达式age >= 18 && salary > 6000的结果是 0 还是 1? - 逻辑推理: 假设
int score = 75;,表达式score < 60 || score >= 90的结果是 0 还是 1? - 知识回顾: 教程中提到的“短路求值”(虽然未明确用此术语)是指
&&和||运算符的什么行为特性?(简述即可) - 知识回顾: 本期教程原计划讲解哪三类运算符,但实际只详细讲解了哪两类?
第十期 回顾 - 运算符 (位运算)
- 知识回顾: 位运算符主要操作数的数据的哪种表示形式?它能用于浮点数吗?
- 知识回顾:
&和|分别代表哪两种位运算? - 逻辑推理:
9 & 5(即1001 & 0101)的按位与运算结果的十进制值是多少? - 逻辑推理:
9 | 5(即1001 | 0101)的按位或运算结果的十进制值是多少? - 知识回顾:
^代表哪种位运算?其运算规则是什么? - 知识回顾: 按位取反运算符
~如何操作?对整数 9 进行按位取反 (~9),在教程中(基于 16 位int和补码)得到的结果是多少? - 知识回顾: 左移运算符
<<如何操作?右侧空出的位用什么填充?左移 n 位大致相当于乘以多少? - 逻辑推理:
9 << 2的运算结果是多少? - 知识回顾: 右移运算符
>>如何操作?对于正数和负数,左侧空出的位填充规则有何不同(这叫什么移位)? - 逻辑推理: 正整数
9 >> 2的结果是多少?负整数-10 >> 2(基于教程中的 16 位补码-10为...1111 0110) 的结果是多少?
第十一期 回顾 - 分支结构 (if)
- 知识回顾: CAPL 中
if语句的条件判断遵循什么规则?(非零...) - 知识回顾:
if语句的三种基本形式是什么?请简述其结构。 - 逻辑推理: 在
if (score > 90) { ... } else if (score > 80) { ... }结构中,如果score的值为 95,会执行哪个代码块?else if部分的条件会被判断吗?为什么? - 知识回顾: 在
if或else后面,如果执行体只有一条语句,是否可以省略花括号{}?教程是否推荐省略? - 逻辑推理:
if (0.0) { write("A"); } else { write("B"); }会输出 "A" 还是 "B"? - 逻辑推理:
if (' ') { write("Space"); }会执行write语句吗?为什么?(' '代表空格字符) - 知识回顾: 三元运算符的语法结构是怎样的?
- 逻辑推理: 语句
int maxVal = (a > b) ? a : b;的作用是什么? - 逻辑推理:
int grade = 75; char level = (grade >= 60) ? 'P' : 'F';执行后,level的值是多少? - 逻辑推理: 对比
if-else if-else和switch(下一讲内容),if结构在处理哪类条件时更具优势?(例如范围判断、逻辑组合等)
第十二期 回顾 - 分支结构 (switch)
- 知识回顾:
switch语句主要用于判断一个表达式与多个什么类型的值进行相等比较? - 知识回顾:
switch语句中,case后面跟的值有什么要求?(常量?变量?类型?) - 知识回顾:
break语句在case分支中的主要作用是什么?如果省略break会发生什么? - 知识回顾:
default分支的作用是什么?它在switch语句中是必须的吗? - 逻辑推理:
int option = 2; switch(option) { case 1: write("A"); case 2: write("B"); case 3: write("C"); break; default: write("D"); }这段代码会输出什么? - 逻辑推理: 如何修改上一题的代码,使得当
option为 2 时,只输出 "B"? - 知识回顾: 如何利用
switch的贯穿特性来处理多个case值对应相同操作的情况?(写出简要结构) - 逻辑推理:
float value = 1.0; switch(value) { case 1.0: write("One"); break; }这段代码在 CAPL 中是否合法?为什么? - 逻辑推理:
char key = 'A'; switch(key) { case 'A': write("Start"); break; case 'S': write("Stop"); break; }这段代码是否合法? - 逻辑推理: 考虑一个场景:根据错误码(整数)显示不同的错误信息。使用
if-else if-else和switch哪种结构可能更清晰易读?
第十三期 回顾 - 循环结构 (while, do-while)
- 知识回顾:
while循环和do-while循环在执行逻辑上的主要区别是什么?哪个循环至少会执行一次循环体? - 知识回顾:
while (condition) { ... }语句中,循环体执行的条件是什么? - 逻辑推理:
int count = 5; while (count > 5) { write("Looping"); count--; }这段代码会输出几次 "Looping"? - 逻辑推理:
int count = 5; do { write("Looping"); count--; } while (count > 5);这段代码会输出几次 "Looping"? - 知识回顾: 在循环体内部使用
break关键字会产生什么效果? - 知识回顾: 在循环体内部使用
continue关键字会产生什么效果? - 逻辑推理: 在
while(1)这样的循环中(条件永远为真),必须使用什么语句才能正常退出循环? - 逻辑推理:
int i = 0; while (i < 5) { i++; if (i == 3) continue; write("%d", i); }这段代码会输出哪些数字? - 逻辑推理:
int i = 0; while (i < 5) { i++; if (i == 3) break; write("%d", i); }这段代码会输出哪些数字? - 知识回顾: 为什么在循环体内部通常需要有能够改变循环条件的语句?是为了避免什么问题?
第十四期 回顾 - 循环结构 (for)
- 知识回顾:
for循环语句的基本语法结构包含哪三个部分?用分号分隔。 - 知识回顾: 在
for (A; B; C) { D; }结构中,A、B、C、D 四部分代码的执行顺序大致是怎样的(考虑循环过程)?哪部分只执行一次? - 逻辑推理:
for (int i = 0; i < 3; i++) { write("Hi"); }这段代码会输出几次 "Hi"? - 知识回顾:
for循环括号内的三个部分(初始化、条件、更新)是否都可以省略?如果省略条件部分,意味着什么? - 逻辑推理:
for (;;)是什么循环?如何退出这种循环? - 知识回顾:
break和continue关键字能否用在for循环中?它们的作用与在while循环中相同吗? - 知识回顾: CAPL 的
for循环与 C 语言的for循环在语法上有一个重要的区别,涉及到哪个运算符的使用? - 逻辑推理: 如果想在 CAPL 的
for循环的更新部分同时对变量i加 1 和变量j减 1,应该如何书写代码(考虑到 CAPL 的限制)? - 逻辑推理: 对于需要明确循环次数(例如从 1 循环到 100)的情况,使用
for循环和while循环哪个通常更简洁? - 逻辑推理: 在判断质数的例子中,使用
for (i = 2; i < number; i++)比起上一期使用while循环,在代码结构上有什么优势?