#9992. 2026/8/5/WJN笔记(双分支+坐标)
2026/8/5/WJN笔记(双分支+坐标)
课堂复习笔记
一、先判断,再执行
程序通常按下面的顺序写:
int x;
cin>>x; // 先读入数据
if(条件){ // 条件成立才执行大括号里的内容
// 绘图或输出
}
没有输入时,条件中的变量没有确定的值;因此要先 cin,再判断。
二、比较运算和逻辑运算
| 写法 | 意思 |
|---|---|
a==b |
判断 a 和 b 是否相等 |
a!=b |
判断 a 和 b 是否不相等 |
a>b、a<b |
大于、小于 |
a>=b、a<=b |
大于等于、小于等于 |
A && B |
A 和 B 都成立 |
| `A | |
!A |
A 不成立 |
一个等号是“赋值”,两个等号才是“比较”:
a=10; // 把 10 放进 a
if(a==10){ // 判断 a 是否等于 10
}
判断 a 是否在 0 到 100 之间(包括两端):
if(a>=0 && a<=100){
// 在范围内
}
判断分数是否异常:
if(score<0 || score>200){
// 分数异常
}
三、单分支和双分支
只需要处理“条件成立”的情况,用单分支:
if(n==1){
p.text("OK");
}
成立和不成立要分别处理,用 if...else:
if(score>=60){
// 合格图案
}else{
// 不合格图案
}
多个互斥情况可以继续使用 else if:
if(x>y){
// x 较大
}else if(x<y){
// y 较大
}else{
// 两个数相等
}
如果相等时题目要求“不做任何操作”,可以省略最后的绘图内容,但要先想清楚相等情况是否需要处理。
四、画笔常用命令
p.c(2); // 设置颜色
p.size(10); // 设置笔的粗细
p.up(); // 抬笔,移动不画线
p.down(); // 落笔,移动会画线
p.fd(100); // 向当前方向前进
p.bk(100); // 向后移动
p.rt(90); // 右转 90 度
p.lt(90); // 左转 90 度
p.moveTo(x,y); // 抬笔移动到指定坐标
p.lineTo(x,y); // 从当前位置连线到指定坐标
p.text(x); // 在画布上写出数字或文字
获取画笔当前位置:
int x=getX();
int y=getY();
p.text(x);
p.text(y);
moveTo 是“直接移动”,lineTo 是“连线移动”。需要移动但不想留下线时,使用 up() 后再移动。
五、用 for 循环画重复图形
图形由相同动作重复组成时,把重复部分放入循环:
for(int i=0;i<5;i++){
p.fd(200);
p.rt(144);
}
画完一组图形后,要想让下一组位置正确,必须检查三件事:
- 每次循环前画笔方向是否相同;
- 每次循环移动的距离是否正确;
- 需要换位置时是否使用了
up()。
复杂动作可以连续写,也可以分行写,分行更容易检查:
for(int i=0;i<10;i++){
p.r(30,200);
p.fd(120);
p.oo(20);
p.bk(120);
p.rt(90);
p.fd(50);
p.lt(90);
}
六、今天最容易错的地方
- 把
=写进判断条件;判断相等必须使用==。 - 把两个条件写成
a>b || a<b,这表示“不相等”;若要比较大小,使用if...else if...else。 - 把
a>b写成a>b||b>a后只画一个图,导致另一种情况没有处理。 - 颜色是画笔设置,题目要求的颜色要写对,不能只改图形大小。
if后的大括号决定哪些命令受条件控制;不需要条件控制的命令要放在大括号外。- 循环次数是
i<次数,例如重复 5 次写i=0;i<5;i++。 - 画笔换位置时忘记抬笔,导致多出一条连接线。
- 输出文字时要严格按照题目要求,大小写也要一致。
七、复习时的检查顺序
- 输入变量是否都已经
cin? - 判断符号是
==还是=? - 范围判断是否需要
&&,两种异常情况是否需要||? - 是否遗漏了相等、边界值等情况?
- 图形重复部分是否放进
for?循环中的转向和移动能否回到正确位置? - 每条命令的颜色、坐标、长度和粗细是否与题目一致?