#9992. 2026/8/5/WJN笔记(双分支+坐标)

2026/8/5/WJN笔记(双分支+坐标)

课堂复习笔记

一、先判断,再执行

程序通常按下面的顺序写:

int x;
cin>>x;       // 先读入数据
if(条件){     // 条件成立才执行大括号里的内容
	// 绘图或输出
}

没有输入时,条件中的变量没有确定的值;因此要先 cin,再判断。

二、比较运算和逻辑运算

写法 意思
a==b 判断 ab 是否相等
a!=b 判断 ab 是否不相等
a>ba<b 大于、小于
a>=ba<=b 大于等于、小于等于
A && B A 和 B 都成立
`A
!A A 不成立

一个等号是“赋值”,两个等号才是“比较”:

a=10;        // 把 10 放进 a
if(a==10){   // 判断 a 是否等于 10
}

判断 a 是否在 0100 之间(包括两端):

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);
}

画完一组图形后,要想让下一组位置正确,必须检查三件事:

  1. 每次循环前画笔方向是否相同;
  2. 每次循环移动的距离是否正确;
  3. 需要换位置时是否使用了 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++
  • 画笔换位置时忘记抬笔,导致多出一条连接线。
  • 输出文字时要严格按照题目要求,大小写也要一致。

七、复习时的检查顺序

  1. 输入变量是否都已经 cin
  2. 判断符号是 == 还是 =
  3. 范围判断是否需要 &&,两种异常情况是否需要 ||
  4. 是否遗漏了相等、边界值等情况?
  5. 图形重复部分是否放进 for?循环中的转向和移动能否回到正确位置?
  6. 每条命令的颜色、坐标、长度和粗细是否与题目一致?